@@ -19712,6 +19712,104 @@ static int test_wc_RsaPublicKeyDecodeRaw(void)
1971219712} /* END test_wc_RsaPublicKeyDecodeRaw */
1971319713
1971419714
19715+ /*
19716+ * Testing wc_RsaPrivateKeyDecodeRaw()
19717+ */
19718+ static int test_wc_RsaPrivateKeyDecodeRaw(void)
19719+ {
19720+ EXPECT_DECLS;
19721+ #if !defined(NO_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY) \
19722+ && !defined(HAVE_SELFTEST) && !defined(HAVE_FIPS)
19723+ RsaKey key;
19724+ const byte n = 33;
19725+ const byte e = 3;
19726+ const byte d = 7;
19727+ const byte u = 2;
19728+ const byte p = 3;
19729+ const byte q = 11;
19730+ const byte dp = 1;
19731+ const byte dq = 7;
19732+
19733+ ExpectIntEQ(wc_InitRsaKey(&key, HEAP_HINT), 0);
19734+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19735+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19736+ &p, sizeof(p), &q, sizeof(q), NULL, 0,
19737+ NULL, 0, &key), 0);
19738+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19739+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19740+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19741+ NULL, 0, &key), 0);
19742+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19743+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19744+ &p, sizeof(p), &q, sizeof(q), NULL, 0,
19745+ &dq, sizeof(dq), &key), 0);
19746+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19747+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19748+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19749+ &dq, sizeof(dq), &key), 0);
19750+
19751+ /* Pass in bad args. */
19752+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(NULL, sizeof(n),
19753+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19754+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19755+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19756+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, 0,
19757+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19758+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19759+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19760+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19761+ NULL, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19762+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19763+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19764+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19765+ &e, 0, &d, sizeof(d), &u, sizeof(u),
19766+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19767+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19768+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19769+ &e, sizeof(e), NULL, sizeof(d), &u, sizeof(u),
19770+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19771+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19772+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19773+ &e, sizeof(e), &d, 0, &u, sizeof(u),
19774+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19775+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19776+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19777+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19778+ NULL, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19779+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19780+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19781+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19782+ &p, 0, &q, sizeof(q), &dp, sizeof(dp),
19783+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19784+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19785+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19786+ &p, sizeof(p), NULL, sizeof(q), &dp, sizeof(dp),
19787+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19788+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19789+ &e, sizeof(e), &d, sizeof(d), &u, sizeof(u),
19790+ &p, sizeof(p), &q, 0, &dp, sizeof(dp),
19791+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19792+ #if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM)
19793+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19794+ &e, sizeof(e), &d, sizeof(d), &u, 0,
19795+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19796+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19797+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19798+ &e, sizeof(e), &d, sizeof(d), NULL, sizeof(u),
19799+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19800+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19801+ ExpectIntEQ(wc_RsaPrivateKeyDecodeRaw(&n, sizeof(n),
19802+ &e, sizeof(e), &d, sizeof(d), &u, 0,
19803+ &p, sizeof(p), &q, sizeof(q), &dp, sizeof(dp),
19804+ &dq, sizeof(dq), &key), BAD_FUNC_ARG);
19805+ #endif
19806+
19807+ DoExpectIntEQ(wc_FreeRsaKey(&key), 0);
19808+ #endif
19809+ return EXPECT_RESULT();
19810+ } /* END test_wc_RsaPrivateKeyDecodeRaw */
19811+
19812+
1971519813#if !defined(NO_RSA) && defined(WOLFSSL_KEY_GEN)
1971619814 /* In FIPS builds, wc_MakeRsaKey() will return an error if it cannot find
1971719815 * a probable prime in 5*(modLen/2) attempts. In non-FIPS builds, it keeps
@@ -72426,6 +72524,7 @@ TEST_CASE testCases[] = {
7242672524 TEST_DECL(test_wc_RsaPrivateKeyDecode),
7242772525 TEST_DECL(test_wc_RsaPublicKeyDecode),
7242872526 TEST_DECL(test_wc_RsaPublicKeyDecodeRaw),
72527+ TEST_DECL(test_wc_RsaPrivateKeyDecodeRaw),
7242972528 TEST_DECL(test_wc_MakeRsaKey),
7243072529 TEST_DECL(test_wc_CheckProbablePrime),
7243172530 TEST_DECL(test_wc_RsaPSS_Verify),
0 commit comments