Skip to content

Commit

Permalink
Add special case to skip RC4 reinit
Browse files Browse the repository at this point in the history
Reviewed-by: Tomas Mraz <[email protected]>
Reviewed-by: Paul Dale <[email protected]>
Reviewed-by: Shane Lontis <[email protected]>
(Merged from openssl#15276)
  • Loading branch information
jon-oracle authored and slontis committed May 25, 2021
1 parent 2710dde commit b8c09a8
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions test/evp_libctx_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ static int dhx_cert_load(void)

static int test_cipher_reinit(int test_id)
{
int ret = 0, diff, ccm, siv;
int ret = 0, diff, ccm, siv, no_null_key;
int out1_len = 0, out2_len = 0, out3_len = 0;
EVP_CIPHER *cipher = NULL;
EVP_CIPHER_CTX *ctx = NULL;
Expand Down Expand Up @@ -354,6 +354,14 @@ static int test_cipher_reinit(int test_id)
/* siv cannot be called with NULL key as the iv is irrelevant */
siv = (EVP_CIPHER_mode(cipher) == EVP_CIPH_SIV_MODE);

/*
* Skip init call with a null key for RC4 as the stream cipher does not
* handle reinit (1.1.1 behaviour).
*/
no_null_key = EVP_CIPHER_is_a(cipher, "RC4")
|| EVP_CIPHER_is_a(cipher, "RC4-40")
|| EVP_CIPHER_is_a(cipher, "RC4-HMAC-MD5");

/* DES3-WRAP uses random every update - so it will give a different value */
diff = EVP_CIPHER_is_a(cipher, "DES3-WRAP");

Expand All @@ -362,9 +370,10 @@ static int test_cipher_reinit(int test_id)
|| !TEST_true(EVP_EncryptInit_ex(ctx, NULL, NULL, key, iv))
|| !TEST_int_eq(EVP_EncryptUpdate(ctx, out2, &out2_len, in, sizeof(in)),
ccm ? 0 : 1)
|| !TEST_true(EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv))
|| (!no_null_key
&& (!TEST_true(EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv))
|| !TEST_int_eq(EVP_EncryptUpdate(ctx, out3, &out3_len, in, sizeof(in)),
ccm || siv ? 0 : 1))
ccm || siv ? 0 : 1))))
goto err;

if (ccm == 0) {
Expand All @@ -375,7 +384,7 @@ static int test_cipher_reinit(int test_id)
goto err;
} else {
if (!TEST_mem_eq(out1, out1_len, out2, out2_len)
|| (!siv && !TEST_mem_eq(out1, out1_len, out3, out3_len)))
|| (!siv && !no_null_key && !TEST_mem_eq(out1, out1_len, out3, out3_len)))
goto err;
}
}
Expand Down

0 comments on commit b8c09a8

Please sign in to comment.