@@ -44865,31 +44865,16 @@ static int test_wolfSSL_cert_cb_dyn_ciphers_certCB(WOLFSSL* ssl, void* arg)
4486544865 haveECC = 0;
4486644866 }
4486744867 for (idx = 0; idx < hashSigAlgoSz; idx += 2) {
44868- /* Based on DecodeSigAlg. Enums are not exposed so need to use magic
44869- * numbers. */
44870- switch (hashSigAlgo[idx+0]) {
44871- case 8:
44872- switch (hashSigAlgo[idx+1]) {
44873- case 7: /* ED25519 */
44874- case 8: /* ED448 */
44875- haveECC = 1;
44876- break;
44877- default:
44878- /* RSA-PSS */
44879- haveRSA = 1;
44880- break;
44881- }
44882- break;
44883- default:
44884- switch (hashSigAlgo[idx+1]) {
44885- case 1: /* RSA */
44886- haveRSA = 1;
44887- break;
44888- case 3: /* ECC */
44889- haveECC = 1;
44890- break;
44891- }
44892- }
44868+ enum wc_HashType hashAlgo;
44869+ enum Key_Sum sigAlgo;
44870+
44871+ wolfSSL_get_sigalg_info(hashSigAlgo[idx+0], hashSigAlgo[idx+1],
44872+ &hashAlgo, &sigAlgo);
44873+
44874+ if (sigAlgo == RSAk || sigAlgo == RSAPSSk)
44875+ haveRSA = 1;
44876+ else if (sigAlgo == ECDSAk)
44877+ haveECC = 1;
4489344878 }
4489444879
4489544880 if (haveRSA) {
@@ -45082,6 +45067,43 @@ static int test_wolfSSL_ciphersuite_auth(void)
4508245067 return EXPECT_RESULT();
4508345068}
4508445069
45070+ static int test_wolfSSL_sigalg_info(void)
45071+ {
45072+ EXPECT_DECLS;
45073+ #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_EXTRA)
45074+ byte hashSigAlgo[WOLFSSL_MAX_SIGALGO];
45075+ word16 len = 0;
45076+ word16 idx = 0;
45077+ int allSigAlgs = SIG_ECDSA | SIG_RSA | SIG_SM2 | SIG_FALCON | SIG_DILITHIUM;
45078+
45079+ InitSuitesHashSigAlgo_ex2(hashSigAlgo, allSigAlgs, 1, 0xFFFFFFFF, &len);
45080+ for (idx = 0; idx < len; idx += 2) {
45081+ enum wc_HashType hashAlgo;
45082+ enum Key_Sum sigAlgo;
45083+
45084+ wolfSSL_get_sigalg_info(hashSigAlgo[idx+0], hashSigAlgo[idx+1],
45085+ &hashAlgo, &sigAlgo);
45086+
45087+ ExpectIntNE(hashAlgo, 0);
45088+ ExpectIntNE(sigAlgo, 0);
45089+ }
45090+
45091+ InitSuitesHashSigAlgo_ex2(hashSigAlgo, allSigAlgs | SIG_ANON, 1,
45092+ 0xFFFFFFFF, &len);
45093+ for (idx = 0; idx < len; idx += 2) {
45094+ enum wc_HashType hashAlgo;
45095+ enum Key_Sum sigAlgo;
45096+
45097+ wolfSSL_get_sigalg_info(hashSigAlgo[idx+0], hashSigAlgo[idx+1],
45098+ &hashAlgo, &sigAlgo);
45099+
45100+ ExpectIntNE(hashAlgo, 0);
45101+ }
45102+
45103+ #endif
45104+ return EXPECT_RESULT();
45105+ }
45106+
4508545107static int test_wolfSSL_SESSION(void)
4508645108{
4508745109 EXPECT_DECLS;
@@ -69268,6 +69290,7 @@ TEST_CASE testCases[] = {
6926869290 TEST_DECL(test_wolfSSL_cert_cb),
6926969291 TEST_DECL(test_wolfSSL_cert_cb_dyn_ciphers),
6927069292 TEST_DECL(test_wolfSSL_ciphersuite_auth),
69293+ TEST_DECL(test_wolfSSL_sigalg_info),
6927169294 /* Can't memory test as tcp_connect aborts. */
6927269295 TEST_DECL(test_wolfSSL_SESSION),
6927369296 TEST_DECL(test_wolfSSL_SESSION_expire_downgrade),
0 commit comments