mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-31 19:24:42 +02:00
Merge pull request #896 from dgarske/async_cleanups
Fixes for async and smallstack
This commit is contained in:
@@ -870,7 +870,7 @@ int LoadCRL(WOLFSSL_CRL* crl, const char* path, int type, int monitor)
|
||||
ret = SSL_SUCCESS; /* load failures not reported, for backwards compat */
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(readCtx, ctx->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(readCtx, crl->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
|
||||
if (monitor & WOLFSSL_CRL_MONITOR) {
|
||||
|
@@ -7175,7 +7175,7 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 totalSz
|
||||
ret = wolfSSL_AsyncPush(ssl,
|
||||
args->dCert->sigCtx.asyncDev,
|
||||
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||
goto exit_dc;
|
||||
goto exit_ppc;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -7339,7 +7339,7 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 totalSz
|
||||
ret = wolfSSL_AsyncPush(ssl,
|
||||
args->dCert->sigCtx.asyncDev,
|
||||
WC_ASYNC_FLAG_CALL_AGAIN);
|
||||
goto exit_dc;
|
||||
goto exit_ppc;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -15461,20 +15461,20 @@ void PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, word32 hashSigAlgoSz
|
||||
if (ssl->options.resuming) {
|
||||
if (DSH_CheckSessionId(ssl)) {
|
||||
if (SetCipherSpecs(ssl) == 0) {
|
||||
ret = -1;
|
||||
|
||||
XMEMCPY(ssl->arrays->masterSecret,
|
||||
ssl->session.masterSecret, SECRET_LEN);
|
||||
#ifdef NO_OLD_TLS
|
||||
#ifdef NO_OLD_TLS
|
||||
ret = DeriveTlsKeys(ssl);
|
||||
#else
|
||||
ret = -1; /* default value */
|
||||
#ifndef NO_TLS
|
||||
if (ssl->options.tls)
|
||||
ret = DeriveTlsKeys(ssl);
|
||||
#else
|
||||
#ifndef NO_TLS
|
||||
if (ssl->options.tls)
|
||||
ret = DeriveTlsKeys(ssl);
|
||||
#endif
|
||||
if (!ssl->options.tls)
|
||||
ret = DeriveKeys(ssl);
|
||||
#endif
|
||||
#endif
|
||||
if (!ssl->options.tls)
|
||||
ret = DeriveKeys(ssl);
|
||||
#endif /* NO_OLD_TLS */
|
||||
ssl->options.serverState = SERVER_HELLODONE_COMPLETE;
|
||||
|
||||
return ret;
|
||||
|
@@ -5710,7 +5710,7 @@ int TLSX_KeyShare_Establish(WOLFSSL *ssl)
|
||||
|
||||
/* Move private key to client entry. */
|
||||
if (clientKSE->key != NULL)
|
||||
XFREE(clientKSE->key, heap, DYNAMIC_TYPE_TLSX);
|
||||
XFREE(clientKSE->key, ssl->heap, DYNAMIC_TYPE_TLSX);
|
||||
clientKSE->key = serverKSE->key;
|
||||
serverKSE->key = NULL;
|
||||
clientKSE->keyLen = serverKSE->keyLen;
|
||||
|
@@ -7163,8 +7163,13 @@ int wc_ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = wc_ecc_shared_secret(privKey, pubKey, sharedSecret, &sharedSz);
|
||||
|
||||
ret = 0;
|
||||
do {
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &privKey->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
|
||||
#endif
|
||||
ret = wc_ecc_shared_secret(privKey, pubKey, sharedSecret, &sharedSz);
|
||||
} while (ret == WC_PENDING_E);
|
||||
if (ret == 0) {
|
||||
switch (ctx->kdfAlgo) {
|
||||
case ecHKDF_SHA256 :
|
||||
@@ -7193,6 +7198,9 @@ int wc_ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
if (ret != 0)
|
||||
break;
|
||||
ret = wc_AesCbcEncrypt(&aes, out, msg, msgSz);
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -7316,8 +7324,13 @@ int wc_ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
}
|
||||
#endif
|
||||
|
||||
ret = wc_ecc_shared_secret(privKey, pubKey, sharedSecret, &sharedSz);
|
||||
|
||||
ret = 0;
|
||||
do {
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &privKey->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN);
|
||||
#endif
|
||||
ret = wc_ecc_shared_secret(privKey, pubKey, sharedSecret, &sharedSz);
|
||||
} while (ret == WC_PENDING_E);
|
||||
if (ret == 0) {
|
||||
switch (ctx->kdfAlgo) {
|
||||
case ecHKDF_SHA256 :
|
||||
@@ -7379,6 +7392,9 @@ int wc_ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg,
|
||||
if (ret != 0)
|
||||
break;
|
||||
ret = wc_AesCbcDecrypt(&aes, out, msg, msgSz-digestSz);
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &aes.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
@@ -3017,7 +3017,7 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz)
|
||||
WOLFSSL_MSG("Failed to create RecipientInfo");
|
||||
wc_FreeRng(&rng);
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(recip, NULL, DYNAMMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(recip, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
return recipSz;
|
||||
}
|
||||
@@ -3028,7 +3028,7 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz)
|
||||
wc_FreeRng(&rng);
|
||||
if (ret != 0) {
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(recip, NULL, DYNAMMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(recip, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
@@ -3037,7 +3037,7 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz)
|
||||
contentTypeSz = wc_SetContentType(pkcs7->contentOID, contentType);
|
||||
if (contentTypeSz == 0) {
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(recip, NULL, DYNAMMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(recip, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
@@ -3066,7 +3066,7 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz)
|
||||
if (encryptedContent == NULL) {
|
||||
XFREE(plain, pkcs7->heap, DYNAMIC_TYPE_PKCS7);
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(recip, NULL, DYNAMMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(recip, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
return MEMORY_E;
|
||||
}
|
||||
@@ -3133,7 +3133,7 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz)
|
||||
XFREE(encryptedContent, pkcs7->heap, DYNAMIC_TYPE_PKCS7);
|
||||
XFREE(plain, pkcs7->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(recip, NULL, DYNAMMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(recip, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
return BUFFER_E;
|
||||
}
|
||||
@@ -3173,7 +3173,7 @@ int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, byte* output, word32 outputSz)
|
||||
XFREE(encryptedContent, pkcs7->heap, DYNAMIC_TYPE_PKCS7);
|
||||
|
||||
#ifdef WOLFSSL_SMALL_STACK
|
||||
XFREE(recip, NULL, DYNAMMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(recip, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
|
||||
return idx;
|
||||
|
@@ -4051,10 +4051,16 @@ int aes192_test(void)
|
||||
#endif
|
||||
|
||||
ret = wc_AesCbcEncrypt(&enc, cipher, msg, (int) sizeof(msg));
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &enc.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||
#endif
|
||||
if (ret != 0)
|
||||
return -4234;
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
ret = wc_AesCbcDecrypt(&dec, plain, cipher, (int) sizeof(cipher));
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &dec.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||
#endif
|
||||
if (ret != 0)
|
||||
return -4235;
|
||||
if (XMEMCMP(plain, msg, (int) sizeof(plain))) {
|
||||
@@ -4125,10 +4131,16 @@ int aes256_test(void)
|
||||
#endif
|
||||
|
||||
ret = wc_AesCbcEncrypt(&enc, cipher, msg, (int) sizeof(msg));
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &enc.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||
#endif
|
||||
if (ret != 0)
|
||||
return -4244;
|
||||
#ifdef HAVE_AES_DECRYPT
|
||||
ret = wc_AesCbcDecrypt(&dec, plain, cipher, (int) sizeof(cipher));
|
||||
#if defined(WOLFSSL_ASYNC_CRYPT)
|
||||
ret = wc_AsyncWait(ret, &dec.asyncDev, WC_ASYNC_FLAG_NONE);
|
||||
#endif
|
||||
if (ret != 0)
|
||||
return -4245;
|
||||
if (XMEMCMP(plain, msg, (int) sizeof(plain))) {
|
||||
|
Reference in New Issue
Block a user