mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
fix for keymod with rt1170 blobs
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
--- fsl_caam-orig.c 2022-10-21 15:50:35.709951000 -0700
|
--- fsl_caam.c 2023-01-12 23:39:04.000000000 -0800
|
||||||
+++ fsl_caam.c 2022-12-28 06:30:34.788316189 -0800
|
+++ fsl_caam-expanded.c 2023-06-23 00:18:14.395128903 -0700
|
||||||
@@ -7872,3 +7872,462 @@
|
@@ -7872,3 +7872,476 @@
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -128,7 +128,9 @@
|
|||||||
+ descriptor[4] |= enc;
|
+ descriptor[4] |= enc;
|
||||||
+
|
+
|
||||||
+ /* schedule the job */
|
+ /* 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) {
|
+ if (status == kStatus_Success) {
|
||||||
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
||||||
+ }
|
+ }
|
||||||
@ -212,7 +214,9 @@
|
|||||||
+ descriptor[7] |= enc;
|
+ descriptor[7] |= enc;
|
||||||
+
|
+
|
||||||
+ /* schedule the job */
|
+ /* 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) {
|
+ if (status == kStatus_Success) {
|
||||||
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
||||||
+ }
|
+ }
|
||||||
@ -283,7 +287,9 @@
|
|||||||
+ DESC_ADD_LEN(descriptor[7], sizeHash);
|
+ DESC_ADD_LEN(descriptor[7], sizeHash);
|
||||||
+
|
+
|
||||||
+ /* schedule the job */
|
+ /* 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) {
|
+ if (status == kStatus_Success) {
|
||||||
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
||||||
+ }
|
+ }
|
||||||
@ -350,7 +356,9 @@
|
|||||||
+ descriptor[5] |= enc;
|
+ descriptor[5] |= enc;
|
||||||
+
|
+
|
||||||
+ /* schedule the job */
|
+ /* 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) {
|
+ if (status == kStatus_Success) {
|
||||||
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
||||||
+ }
|
+ }
|
||||||
@ -367,7 +375,7 @@
|
|||||||
+/* Handle BLOB create and open */
|
+/* Handle BLOB create and open */
|
||||||
+static const uint32_t templateBlob[] = {
|
+static const uint32_t templateBlob[] = {
|
||||||
+ /* 00 */ 0xB0800000u, /* HEADER */
|
+ /* 00 */ 0xB0800000u, /* HEADER */
|
||||||
+ /* 01 */ 0x14400000u, /* class */
|
+ /* 01 */ 0x04000000u, /* class */
|
||||||
+ /* 02 */ 0x00000000u, /* key mod */
|
+ /* 02 */ 0x00000000u, /* key mod */
|
||||||
+ /* 03 */ 0xF0000000u, /* SEQ input size */
|
+ /* 03 */ 0xF0000000u, /* SEQ input size */
|
||||||
+ /* 04 */ 0x00000000u, /* input */
|
+ /* 04 */ 0x00000000u, /* input */
|
||||||
@ -425,6 +433,10 @@
|
|||||||
+ return status;
|
+ return status;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ if (keyModSz != CAAM_SM_KEYMODSZ && keyModSz != CAAM_KEYMODSZ) {
|
||||||
|
+ return status;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ if (dir == CAAM_DECAP_BLOB &&
|
+ if (dir == CAAM_DECAP_BLOB &&
|
||||||
+ (sizeOut > sizeIn - CAAM_PADDING_SIZE_BLOB)) {
|
+ (sizeOut > sizeIn - CAAM_PADDING_SIZE_BLOB)) {
|
||||||
+ return status;
|
+ return status;
|
||||||
@ -435,7 +447,7 @@
|
|||||||
+
|
+
|
||||||
+ /* add descriptor lenght in bytes to HEADER descriptor command */
|
+ /* add descriptor lenght in bytes to HEADER descriptor command */
|
||||||
+ DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize);
|
+ DESC_HEADER_ADD_DESCLEN(descriptor[0], descriptorSize);
|
||||||
+ descriptor[1] |= color; /* add color of blob */
|
+ descriptor[1] |= keyModSz;
|
||||||
+ DESC_SET_ADDR(descriptor[2], keyMod);
|
+ DESC_SET_ADDR(descriptor[2], keyMod);
|
||||||
+ DESC_ADD_LEN(descriptor[3], sizeIn);
|
+ DESC_ADD_LEN(descriptor[3], sizeIn);
|
||||||
+ DESC_SET_ADDR(descriptor[4], in);
|
+ DESC_SET_ADDR(descriptor[4], in);
|
||||||
@ -450,7 +462,9 @@
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /* schedule the job */
|
+ /* 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) {
|
+ if (status == kStatus_Success) {
|
||||||
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
+ status = CAAM_Wait(base, handle, descriptor, kCAAM_Blocking);
|
||||||
+ }
|
+ }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- fsl_caam-orig.h 2022-10-21 15:50:35.745560000 -0700
|
--- fsl_caam.h 2023-06-23 00:08:46.491699533 -0700
|
||||||
+++ fsl_caam.h 2022-12-28 08:10:29.413415216 -0800
|
+++ fsl_caam-expanded.h 2023-06-23 00:10:22.702730462 -0700
|
||||||
@@ -3038,6 +3038,162 @@
|
@@ -3038,6 +3038,164 @@
|
||||||
*@}
|
*@}
|
||||||
*/ /* end of caam_driver_pkha */
|
*/ /* end of caam_driver_pkha */
|
||||||
|
|
||||||
@ -127,10 +127,12 @@
|
|||||||
+
|
+
|
||||||
+/* define for application to check for ECC CAAM additions */
|
+/* define for application to check for ECC CAAM additions */
|
||||||
+#define CAAM_BLOB_EXPANSION
|
+#define CAAM_BLOB_EXPANSION
|
||||||
+#define CAAM_RED_BLOB 0x00000C08
|
+#define CAAM_RED_BLOB 1
|
||||||
+#define CAAM_BLACK_BLOB 0x00000010
|
+#define CAAM_BLACK_BLOB 2
|
||||||
+#define CAAM_ENCAP_BLOB 0x07000000
|
+#define CAAM_ENCAP_BLOB 0x07000000
|
||||||
+#define CAAM_DECAP_BLOB 0x06000000
|
+#define CAAM_DECAP_BLOB 0x06000000
|
||||||
|
+#define CAAM_SM_KEYMODSZ 8
|
||||||
|
+#define CAAM_KEYMODSZ 16
|
||||||
+#define CAAM_PADDING_SIZE_BLOB 48
|
+#define CAAM_PADDING_SIZE_BLOB 48
|
||||||
+
|
+
|
||||||
+/*!
|
+/*!
|
||||||
|
@ -838,7 +838,7 @@ int SynchronousSendRequest(int type, unsigned int args[4], CAAM_BUFFER *buf,
|
|||||||
buf[1].Length, (byte*)buf[2].TheAddress,
|
buf[1].Length, (byte*)buf[2].TheAddress,
|
||||||
buf[2].Length, (byte*)buf[0].TheAddress,
|
buf[2].Length, (byte*)buf[0].TheAddress,
|
||||||
buf[0].Length, CAAM_ENCAP_BLOB,
|
buf[0].Length, CAAM_ENCAP_BLOB,
|
||||||
(args[0] = 0)? CAAM_RED_BLOB : CAAM_BLACK_BLOB)
|
(args[0] == 0)? CAAM_RED_BLOB : CAAM_BLACK_BLOB)
|
||||||
!= kStatus_Success) {
|
!= kStatus_Success) {
|
||||||
ret = WC_HW_E;
|
ret = WC_HW_E;
|
||||||
}
|
}
|
||||||
@ -849,7 +849,7 @@ int SynchronousSendRequest(int type, unsigned int args[4], CAAM_BUFFER *buf,
|
|||||||
(byte*)buf[2].TheAddress, buf[2].Length,
|
(byte*)buf[2].TheAddress, buf[2].Length,
|
||||||
(byte*)buf[0].TheAddress, buf[0].Length,
|
(byte*)buf[0].TheAddress, buf[0].Length,
|
||||||
CAAM_DECAP_BLOB,
|
CAAM_DECAP_BLOB,
|
||||||
(args[0] = 0)? CAAM_RED_BLOB : CAAM_BLACK_BLOB)
|
(args[0] == 0)? CAAM_RED_BLOB : CAAM_BLACK_BLOB)
|
||||||
!= kStatus_Success) {
|
!= kStatus_Success) {
|
||||||
ret = WC_HW_E;
|
ret = WC_HW_E;
|
||||||
}
|
}
|
||||||
|
@ -455,5 +455,6 @@ struct DESCSTRUCT {
|
|||||||
#define MAX_ECDSA_SIGN_ADDR 8
|
#define MAX_ECDSA_SIGN_ADDR 8
|
||||||
#define BLACK_KEY_MAC_SZ 16
|
#define BLACK_KEY_MAC_SZ 16
|
||||||
#define BLACK_BLOB_KEYMOD_SZ 16
|
#define BLACK_BLOB_KEYMOD_SZ 16
|
||||||
#define RED_BLOB_KEYMOD_SZ 8
|
#define RED_BLOB_KEYMOD_SZ 16
|
||||||
|
#define SM_BLOB_KEYMOD_SZ 8
|
||||||
#endif /* CAAM_DRIVER_H */
|
#endif /* CAAM_DRIVER_H */
|
||||||
|
@ -91,8 +91,9 @@ WOLFSSL_API int wc_caamCoverKey(byte* in, word32 inSz, byte* out, word32* outSz,
|
|||||||
#define WC_CAAM_MAC_SZ 16
|
#define WC_CAAM_MAC_SZ 16
|
||||||
#define WC_CAAM_BLOB_RED 1
|
#define WC_CAAM_BLOB_RED 1
|
||||||
#define WC_CAAM_BLOB_BLACK 2
|
#define WC_CAAM_BLOB_BLACK 2
|
||||||
#define WC_CAAM_RED_KEYMOD_SZ 8
|
#define WC_CAAM_RED_KEYMOD_SZ 16
|
||||||
#define WC_CAAM_BLACK_KEYMOD_SZ 16
|
#define WC_CAAM_BLACK_KEYMOD_SZ 16
|
||||||
|
#define WC_SM_BLOB_KEYMOD_SZ 8
|
||||||
#define WC_CAAM_MAX_ENTROPY 44
|
#define WC_CAAM_MAX_ENTROPY 44
|
||||||
|
|
||||||
#if !defined(WOLFSSL_QNX_CAAM) && !defined(WOLFSSL_SECO_CAAM) && \
|
#if !defined(WOLFSSL_QNX_CAAM) && !defined(WOLFSSL_SECO_CAAM) && \
|
||||||
|
Reference in New Issue
Block a user