From 2b7f4b0903628cb6d766d05ed861127188e9bb3b Mon Sep 17 00:00:00 2001 From: David Garske Date: Mon, 21 Aug 2017 11:07:13 -0700 Subject: [PATCH] Adds async blocking support for sniffer tool. --- src/sniffer.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sniffer.c b/src/sniffer.c index 738e5360f..a835996a2 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -1493,9 +1493,16 @@ static int ProcessClientKeyExchange(const byte* input, int* sslBytes, return -1; } #endif - ret = wc_RsaPrivateDecrypt(input, length, - session->sslServer->arrays->preMasterSecret,SECRET_LEN, &key); - + do { + #ifdef WOLFSSL_ASYNC_CRYPT + ret = wc_AsyncWait(ret, &key.asyncDev, WC_ASYNC_FLAG_CALL_AGAIN); + #endif + if (ret >= 0) { + ret = wc_RsaPrivateDecrypt(input, length, + session->sslServer->arrays->preMasterSecret, SECRET_LEN, + &key); + } + } while (ret == WC_PENDING_E); if (ret != SECRET_LEN) { SetError(RSA_DECRYPT_STR, error, session, FATAL_ERROR_STATE); wc_FreeRsaKey(&key);