forked from wolfSSL/wolfssl
Merge pull request #1328 from dgarske/fix_async_rsapss
Fixes for wolfCrypt test RSA PSS with async enabled
This commit is contained in:
@ -8011,16 +8011,33 @@ static int rsa_pss_test(WC_RNG* rng, RsaKey* key)
|
|||||||
|
|
||||||
for (i = 0; i < (int)(sizeof(mgf)/sizeof(*mgf)); i++) {
|
for (i = 0; i < (int)(sizeof(mgf)/sizeof(*mgf)); i++) {
|
||||||
outSz = RSA_TEST_BYTES;
|
outSz = RSA_TEST_BYTES;
|
||||||
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[j],
|
do {
|
||||||
mgf[i], -1, key, rng);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz,
|
||||||
|
hash[j], mgf[i], -1, key, rng);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
ERROR_OUT(-5451, exit_rsa_pss);
|
ERROR_OUT(-5451, exit_rsa_pss);
|
||||||
outSz = ret;
|
outSz = ret;
|
||||||
|
|
||||||
XMEMCPY(sig, out, outSz);
|
XMEMCPY(sig, out, outSz);
|
||||||
plain = NULL;
|
plain = NULL;
|
||||||
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[j],
|
|
||||||
mgf[i], -1, key);
|
do {
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[j],
|
||||||
|
mgf[i], -1, key);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
ERROR_OUT(-5452, exit_rsa_pss);
|
ERROR_OUT(-5452, exit_rsa_pss);
|
||||||
plainSz = ret;
|
plainSz = ret;
|
||||||
@ -8037,8 +8054,17 @@ static int rsa_pss_test(WC_RNG* rng, RsaKey* key)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
XMEMCPY(sig, out, outSz);
|
XMEMCPY(sig, out, outSz);
|
||||||
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, (byte**)&plain,
|
|
||||||
hash[l], mgf[k], -1, key);
|
do {
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz,
|
||||||
|
(byte**)&plain, hash[l], mgf[k], -1, key);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
ERROR_OUT(-5454, exit_rsa_pss);
|
ERROR_OUT(-5454, exit_rsa_pss);
|
||||||
}
|
}
|
||||||
@ -8050,27 +8076,59 @@ static int rsa_pss_test(WC_RNG* rng, RsaKey* key)
|
|||||||
/* Test that a salt length of zero works. */
|
/* Test that a salt length of zero works. */
|
||||||
digestSz = wc_HashGetDigestSize(hash[0]);
|
digestSz = wc_HashGetDigestSize(hash[0]);
|
||||||
outSz = RSA_TEST_BYTES;
|
outSz = RSA_TEST_BYTES;
|
||||||
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[0], mgf[0], 0,
|
do {
|
||||||
key, rng);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[0],
|
||||||
|
mgf[0], 0, key, rng);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
ERROR_OUT(-5460, exit_rsa_pss);
|
ERROR_OUT(-5460, exit_rsa_pss);
|
||||||
outSz = ret;
|
outSz = ret;
|
||||||
|
|
||||||
ret = wc_RsaPSS_Verify_ex(out, outSz, sig, outSz, hash[0], mgf[0], 0,
|
do {
|
||||||
key);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_Verify_ex(out, outSz, sig, outSz, hash[0], mgf[0],
|
||||||
|
0, key);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
ERROR_OUT(-5461, exit_rsa_pss);
|
ERROR_OUT(-5461, exit_rsa_pss);
|
||||||
plainSz = ret;
|
plainSz = ret;
|
||||||
|
|
||||||
ret = wc_RsaPSS_CheckPadding_ex(digest, digestSz, sig, plainSz, hash[0],
|
do {
|
||||||
0);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_CheckPadding_ex(digest, digestSz, sig, plainSz,
|
||||||
|
hash[0], 0);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
ERROR_OUT(-5462, exit_rsa_pss);
|
ERROR_OUT(-5462, exit_rsa_pss);
|
||||||
|
|
||||||
XMEMCPY(sig, out, outSz);
|
XMEMCPY(sig, out, outSz);
|
||||||
plain = NULL;
|
plain = NULL;
|
||||||
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[0], mgf[0], 0,
|
do {
|
||||||
key);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[0], mgf[0],
|
||||||
|
0, key);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
ERROR_OUT(-5463, exit_rsa_pss);
|
ERROR_OUT(-5463, exit_rsa_pss);
|
||||||
plainSz = ret;
|
plainSz = ret;
|
||||||
@ -8083,21 +8141,55 @@ static int rsa_pss_test(WC_RNG* rng, RsaKey* key)
|
|||||||
/* Test bad salt lengths in various APIs. */
|
/* Test bad salt lengths in various APIs. */
|
||||||
digestSz = wc_HashGetDigestSize(hash[0]);
|
digestSz = wc_HashGetDigestSize(hash[0]);
|
||||||
outSz = RSA_TEST_BYTES;
|
outSz = RSA_TEST_BYTES;
|
||||||
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[0], mgf[0], -2,
|
do {
|
||||||
key, rng);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[0],
|
||||||
|
mgf[0], -2, key, rng);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret != PSS_SALTLEN_E)
|
if (ret != PSS_SALTLEN_E)
|
||||||
ERROR_OUT(-5470, exit_rsa_pss);
|
ERROR_OUT(-5470, exit_rsa_pss);
|
||||||
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[0], mgf[0],
|
|
||||||
digestSz + 1, key, rng);
|
do {
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_Sign_ex(digest, digestSz, out, outSz, hash[0],
|
||||||
|
mgf[0], digestSz + 1, key, rng);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret != PSS_SALTLEN_E)
|
if (ret != PSS_SALTLEN_E)
|
||||||
ERROR_OUT(-5471, exit_rsa_pss);
|
ERROR_OUT(-5471, exit_rsa_pss);
|
||||||
|
|
||||||
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[0], mgf[0], -2,
|
do {
|
||||||
key);
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[0],
|
||||||
|
mgf[0], -2, key);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret != PSS_SALTLEN_E)
|
if (ret != PSS_SALTLEN_E)
|
||||||
ERROR_OUT(-5472, exit_rsa_pss);
|
ERROR_OUT(-5472, exit_rsa_pss);
|
||||||
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[0], mgf[0],
|
|
||||||
digestSz + 1, key);
|
do {
|
||||||
|
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev,
|
||||||
|
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
#endif
|
||||||
|
if (ret >= 0) {
|
||||||
|
ret = wc_RsaPSS_VerifyInline_ex(sig, outSz, &plain, hash[0], mgf[0],
|
||||||
|
digestSz + 1, key);
|
||||||
|
}
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
if (ret != PSS_SALTLEN_E)
|
if (ret != PSS_SALTLEN_E)
|
||||||
ERROR_OUT(-5473, exit_rsa_pss);
|
ERROR_OUT(-5473, exit_rsa_pss);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user