Skip to content

Commit 046e46a

Browse files
authored
Merge pull request #8825 from kareem-wolfssl/zd19911
Fix parsing RPK with no parameters.
2 parents 8d68977 + 362f0a2 commit 046e46a

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

tests/api.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61443,7 +61443,7 @@ static int test_wolfSSL_DTLS_fragment_buckets(void)
6144361443

6144461444
#if !defined(NO_FILESYSTEM) && \
6144561445
defined(WOLFSSL_DTLS) && !defined(WOLFSSL_NO_TLS12) && \
61446-
defined(HAVE_MANUAL_MEMIO_TESTS_DEPENDENCIES)
61446+
defined(HAVE_MANUAL_MEMIO_TESTS_DEPENDENCIES) && !defined(NO_RSA)
6144761447

6144861448
static int test_wolfSSL_dtls_stateless2(void)
6144961449
{

tests/utils.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
#ifndef TESTS_UTILS_H
2828
#define TESTS_UTILS_H
2929

30-
#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) && !defined(NO_RSA) && \
30+
#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) && \
31+
(!defined(NO_RSA) || defined(HAVE_RPK)) && \
3132
!defined(NO_WOLFSSL_SERVER) && !defined(NO_WOLFSSL_CLIENT) && \
3233
(!defined(WOLFSSL_NO_TLS12) || defined(WOLFSSL_TLS13))
3334
#define HAVE_MANUAL_MEMIO_TESTS_DEPENDENCIES

wolfcrypt/src/asn.c

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23128,10 +23128,10 @@ static const ASNItem RPKCertASN[] = {
2312823128
/* Algorithm OBJECT IDENTIFIER */
2312923129
/* TBS_SPUBKEYINFO_ALGO_OID */ { 2, ASN_OBJECT_ID, 0, 0, 0 },
2313023130
/* parameters ANY defined by algorithm OPTIONAL */
23131-
/* TBS_SPUBKEYINFO_ALGO_NULL */ { 2, ASN_TAG_NULL, 0, 0, 2 },
23132-
/* TBS_SPUBKEYINFO_ALGO_CURVEID */ { 2, ASN_OBJECT_ID, 0, 0, 2 },
23131+
/* TBS_SPUBKEYINFO_ALGO_NULL */ { 2, ASN_TAG_NULL, 0, 0, 1 },
23132+
/* TBS_SPUBKEYINFO_ALGO_CURVEID */ { 2, ASN_OBJECT_ID, 0, 0, 1 },
2313323133
#ifdef WC_RSA_PSS
23134-
/* TBS_SPUBKEYINFO_ALGO_P_SEQ */ { 2, ASN_SEQUENCE, 1, 0, 2 },
23134+
/* TBS_SPUBKEYINFO_ALGO_P_SEQ */ { 2, ASN_SEQUENCE, 1, 0, 1 },
2313523135
#endif
2313623136
/* subjectPublicKey BIT STRING */
2313723137
/* TBS_SPUBKEYINFO_PUBKEY */ { 1, ASN_BIT_STRING, 0, 0, 0 },
@@ -23372,6 +23372,20 @@ static int DecodeCertInternal(DecodedCert* cert, int verify, int* criticalExt,
2337223372
oidCurveType);
2337323373
ret = GetASN_Items(RPKCertASN, RPKdataASN, RPKCertASN_Length, 1,
2337423374
cert->source, &cert->srcIdx, cert->maxIdx);
23375+
23376+
if (ret == 0) {
23377+
if (( RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_NULL].length &&
23378+
RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_CURVEID].length)
23379+
#ifdef WC_RSA_PSS
23380+
|| ( RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_P_SEQ].length &&
23381+
( RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_NULL].length ||
23382+
RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_CURVEID].length))
23383+
#endif
23384+
) {
23385+
WOLFSSL_MSG("Multiple RPK algorithm parameters set.");
23386+
ret = ASN_PARSE_E;
23387+
}
23388+
}
2337523389
if (ret == 0) {
2337623390
cert->keyOID =
2337723391
RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_OID].data.oid.sum;

0 commit comments

Comments
 (0)