From 8d7c61cf10560c70a89f07c9c61348c4c49ebe5e Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Fri, 19 Feb 2021 11:51:23 -0700 Subject: [PATCH] prep for Async release --- src/tls13.c | 6 ++++-- wolfcrypt/src/pkcs7.c | 29 ++++++++++++++++++++++++++--- wolfcrypt/test/test.c | 4 ---- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/tls13.c b/src/tls13.c index b2fd50f2f..ac79d0b49 100644 --- a/src/tls13.c +++ b/src/tls13.c @@ -238,8 +238,10 @@ static int HKDF_Expand_Label(byte* okm, word32 okmLen, /* Length of hash of messages */ data[idx++] = (byte)infoLen; /* Hash of messages */ - XMEMCPY(&data[idx], info, infoLen); - idx += infoLen; + if (info != NULL && infoLen > 0) { + XMEMCPY(&data[idx], info, infoLen); + idx += infoLen; + } #ifdef WOLFSSL_DEBUG_TLS WOLFSSL_MSG(" PRK"); diff --git a/wolfcrypt/src/pkcs7.c b/wolfcrypt/src/pkcs7.c index 7fc940f46..204e4be18 100644 --- a/wolfcrypt/src/pkcs7.c +++ b/wolfcrypt/src/pkcs7.c @@ -6496,8 +6496,18 @@ int wc_PKCS7_AddRecipient_KTRI(PKCS7* pkcs7, const byte* cert, word32 certSz, } - ret = wc_RsaPublicEncrypt(pkcs7->cek, pkcs7->cekSz, encryptedKey, +#ifdef WOLFSSL_ASYNC_CRYPT + do { + ret = wc_AsyncWait(ret, &pubKey->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN); + if (ret >= 0) +#endif + { + ret = wc_RsaPublicEncrypt(pkcs7->cek, pkcs7->cekSz, encryptedKey, encryptedKeySz, pubKey, &rng); + } +#ifdef WOLFSSL_ASYNC_CRYPT + } while (ret == WC_PENDING_E); +#endif wc_FreeRsaKey(pubKey); wc_FreeRng(&rng); @@ -8498,8 +8508,21 @@ static int wc_PKCS7_DecryptKtri(PKCS7* pkcs7, byte* in, word32 inSz, } #endif if (ret == 0) { - keySz = wc_RsaPrivateDecryptInline(encryptedKey, encryptedKeySz, - &outKey, privKey); + #ifdef WOLFSSL_ASYNC_CRYPT + keySz = 0; /* set initial "ret" value to 0 */ + do { + keySz = wc_AsyncWait(keySz, &privKey->asyncDev, + WC_ASYNC_FLAG_CALL_AGAIN); + if (keySz >= 0) + #endif + { + keySz = wc_RsaPrivateDecryptInline(encryptedKey, + encryptedKeySz, &outKey, + privKey); + } + #ifdef WOLFSSL_ASYNC_CRYPT + } while (keySz == WC_PENDING_E); + #endif #ifdef WC_RSA_BLINDING wc_FreeRng(&rng); #endif diff --git a/wolfcrypt/test/test.c b/wolfcrypt/test/test.c index fea66d074..1d1bc566b 100644 --- a/wolfcrypt/test/test.c +++ b/wolfcrypt/test/test.c @@ -21166,8 +21166,6 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, #endif ret = wc_ecc_make_key_ex(rng, keySize, userA, curve_id); - if (ret != 0) - ERROR_OUT(-9909, done); #if defined(WOLFSSL_ASYNC_CRYPT) ret = wc_AsyncWait(ret, &userA->asyncDev, WC_ASYNC_FLAG_NONE); #endif @@ -21190,8 +21188,6 @@ static int ecc_test_curve_size(WC_RNG* rng, int keySize, int testVerifyCount, #if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) ret = wc_ecc_make_key_ex(rng, keySize, userB, curve_id); - if (ret != 0) - ERROR_OUT(-9913, done); #if defined(WOLFSSL_ASYNC_CRYPT) ret = wc_AsyncWait(ret, &userB->asyncDev, WC_ASYNC_FLAG_NONE); #endif