diff options
Diffstat (limited to 'extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch')
-rw-r--r-- | extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch b/extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch index 50590a0d..f345d098 100644 --- a/extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch +++ b/extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch @@ -1,6 +1,6 @@ ---- fsl_caam-orig.c 2022-10-21 15:50:35.709951000 -0700 -+++ fsl_caam.c 2022-12-28 06:30:34.788316189 -0800 -@@ -7872,3 +7872,462 @@ +--- fsl_caam.c 2023-01-12 23:39:04.000000000 -0800 ++++ fsl_caam-expanded.c 2023-06-23 00:18:14.395128903 -0700 +@@ -7872,3 +7872,476 @@ } return status; } @@ -117,7 +117,7 @@ + /* initialize descriptor from template */ + (void)caam_memcpy(descriptor, templateKeyPairECC, sizeof(templateKeyPairECC)); + -+ /* add descriptor lenght in bytes to HEADER descriptor command */ ++ /* add descriptor length in bytes to HEADER descriptor command */ + DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize); + + DESC_SET_ADDR(descriptor[1], (CAAM_ECDSA_KEYGEN_PD | keyType)); @@ -128,7 +128,9 @@ + descriptor[4] |= enc; + + /* schedule the job */ -+ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ do { ++ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ } while (status == kStatus_CAAM_Again); + if (status == kStatus_Success) { + status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking); + } @@ -198,7 +200,7 @@ + /* initialize descriptor from template */ + (void)caam_memcpy(descriptor, templateSignECC, sizeof(templateSignECC)); + -+ /* add descriptor lenght in bytes to HEADER descriptor command */ ++ /* add descriptor length in bytes to HEADER descriptor command */ + DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize); + + DESC_SET_ADDR(descriptor[1], (CAAM_ECDSA_PD | keyType)); @@ -212,7 +214,9 @@ + descriptor[7] |= enc; + + /* schedule the job */ -+ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ do { ++ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ } while (status == kStatus_CAAM_Again); + if (status == kStatus_Success) { + status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking); + } @@ -271,7 +275,7 @@ + /* initialize descriptor from template */ + (void)caam_memcpy(descriptor, templateVerifyECC, sizeof(templateVerifyECC)); + -+ /* add descriptor lenght in bytes to HEADER descriptor command */ ++ /* add descriptor length in bytes to HEADER descriptor command */ + DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize); + + DESC_SET_ADDR(descriptor[1], (CAAM_ECDSA_PD | keyType)); @@ -283,7 +287,9 @@ + DESC_ADD_LEN(descriptor[7], sizeHash); + + /* schedule the job */ -+ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ do { ++ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ } while (status == kStatus_CAAM_Again); + if (status == kStatus_Success) { + status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking); + } @@ -338,7 +344,7 @@ + /* initialize descriptor from template */ + (void)caam_memcpy(descriptor, templateAgreeECC, sizeof(templateAgreeECC)); + -+ /* add descriptor lenght in bytes to HEADER descriptor command */ ++ /* add descriptor length in bytes to HEADER descriptor command */ + DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize); + + DESC_SET_ADDR(descriptor[1], (CAAM_ECDSA_KEYGEN_PD | keyType)); @@ -350,7 +356,9 @@ + descriptor[5] |= enc; + + /* schedule the job */ -+ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ do { ++ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ } while (status == kStatus_CAAM_Again); + if (status == kStatus_Success) { + status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking); + } @@ -367,7 +375,7 @@ +/* Handle BLOB create and open */ +static const uint32_t templateBlob[] = { + /* 00 */ 0xB0800000u, /* HEADER */ -+ /* 01 */ 0x14400000u, /* class */ ++ /* 01 */ 0x04000000u, /* class */ + /* 02 */ 0x00000000u, /* key mod */ + /* 03 */ 0xF0000000u, /* SEQ input size */ + /* 04 */ 0x00000000u, /* input */ @@ -425,6 +433,10 @@ + return status; + } + ++ if (keyModSz != CAAM_SM_KEYMODSZ && keyModSz != CAAM_KEYMODSZ) { ++ return status; ++ } ++ + if (dir == CAAM_DECAP_BLOB && + (sizeOut > sizeIn - CAAM_PADDING_SIZE_BLOB)) { + return status; @@ -433,9 +445,9 @@ + /* initialize descriptor from template */ + (void)caam_memcpy(descriptor, templateBlob, sizeof(templateBlob)); + -+ /* add descriptor lenght in bytes to HEADER descriptor command */ ++ /* add descriptor length in bytes to HEADER descriptor command */ + DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize); -+ descriptor[1] |= color; /* add color of blob */ ++ descriptor[1] |= keyModSz; + DESC_SET_ADDR(descriptor[2], keyMod); + DESC_ADD_LEN(descriptor[3], sizeIn); + DESC_SET_ADDR(descriptor[4], in); @@ -450,7 +462,9 @@ + } + + /* schedule the job */ -+ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ do { ++ status = caam_in_job_ring_add(base, handle->jobRing, &descriptor[0]); ++ } while (status == kStatus_CAAM_Again); + if (status == kStatus_Success) { + status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking); + } |