forked from wolfSSL/wolfssl
Ensure ChaCha20 updates out length during cipher update
This commit is contained in:
@ -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_EncryptInit_ex(ctx, NULL, NULL, key, iv), WOLFSSL_SUCCESS);
|
||||||
AssertIntEQ(EVP_EncryptUpdate(ctx, NULL, &outSz, aad, sizeof(aad)),
|
AssertIntEQ(EVP_EncryptUpdate(ctx, NULL, &outSz, aad, sizeof(aad)),
|
||||||
WOLFSSL_SUCCESS);
|
WOLFSSL_SUCCESS);
|
||||||
|
AssertIntEQ(outSz, sizeof(aad));
|
||||||
AssertIntEQ(EVP_EncryptUpdate(ctx, cipherText, &outSz, plainText,
|
AssertIntEQ(EVP_EncryptUpdate(ctx, cipherText, &outSz, plainText,
|
||||||
sizeof(plainText)), WOLFSSL_SUCCESS);
|
sizeof(plainText)), WOLFSSL_SUCCESS);
|
||||||
|
AssertIntEQ(outSz, sizeof(plainText));
|
||||||
AssertIntEQ(EVP_EncryptFinal_ex(ctx, cipherText, &outSz), WOLFSSL_SUCCESS);
|
AssertIntEQ(EVP_EncryptFinal_ex(ctx, cipherText, &outSz), WOLFSSL_SUCCESS);
|
||||||
|
AssertIntEQ(outSz, 0);
|
||||||
/* Invalid tag length. */
|
/* Invalid tag length. */
|
||||||
AssertIntEQ(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG,
|
AssertIntEQ(EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_AEAD_GET_TAG,
|
||||||
CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE-1, tag), WOLFSSL_FAILURE);
|
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_DecryptInit_ex(ctx, NULL, NULL, key, iv), WOLFSSL_SUCCESS);
|
||||||
AssertIntEQ(EVP_DecryptUpdate(ctx, NULL, &outSz, aad, sizeof(aad)),
|
AssertIntEQ(EVP_DecryptUpdate(ctx, NULL, &outSz, aad, sizeof(aad)),
|
||||||
WOLFSSL_SUCCESS);
|
WOLFSSL_SUCCESS);
|
||||||
|
AssertIntEQ(outSz, sizeof(aad));
|
||||||
AssertIntEQ(EVP_DecryptUpdate(ctx, decryptedText, &outSz, cipherText,
|
AssertIntEQ(EVP_DecryptUpdate(ctx, decryptedText, &outSz, cipherText,
|
||||||
sizeof(cipherText)), WOLFSSL_SUCCESS);
|
sizeof(cipherText)), WOLFSSL_SUCCESS);
|
||||||
|
AssertIntEQ(outSz, sizeof(cipherText));
|
||||||
AssertIntEQ(EVP_DecryptFinal_ex(ctx, decryptedText, &outSz),
|
AssertIntEQ(EVP_DecryptFinal_ex(ctx, decryptedText, &outSz),
|
||||||
WOLFSSL_SUCCESS);
|
WOLFSSL_SUCCESS);
|
||||||
|
AssertIntEQ(outSz, 0);
|
||||||
EVP_CIPHER_CTX_free(ctx);
|
EVP_CIPHER_CTX_free(ctx);
|
||||||
|
|
||||||
printf(resultFmt, passed);
|
printf(resultFmt, passed);
|
||||||
|
@ -687,6 +687,7 @@ int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
|||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
*outl = inl;
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -697,6 +698,7 @@ int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx,
|
|||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
*outl = inl;
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -946,6 +948,7 @@ int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, unsigned char *out,
|
|||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
*outl = 0;
|
||||||
return WOLFSSL_SUCCESS;
|
return WOLFSSL_SUCCESS;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user