@@ -11117,6 +11117,21 @@ int wc_DsaKeyToParamsDer_ex(DsaKey* key, byte* output, word32* inLen)
1111711117 */
1111811118void InitDecodedCert(DecodedCert* cert,
1111911119 const byte* source, word32 inSz, void* heap)
11120+ {
11121+ InitDecodedCert_ex(cert, source, inSz, heap, INVALID_DEVID);
11122+ }
11123+
11124+
11125+ /* Initialize decoded certificate object with buffer of DER encoding.
11126+ *
11127+ * @param [in, out] cert Decoded certificate object.
11128+ * @param [in] source Buffer containing DER encoded certificate.
11129+ * @param [in] inSz Size of DER data in buffer in bytes.
11130+ * @param [in] heap Dynamic memory hint.
11131+ * @param [in] devId Crypto callback ID to use.
11132+ */
11133+ void InitDecodedCert_ex(DecodedCert* cert,
11134+ const byte* source, word32 inSz, void* heap, int devId)
1112011135{
1112111136 if (cert != NULL) {
1112211137 XMEMSET(cert, 0, sizeof(DecodedCert));
@@ -11152,7 +11167,7 @@ void InitDecodedCert(DecodedCert* cert,
1115211167 #endif /* WOLFSSL_CERT_GEN || WOLFSSL_CERT_EXT */
1115311168
1115411169 #ifndef NO_CERTS
11155- InitSignatureCtx(&cert->sigCtx, heap, INVALID_DEVID );
11170+ InitSignatureCtx(&cert->sigCtx, heap, devId );
1115611171 #endif
1115711172 }
1115811173}
@@ -20958,6 +20973,7 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2095820973 if (sigCtx == NULL)
2095920974 return MEMORY_E;
2096020975#endif
20976+
2096120977 InitSignatureCtx(sigCtx, heap, INVALID_DEVID);
2096220978
2096320979 /* Certificate SEQUENCE */
@@ -24653,7 +24669,8 @@ void wc_SetCert_Free(Cert* cert)
2465324669 }
2465424670}
2465524671
24656- static int wc_SetCert_LoadDer(Cert* cert, const byte* der, word32 derSz)
24672+ static int wc_SetCert_LoadDer(Cert* cert, const byte* der, word32 derSz,
24673+ int devId)
2465724674{
2465824675 int ret;
2465924676
@@ -24671,8 +24688,8 @@ static int wc_SetCert_LoadDer(Cert* cert, const byte* der, word32 derSz)
2467124688 else {
2467224689 XMEMSET(cert->decodedCert, 0, sizeof(DecodedCert));
2467324690
24674- InitDecodedCert ((DecodedCert*)cert->decodedCert, der, derSz,
24675- cert->heap);
24691+ InitDecodedCert_ex ((DecodedCert*)cert->decodedCert, der, derSz,
24692+ cert->heap, devId );
2467624693 ret = ParseCertRelative((DecodedCert*)cert->decodedCert,
2467724694 CERT_TYPE, 0, NULL);
2467824695 if (ret >= 0) {
@@ -30226,7 +30243,7 @@ int wc_SetAuthKeyIdFromCert(Cert *cert, const byte *der, int derSz)
3022630243 /* Check if decodedCert is cached */
3022730244 if (cert->der != der) {
3022830245 /* Allocate cache for the decoded cert */
30229- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30246+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3023030247 }
3023130248
3023230249 if (ret >= 0) {
@@ -30467,7 +30484,8 @@ static int SetAltNamesFromDcert(Cert* cert, DecodedCert* decoded)
3046730484#ifndef NO_FILESYSTEM
3046830485
3046930486/* Set Alt Names from der cert, return 0 on success */
30470- static int SetAltNamesFromCert(Cert* cert, const byte* der, int derSz)
30487+ static int SetAltNamesFromCert(Cert* cert, const byte* der, int derSz,
30488+ int devId)
3047130489{
3047230490 int ret;
3047330491#ifdef WOLFSSL_SMALL_STACK
@@ -30486,7 +30504,7 @@ static int SetAltNamesFromCert(Cert* cert, const byte* der, int derSz)
3048630504 return MEMORY_E;
3048730505#endif
3048830506
30489- InitDecodedCert (decoded, der, (word32)derSz, NULL);
30507+ InitDecodedCert_ex (decoded, der, (word32)derSz, NULL, devId );
3049030508 ret = ParseCertRelative(decoded, CA_TYPE, NO_VERIFY, 0);
3049130509
3049230510 if (ret < 0) {
@@ -30666,7 +30684,7 @@ static void SetNameFromDcert(CertName* cn, DecodedCert* decoded)
3066630684#ifndef NO_FILESYSTEM
3066730685
3066830686/* Set cn name from der buffer, return 0 on success */
30669- static int SetNameFromCert(CertName* cn, const byte* der, int derSz)
30687+ static int SetNameFromCert(CertName* cn, const byte* der, int derSz, int devId )
3067030688{
3067130689 int ret;
3067230690#ifdef WOLFSSL_SMALL_STACK
@@ -30685,7 +30703,7 @@ static int SetNameFromCert(CertName* cn, const byte* der, int derSz)
3068530703 return MEMORY_E;
3068630704#endif
3068730705
30688- InitDecodedCert (decoded, der, (word32)derSz, NULL);
30706+ InitDecodedCert_ex (decoded, der, (word32)derSz, NULL, devId );
3068930707 ret = ParseCertRelative(decoded, CA_TYPE, NO_VERIFY, 0);
3069030708
3069130709 if (ret < 0) {
@@ -30717,7 +30735,8 @@ int wc_SetIssuer(Cert* cert, const char* issuerFile)
3071730735 ret = wc_PemCertToDer_ex(issuerFile, &der);
3071830736 if (ret == 0) {
3071930737 cert->selfSigned = 0;
30720- ret = SetNameFromCert(&cert->issuer, der->buffer, (int)der->length);
30738+ ret = SetNameFromCert(&cert->issuer, der->buffer, (int)der->length,
30739+ INVALID_DEVID);
3072130740
3072230741 FreeDer(&der);
3072330742 }
@@ -30738,7 +30757,8 @@ int wc_SetSubject(Cert* cert, const char* subjectFile)
3073830757
3073930758 ret = wc_PemCertToDer_ex(subjectFile, &der);
3074030759 if (ret == 0) {
30741- ret = SetNameFromCert(&cert->subject, der->buffer, (int)der->length);
30760+ ret = SetNameFromCert(&cert->subject, der->buffer, (int)der->length,
30761+ INVALID_DEVID);
3074230762
3074330763 FreeDer(&der);
3074430764 }
@@ -30761,7 +30781,8 @@ int wc_SetAltNames(Cert* cert, const char* file)
3076130781
3076230782 ret = wc_PemCertToDer_ex(file, &der);
3076330783 if (ret == 0) {
30764- ret = SetAltNamesFromCert(cert, der->buffer, (int)der->length);
30784+ ret = SetAltNamesFromCert(cert, der->buffer, (int)der->length,
30785+ INVALID_DEVID);
3076530786
3076630787 FreeDer(&der);
3076730788 }
@@ -30788,7 +30809,7 @@ int wc_SetIssuerBuffer(Cert* cert, const byte* der, int derSz)
3078830809 /* Check if decodedCert is cached */
3078930810 if (cert->der != der) {
3079030811 /* Allocate cache for the decoded cert */
30791- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30812+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3079230813 }
3079330814
3079430815 if (ret >= 0) {
@@ -30815,7 +30836,7 @@ int wc_SetSubjectBuffer(Cert* cert, const byte* der, int derSz)
3081530836 /* Check if decodedCert is cached */
3081630837 if (cert->der != der) {
3081730838 /* Allocate cache for the decoded cert */
30818- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30839+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3081930840 }
3082030841
3082130842 if (ret >= 0) {
@@ -30842,7 +30863,7 @@ int wc_SetSubjectRaw(Cert* cert, const byte* der, int derSz)
3084230863 /* Check if decodedCert is cached */
3084330864 if (cert->der != der) {
3084430865 /* Allocate cache for the decoded cert */
30845- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30866+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3084630867 }
3084730868
3084830869 if (ret >= 0) {
@@ -30876,7 +30897,7 @@ int wc_SetIssuerRaw(Cert* cert, const byte* der, int derSz)
3087630897 /* Check if decodedCert is cached */
3087730898 if (cert->der != der) {
3087830899 /* Allocate cache for the decoded cert */
30879- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30900+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3088030901 }
3088130902
3088230903 if (ret >= 0) {
@@ -30913,7 +30934,7 @@ int wc_SetAltNamesBuffer(Cert* cert, const byte* der, int derSz)
3091330934 /* Check if decodedCert is cached */
3091430935 if (cert->der != der) {
3091530936 /* Allocate cache for the decoded cert */
30916- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30937+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3091730938 }
3091830939
3091930940 if (ret >= 0) {
@@ -30940,7 +30961,7 @@ int wc_SetDatesBuffer(Cert* cert, const byte* der, int derSz)
3094030961 /* Check if decodedCert is cached */
3094130962 if (cert->der != der) {
3094230963 /* Allocate cache for the decoded cert */
30943- ret = wc_SetCert_LoadDer(cert, der, (word32)derSz);
30964+ ret = wc_SetCert_LoadDer(cert, der, (word32)derSz, INVALID_DEVID );
3094430965 }
3094530966
3094630967 if (ret >= 0) {
@@ -34440,7 +34461,6 @@ static int DecodeBasicOcspResponse(byte* source, word32* ioIndex,
3444034461 int sigLength;
3444134462 const byte* sigParams = NULL;
3444234463 word32 sigParamsSz = 0;
34443-
3444434464 WOLFSSL_ENTER("DecodeBasicOcspResponse");
3444534465 (void)heap;
3444634466
@@ -34708,6 +34728,7 @@ static int DecodeBasicOcspResponse(byte* source, word32* ioIndex,
3470834728 #endif
3470934729 if (ca) {
3471034730 SignatureCtx sigCtx;
34731+
3471134732 /* Initialize he signature context. */
3471234733 InitSignatureCtx(&sigCtx, heap, INVALID_DEVID);
3471334734
0 commit comments