@@ -22661,9 +22661,19 @@ static wc_test_ret_t openssl_aes_test(void)
2266122661WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2266222662{
2266322663 wc_test_ret_t ret;
22664- EVP_MD_CTX md_ctx;
22664+ #ifdef WOLFSSL_SMALL_STACK
22665+ EVP_MD_CTX *md_ctx = (EVP_MD_CTX *)XMALLOC(sizeof(EVP_MD_CTX), NULL, DYNAMIC_TYPE_OPENSSL);
22666+ #else
22667+ EVP_MD_CTX md_ctx[1];
22668+ #endif
2266522669 testVector a, b, c, d, e, f;
2266622670 byte hash[WC_SHA256_DIGEST_SIZE*2]; /* max size */
22671+
22672+ #ifdef WOLFSSL_SMALL_STACK
22673+ if (md_ctx == NULL)
22674+ return WC_TEST_RET_ENC_EC(MEMORY_E);
22675+ #endif
22676+
2266722677 WOLFSSL_ENTER("openssl_test");
2266822678
2266922679 a.inLen = 0;
@@ -22697,15 +22707,15 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2269722707 a.inLen = XSTRLEN(a.input);
2269822708 a.outLen = WC_MD5_DIGEST_SIZE;
2269922709
22700- EVP_MD_CTX_init(& md_ctx);
22701- ret = EVP_DigestInit(& md_ctx, EVP_md5());
22710+ EVP_MD_CTX_init(md_ctx);
22711+ ret = EVP_DigestInit(md_ctx, EVP_md5());
2270222712 if (ret == WOLFSSL_SUCCESS) {
22703- ret = EVP_DigestUpdate(& md_ctx, a.input, (unsigned long)a.inLen);
22713+ ret = EVP_DigestUpdate(md_ctx, a.input, (unsigned long)a.inLen);
2270422714 }
2270522715 if (ret == WOLFSSL_SUCCESS) {
22706- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22716+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2270722717 }
22708- EVP_MD_CTX_cleanup(& md_ctx);
22718+ EVP_MD_CTX_cleanup(md_ctx);
2270922719 if (ret != WOLFSSL_SUCCESS)
2271022720 return WC_TEST_RET_ENC_NC;
2271122721 if (XMEMCMP(hash, a.output, WC_MD5_DIGEST_SIZE) != 0)
@@ -22721,14 +22731,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2272122731 b.inLen = XSTRLEN(b.input);
2272222732 b.outLen = WC_SHA_DIGEST_SIZE;
2272322733
22724- EVP_MD_CTX_init(& md_ctx);
22725- ret = EVP_DigestInit(& md_ctx, EVP_sha1());
22734+ EVP_MD_CTX_init(md_ctx);
22735+ ret = EVP_DigestInit(md_ctx, EVP_sha1());
2272622736 if (ret == WOLFSSL_SUCCESS) {
22727- ret = EVP_DigestUpdate(& md_ctx, b.input, (unsigned long)b.inLen);
22737+ ret = EVP_DigestUpdate(md_ctx, b.input, (unsigned long)b.inLen);
2272822738 if (ret == WOLFSSL_SUCCESS)
22729- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22739+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2273022740 }
22731- EVP_MD_CTX_cleanup(& md_ctx);
22741+ EVP_MD_CTX_cleanup(md_ctx);
2273222742 if (ret != WOLFSSL_SUCCESS)
2273322743 return WC_TEST_RET_ENC_NC;
2273422744 if (XMEMCMP(hash, b.output, b.outLen) != 0)
@@ -22743,14 +22753,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2274322753 e.inLen = XSTRLEN(e.input);
2274422754 e.outLen = WC_SHA224_DIGEST_SIZE;
2274522755
22746- EVP_MD_CTX_init(& md_ctx);
22747- ret = EVP_DigestInit(& md_ctx, EVP_sha224());
22756+ EVP_MD_CTX_init(md_ctx);
22757+ ret = EVP_DigestInit(md_ctx, EVP_sha224());
2274822758 if (ret == WOLFSSL_SUCCESS) {
22749- ret = EVP_DigestUpdate(& md_ctx, e.input, (unsigned long)e.inLen);
22759+ ret = EVP_DigestUpdate(md_ctx, e.input, (unsigned long)e.inLen);
2275022760 if (ret == WOLFSSL_SUCCESS)
22751- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22761+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2275222762 }
22753- EVP_MD_CTX_cleanup(& md_ctx);
22763+ EVP_MD_CTX_cleanup(md_ctx);
2275422764 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, e.output, e.outLen) != 0) {
2275522765 return WC_TEST_RET_ENC_NC;
2275622766 }
@@ -22764,14 +22774,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2276422774 d.inLen = XSTRLEN(d.input);
2276522775 d.outLen = WC_SHA256_DIGEST_SIZE;
2276622776
22767- EVP_MD_CTX_init(& md_ctx);
22768- ret = EVP_DigestInit(& md_ctx, EVP_sha256());
22777+ EVP_MD_CTX_init(md_ctx);
22778+ ret = EVP_DigestInit(md_ctx, EVP_sha256());
2276922779 if (ret == WOLFSSL_SUCCESS) {
22770- ret = EVP_DigestUpdate(& md_ctx, d.input, (unsigned long)d.inLen);
22780+ ret = EVP_DigestUpdate(md_ctx, d.input, (unsigned long)d.inLen);
2277122781 if (ret == WOLFSSL_SUCCESS)
22772- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22782+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2277322783 }
22774- EVP_MD_CTX_cleanup(& md_ctx);
22784+ EVP_MD_CTX_cleanup(md_ctx);
2277522785 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, d.output, d.outLen) != 0) {
2277622786 return WC_TEST_RET_ENC_NC;
2277722787 }
@@ -22787,14 +22797,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2278722797 e.inLen = XSTRLEN(e.input);
2278822798 e.outLen = WC_SHA384_DIGEST_SIZE;
2278922799
22790- EVP_MD_CTX_init(& md_ctx);
22791- ret = EVP_DigestInit(& md_ctx, EVP_sha384());
22800+ EVP_MD_CTX_init(md_ctx);
22801+ ret = EVP_DigestInit(md_ctx, EVP_sha384());
2279222802 if (ret == WOLFSSL_SUCCESS) {
22793- ret = EVP_DigestUpdate(& md_ctx, e.input, (unsigned long)e.inLen);
22803+ ret = EVP_DigestUpdate(md_ctx, e.input, (unsigned long)e.inLen);
2279422804 if (ret == WOLFSSL_SUCCESS)
22795- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22805+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2279622806 }
22797- EVP_MD_CTX_cleanup(& md_ctx);
22807+ EVP_MD_CTX_cleanup(md_ctx);
2279822808 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, e.output, e.outLen) != 0) {
2279922809 return WC_TEST_RET_ENC_NC;
2280022810 }
@@ -22811,14 +22821,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2281122821 f.inLen = XSTRLEN(f.input);
2281222822 f.outLen = WC_SHA512_DIGEST_SIZE;
2281322823
22814- EVP_MD_CTX_init(& md_ctx);
22815- ret = EVP_DigestInit(& md_ctx, EVP_sha512());
22824+ EVP_MD_CTX_init(md_ctx);
22825+ ret = EVP_DigestInit(md_ctx, EVP_sha512());
2281622826 if (ret == WOLFSSL_SUCCESS) {
22817- ret = EVP_DigestUpdate(& md_ctx, f.input, (unsigned long)f.inLen);
22827+ ret = EVP_DigestUpdate(md_ctx, f.input, (unsigned long)f.inLen);
2281822828 if (ret == WOLFSSL_SUCCESS)
22819- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22829+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2282022830 }
22821- EVP_MD_CTX_cleanup(& md_ctx);
22831+ EVP_MD_CTX_cleanup(md_ctx);
2282222832 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, f.output, f.outLen) != 0) {
2282322833 return WC_TEST_RET_ENC_NC;
2282422834 }
@@ -22833,14 +22843,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2283322843 f.inLen = XSTRLEN(f.input);
2283422844 f.outLen = WC_SHA512_224_DIGEST_SIZE;
2283522845
22836- EVP_MD_CTX_init(& md_ctx);
22837- ret = EVP_DigestInit(& md_ctx, EVP_sha512_224());
22846+ EVP_MD_CTX_init(md_ctx);
22847+ ret = EVP_DigestInit(md_ctx, EVP_sha512_224());
2283822848 if (ret == WOLFSSL_SUCCESS) {
22839- ret = EVP_DigestUpdate(& md_ctx, f.input, (unsigned long)f.inLen);
22849+ ret = EVP_DigestUpdate(md_ctx, f.input, (unsigned long)f.inLen);
2284022850 if (ret == WOLFSSL_SUCCESS)
22841- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22851+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2284222852 }
22843- EVP_MD_CTX_cleanup(& md_ctx);
22853+ EVP_MD_CTX_cleanup(md_ctx);
2284422854 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, f.output, f.outLen) != 0) {
2284522855 return WC_TEST_RET_ENC_NC;
2284622856 }
@@ -22856,14 +22866,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2285622866 f.inLen = XSTRLEN(f.input);
2285722867 f.outLen = WC_SHA512_256_DIGEST_SIZE;
2285822868
22859- EVP_MD_CTX_init(& md_ctx);
22860- ret = EVP_DigestInit(& md_ctx, EVP_sha512_256());
22869+ EVP_MD_CTX_init(md_ctx);
22870+ ret = EVP_DigestInit(md_ctx, EVP_sha512_256());
2286122871 if (ret == WOLFSSL_SUCCESS) {
22862- ret = EVP_DigestUpdate(& md_ctx, f.input, (unsigned long)f.inLen);
22872+ ret = EVP_DigestUpdate(md_ctx, f.input, (unsigned long)f.inLen);
2286322873 if (ret == WOLFSSL_SUCCESS)
22864- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22874+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2286522875 }
22866- EVP_MD_CTX_cleanup(& md_ctx);
22876+ EVP_MD_CTX_cleanup(md_ctx);
2286722877 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, f.output, f.outLen) != 0) {
2286822878 return WC_TEST_RET_ENC_NC;
2286922879 }
@@ -22879,14 +22889,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2287922889 e.inLen = XSTRLEN(e.input);
2288022890 e.outLen = WC_SHA3_224_DIGEST_SIZE;
2288122891
22882- EVP_MD_CTX_init(& md_ctx);
22883- ret = EVP_DigestInit(& md_ctx, EVP_sha3_224());
22892+ EVP_MD_CTX_init(md_ctx);
22893+ ret = EVP_DigestInit(md_ctx, EVP_sha3_224());
2288422894 if (ret == WOLFSSL_SUCCESS) {
22885- ret = EVP_DigestUpdate(& md_ctx, e.input, (unsigned long)e.inLen);
22895+ ret = EVP_DigestUpdate(md_ctx, e.input, (unsigned long)e.inLen);
2288622896 if (ret == WOLFSSL_SUCCESS)
22887- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22897+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2288822898 }
22889- EVP_MD_CTX_cleanup(& md_ctx);
22899+ EVP_MD_CTX_cleanup(md_ctx);
2289022900 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, e.output, e.outLen) != 0) {
2289122901 return WC_TEST_RET_ENC_NC;
2289222902 }
@@ -22901,14 +22911,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2290122911 d.inLen = XSTRLEN(d.input);
2290222912 d.outLen = WC_SHA3_256_DIGEST_SIZE;
2290322913
22904- EVP_MD_CTX_init(& md_ctx);
22905- ret = EVP_DigestInit(& md_ctx, EVP_sha3_256());
22914+ EVP_MD_CTX_init(md_ctx);
22915+ ret = EVP_DigestInit(md_ctx, EVP_sha3_256());
2290622916 if (ret == WOLFSSL_SUCCESS) {
22907- ret = EVP_DigestUpdate(& md_ctx, d.input, (unsigned long)d.inLen);
22917+ ret = EVP_DigestUpdate(md_ctx, d.input, (unsigned long)d.inLen);
2290822918 if (ret == WOLFSSL_SUCCESS)
22909- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22919+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2291022920 }
22911- EVP_MD_CTX_cleanup(& md_ctx);
22921+ EVP_MD_CTX_cleanup(md_ctx);
2291222922 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, d.output, d.outLen) != 0) {
2291322923 return WC_TEST_RET_ENC_NC;
2291422924 }
@@ -22923,14 +22933,14 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2292322933 e.inLen = XSTRLEN(e.input);
2292422934 e.outLen = WC_SHA3_384_DIGEST_SIZE;
2292522935
22926- EVP_MD_CTX_init(& md_ctx);
22927- ret = EVP_DigestInit(& md_ctx, EVP_sha3_384());
22936+ EVP_MD_CTX_init(md_ctx);
22937+ ret = EVP_DigestInit(md_ctx, EVP_sha3_384());
2292822938 if (ret == WOLFSSL_SUCCESS) {
22929- ret = EVP_DigestUpdate(& md_ctx, e.input, (unsigned long)e.inLen);
22939+ ret = EVP_DigestUpdate(md_ctx, e.input, (unsigned long)e.inLen);
2293022940 if (ret == WOLFSSL_SUCCESS)
22931- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22941+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2293222942 }
22933- EVP_MD_CTX_cleanup(& md_ctx);
22943+ EVP_MD_CTX_cleanup(md_ctx);
2293422944 if (ret != WOLFSSL_SUCCESS || XMEMCMP(hash, e.output, e.outLen) != 0) {
2293522945 return WC_TEST_RET_ENC_NC;
2293622946 }
@@ -22946,21 +22956,26 @@ WOLFSSL_TEST_SUBROUTINE wc_test_ret_t openssl_test(void)
2294622956 f.inLen = XSTRLEN(f.input);
2294722957 f.outLen = WC_SHA3_512_DIGEST_SIZE;
2294822958
22949- EVP_MD_CTX_init(& md_ctx);
22950- ret = EVP_DigestInit(& md_ctx, EVP_sha3_512());
22959+ EVP_MD_CTX_init(md_ctx);
22960+ ret = EVP_DigestInit(md_ctx, EVP_sha3_512());
2295122961 if (ret == WOLFSSL_SUCCESS) {
22952- ret = EVP_DigestUpdate(& md_ctx, f.input, (unsigned long)f.inLen);
22962+ ret = EVP_DigestUpdate(md_ctx, f.input, (unsigned long)f.inLen);
2295322963 if (ret == WOLFSSL_SUCCESS)
22954- ret = EVP_DigestFinal(& md_ctx, hash, 0);
22964+ ret = EVP_DigestFinal(md_ctx, hash, 0);
2295522965 }
22956- EVP_MD_CTX_cleanup(& md_ctx);
22966+ EVP_MD_CTX_cleanup(md_ctx);
2295722967 if (ret != WOLFSSL_SUCCESS ||
2295822968 XMEMCMP(hash, f.output, f.outLen) != 0) {
2295922969 return WC_TEST_RET_ENC_NC;
2296022970 }
2296122971#endif /* WOLFSSL_NOSHA3_512 */
2296222972#endif /* WOLFSSL_SHA3 */
2296322973
22974+ #ifdef WOLFSSL_SMALL_STACK
22975+ XFREE(md_ctx, NULL, DYNAMIC_TYPE_OPENSSL);
22976+ md_ctx = NULL;
22977+ #endif
22978+
2296422979#ifndef WC_NO_RNG
2296522980 if (RAND_bytes(hash, sizeof(hash)) != WOLFSSL_SUCCESS)
2296622981 return WC_TEST_RET_ENC_NC;
0 commit comments