From 362f0a2cfdfeaea3e9a816ca90c19b4893ea2bbb Mon Sep 17 00:00:00 2001 From: Kareem Date: Thu, 10 Jul 2025 12:43:14 -0700 Subject: [PATCH] Ensure only one of the RPK algorithm parameters are set. --- wolfcrypt/src/asn.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/wolfcrypt/src/asn.c b/wolfcrypt/src/asn.c index 6c97695b6..6dba89f9a 100644 --- a/wolfcrypt/src/asn.c +++ b/wolfcrypt/src/asn.c @@ -23372,6 +23372,20 @@ static int DecodeCertInternal(DecodedCert* cert, int verify, int* criticalExt, oidCurveType); ret = GetASN_Items(RPKCertASN, RPKdataASN, RPKCertASN_Length, 1, cert->source, &cert->srcIdx, cert->maxIdx); + + if (ret == 0) { + if (( RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_NULL].length && + RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_CURVEID].length) +#ifdef WC_RSA_PSS + || ( RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_P_SEQ].length && + ( RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_NULL].length || + RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_CURVEID].length)) +#endif + ) { + WOLFSSL_MSG("Multiple RPK algorithm parameters set."); + ret = ASN_PARSE_E; + } + } if (ret == 0) { cert->keyOID = RPKdataASN[RPKCERTASN_IDX_SPUBKEYINFO_ALGO_OID].data.oid.sum;