diff --git a/tests/api.c b/tests/api.c index d9c75f675..7fe98f95d 100644 --- a/tests/api.c +++ b/tests/api.c @@ -1084,6 +1084,21 @@ static int do_dual_alg_tls13_connection(byte *caCert, word32 caCertSz, return EXPECT_RESULT(); } +static int extCount = 0; +static int myUnknownExtCallback(const word16* oid, word32 oidSz, int crit, + const unsigned char* der, word32 derSz) +{ + (void) oid; + (void) oidSz; + (void) crit; + (void) der; + (void) derSz; + extCount ++; + /* Accept all extensions. This is only a test. Normally we would be much more + * careful about critical extensions. */ + return 1; +} + static int test_dual_alg_support(void) { EXPECT_DECLS; @@ -1099,6 +1114,7 @@ static int test_dual_alg_support(void) int rootSz = 0; byte *server = NULL; int serverSz = 0; + WOLFSSL_CERT_MANAGER* cm = NULL; ExpectIntEQ(load_file(keyFile, &serverKey, &serverKeySz), 0); @@ -1130,6 +1146,20 @@ static int test_dual_alg_support(void) ExpectIntEQ(do_dual_alg_tls13_connection(root, rootSz, server, serverSz, serverKey, (word32)serverKeySz, 1), TEST_SUCCESS); + + /* Lets see if CertManager can find the new extensions */ + extCount = 0; + ExpectNotNull(cm = wolfSSL_CertManagerNew()); + wolfSSL_CertManagerSetUnknownExtCallback(cm, myUnknownExtCallback); + ExpectIntEQ(wolfSSL_CertManagerLoadCABuffer(cm, root, rootSz, + SSL_FILETYPE_ASN1), WOLFSSL_SUCCESS); + ExpectIntEQ(wolfSSL_CertManagerVerifyBuffer(cm, server, serverSz, + SSL_FILETYPE_ASN1), WOLFSSL_SUCCESS); + /* There is only 1 unknown exension (1.2.3.4.5). The other ones are known + * because they are for the dual alg extensions. */ + ExpectIntEQ(extCount, 1); + wolfSSL_CertManagerFree(cm); + XFREE(root, NULL, DYNAMIC_TYPE_TMP_BUFFER); XFREE(server, NULL, DYNAMIC_TYPE_TMP_BUFFER); diff --git a/wolfssl/wolfcrypt/settings.h b/wolfssl/wolfcrypt/settings.h index 8091b02c5..866327d2e 100644 --- a/wolfssl/wolfcrypt/settings.h +++ b/wolfssl/wolfcrypt/settings.h @@ -348,6 +348,9 @@ #undef OPENSSL_EXTRA #define OPENSSL_EXTRA + +#undef HAVE_OID_DECODING +#define HAVE_OID_DECODING #endif /* WOLFSSL_DUAL_ALG_CERTS */ /* ---------------------------------------------------------------------------