@@ -36736,9 +36736,12 @@ static wc_test_ret_t ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerif
3673636736#if !defined(ECC_TIMING_RESISTANT) || (defined(ECC_TIMING_RESISTANT) && \
3673736737 !defined(WC_NO_RNG) && !defined(WOLFSSL_KCAPI_ECC))
3673836738#ifdef HAVE_ECC_SIGN
36739- /* some hardware doesn't support sign/verify of all zero digest */
36740- #if !defined(WC_TEST_NO_ECC_SIGN_VERIFY_ZERO_DIGEST)
36741- /* test DSA sign hash with zeros */
36739+ /* WC_TEST_NO_ECC_SIGN_VERIFY_ZERO_DIGEST: build rejects all-zero digest,
36740+ * so test expects failure. */
36741+ #ifdef WOLFSSL_SM2
36742+ if (curve_id != ECC_SM2P256V1)
36743+ #endif
36744+ {
3674236745 for (i = 0; i < (int)ECC_DIGEST_SIZE; i++) {
3674336746 digest[i] = 0;
3674436747 }
@@ -36752,29 +36755,47 @@ static wc_test_ret_t ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerif
3675236755 ret = wc_ecc_sign_hash(digest, ECC_DIGEST_SIZE, sig, &x, rng,
3675336756 userA);
3675436757 } while (ret == WC_NO_ERR_TRACE(WC_PENDING_E));
36758+ #ifdef WC_TEST_NO_ECC_SIGN_VERIFY_ZERO_DIGEST
36759+ if (ret == 0) {
36760+ ERROR_OUT(WC_TEST_RET_ENC_EC(ret), done);
36761+ }
36762+ else {
36763+ ret = 0;
36764+ }
36765+ #else
3675536766 if (ret != 0)
3675636767 ERROR_OUT(WC_TEST_RET_ENC_EC(ret), done);
36768+ #endif
3675736769 TEST_SLEEP();
3675836770
3675936771#ifdef HAVE_ECC_VERIFY
36760- for (i=0; i<testVerifyCount; i++) {
36761- verify = 0;
36762- do {
36763- #if defined(WOLFSSL_ASYNC_CRYPT)
36764- ret = wc_AsyncWait(ret, &userA->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
36765- #endif
36766- if (ret == 0)
36767- ret = wc_ecc_verify_hash(sig, x, digest, ECC_DIGEST_SIZE,
36768- &verify, userA);
36769- } while (ret == WC_NO_ERR_TRACE(WC_PENDING_E));
36770- if (ret != 0)
36771- ERROR_OUT(WC_TEST_RET_ENC_EC(ret), done);
36772- if (verify != 1)
36773- ERROR_OUT(WC_TEST_RET_ENC_NC, done);
36774- TEST_SLEEP();
36772+ verify = 0;
36773+ do {
36774+ #if defined(WOLFSSL_ASYNC_CRYPT)
36775+ ret = wc_AsyncWait(ret, &userA->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
36776+ #endif
36777+ if (ret == 0)
36778+ ret = wc_ecc_verify_hash(sig, x, digest, ECC_DIGEST_SIZE,
36779+ &verify, userA);
36780+ } while (ret == WC_NO_ERR_TRACE(WC_PENDING_E));
36781+ #ifdef WC_TEST_NO_ECC_SIGN_VERIFY_ZERO_DIGEST
36782+ if (ret == 0) {
36783+ ERROR_OUT(WC_TEST_RET_ENC_EC(ret), done);
3677536784 }
36785+ else {
36786+ ret = 0;
36787+ }
36788+ if (verify == 1)
36789+ ERROR_OUT(WC_TEST_RET_ENC_NC, done);
36790+ #else
36791+ if (ret != 0)
36792+ ERROR_OUT(WC_TEST_RET_ENC_EC(ret), done);
36793+ if (verify != 1)
36794+ ERROR_OUT(WC_TEST_RET_ENC_NC, done);
36795+ #endif
36796+ TEST_SLEEP();
3677636797#endif /* HAVE_ECC_VERIFY */
36777- #endif /* !WC_TEST_NO_ECC_SIGN_VERIFY_ZERO_DIGEST */
36798+ }
3677836799
3677936800 /* test DSA sign hash with sequence (0,1,2,3,4,...) */
3678036801 for (i = 0; i < (int)ECC_DIGEST_SIZE; i++) {
0 commit comments