forked from wolfSSL/wolfssl
Fix for RSA _ifc_pairwise_consistency_test
to make the async blocking.
This commit is contained in:
committed by
Daniel Pouzzner
parent
e61d88657d
commit
3fcdcbc1f9
@ -616,9 +616,6 @@ static int _ifc_pairwise_consistency_test(RsaKey* key, WC_RNG* rng)
|
|||||||
byte* plain;
|
byte* plain;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
word32 msgLen, plainLen, sigLen;
|
word32 msgLen, plainLen, sigLen;
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
|
||||||
word32 saved_async_marker;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
msgLen = (word32)XSTRLEN(msg);
|
msgLen = (word32)XSTRLEN(msg);
|
||||||
sigLen = wc_RsaEncryptSize(key);
|
sigLen = wc_RsaEncryptSize(key);
|
||||||
@ -632,24 +629,29 @@ static int _ifc_pairwise_consistency_test(RsaKey* key, WC_RNG* rng)
|
|||||||
plain = sig;
|
plain = sig;
|
||||||
|
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||||
/* force blocking calculations. */
|
/* Do blocking async calls here, caller does not support WC_PENDING_E */
|
||||||
saved_async_marker = key->asyncDev.marker;
|
do {
|
||||||
key->asyncDev.marker = WOLFSSL_ASYNC_MARKER_INVALID;
|
if (ret == WC_PENDING_E)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
if (ret >= 0)
|
||||||
#endif
|
#endif
|
||||||
|
ret = wc_RsaSSL_Sign((const byte*)msg, msgLen, sig, sigLen, key, rng);
|
||||||
ret = wc_RsaSSL_Sign((const byte*)msg, msgLen, sig, sigLen, key, rng);
|
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||||
if (ret == WC_PENDING_E) {
|
} while (ret == WC_PENDING_E);
|
||||||
ret = wc_AsyncWait(ret, &key->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (ret > 0) {
|
if (ret > 0) {
|
||||||
sigLen = (word32)ret;
|
sigLen = (word32)ret;
|
||||||
ret = wc_RsaSSL_VerifyInline(sig, sigLen, &plain, key);
|
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||||
if (ret == WC_PENDING_E) {
|
/* Do blocking async calls here, caller does not support WC_PENDING_E */
|
||||||
ret = wc_AsyncWait(ret, &key->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
|
do {
|
||||||
}
|
if (ret == WC_PENDING_E)
|
||||||
|
ret = wc_AsyncWait(ret, &key->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
|
||||||
|
if (ret >= 0)
|
||||||
|
#endif
|
||||||
|
ret = wc_RsaSSL_VerifyInline(sig, sigLen, &plain, key);
|
||||||
|
#ifdef WOLFSSL_ASYNC_CRYPT
|
||||||
|
} while (ret == WC_PENDING_E);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,10 +666,6 @@ static int _ifc_pairwise_consistency_test(RsaKey* key, WC_RNG* rng)
|
|||||||
ForceZero(sig, sigLen);
|
ForceZero(sig, sigLen);
|
||||||
XFREE(sig, NULL, DYNAMIC_TYPE_RSA);
|
XFREE(sig, NULL, DYNAMIC_TYPE_RSA);
|
||||||
|
|
||||||
#ifdef WOLFSSL_ASYNC_CRYPT
|
|
||||||
key->asyncDev.marker = saved_async_marker;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user