diff --git a/tests/api.c b/tests/api.c index a8c2565bf..0626830ff 100644 --- a/tests/api.c +++ b/tests/api.c @@ -51683,9 +51683,12 @@ static int test_wolfssl_EVP_chacha20_poly1305(void) AssertIntEQ(EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv), WOLFSSL_SUCCESS); AssertIntEQ(EVP_EncryptUpdate(ctx, NULL, &outSz, aad, sizeof(aad)), WOLFSSL_SUCCESS); + AssertIntEQ(outSz, sizeof(aad)); AssertIntEQ(EVP_EncryptUpdate(ctx, cipherText, &outSz, plainText, sizeof(plainText)), WOLFSSL_SUCCESS); + AssertIntEQ(outSz, sizeof(plainText)); AssertIntEQ(EVP_EncryptFinal_ex(ctx, cipherText, &outSz), WOLFSSL_SUCCESS); + AssertIntEQ(outSz, 0); /* Invalid tag length. */ AssertIntEQ(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG, CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE-1, tag), WOLFSSL_FAILURE); @@ -51705,10 +51708,13 @@ static int test_wolfssl_EVP_chacha20_poly1305(void) AssertIntEQ(EVP_DecryptInit_ex(ctx, NULL, NULL, key, iv), WOLFSSL_SUCCESS); AssertIntEQ(EVP_DecryptUpdate(ctx, NULL, &outSz, aad, sizeof(aad)), WOLFSSL_SUCCESS); + AssertIntEQ(outSz, sizeof(aad)); AssertIntEQ(EVP_DecryptUpdate(ctx, decryptedText, &outSz, cipherText, sizeof(cipherText)), WOLFSSL_SUCCESS); + AssertIntEQ(outSz, sizeof(cipherText)); AssertIntEQ(EVP_DecryptFinal_ex(ctx, decryptedText, &outSz), WOLFSSL_SUCCESS); + AssertIntEQ(outSz, 0); EVP_CIPHER_CTX_free(ctx); printf(resultFmt, passed); diff --git a/wolfcrypt/src/evp.c b/wolfcrypt/src/evp.c index 95aa4e442..27f491ad8 100644 --- a/wolfcrypt/src/evp.c +++ b/wolfcrypt/src/evp.c @@ -687,6 +687,7 @@ int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, return WOLFSSL_FAILURE; } else { + *outl = inl; return WOLFSSL_SUCCESS; } } @@ -697,6 +698,7 @@ int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, return WOLFSSL_FAILURE; } else { + *outl = inl; return WOLFSSL_SUCCESS; } } @@ -946,6 +948,7 @@ int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, unsigned char *out, return WOLFSSL_FAILURE; } else { + *outl = 0; return WOLFSSL_SUCCESS; } #endif