summaryrefslogtreecommitdiffstats
path: root/extra/wolfssl/wolfssl/IDE/MCUEXPRESSO/RT1170/fsl_caam_c.patch
diff options
context:
space:
mode:
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.patch44
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);
+ }