diff options
author | Shane Lontis <shane.lontis@oracle.com> | 2019-10-03 16:05:49 +1000 |
---|---|---|
committer | Shane Lontis <shane.lontis@oracle.com> | 2019-10-03 16:05:49 +1000 |
commit | 6a41156c20cbccc56c46bf6a5f7d2ac45cc1679a (patch) | |
tree | acb2b71b15d5fe8b962ffb6141967cb4a379c201 /test | |
parent | 0399aba7e05ea9bb1a58bd2e1b164f353f6ef1c9 (diff) |
Add rc5 ciphers to default provider
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10006)
Diffstat (limited to 'test')
-rw-r--r-- | test/evp_test.c | 17 | ||||
-rw-r--r-- | test/recipes/30-test_evp.t | 3 | ||||
-rw-r--r-- | test/recipes/30-test_evp_data/evpciph_rc5.txt | 86 |
3 files changed, 106 insertions, 0 deletions
diff --git a/test/evp_test.c b/test/evp_test.c index 03581ff447..04519545f1 100644 --- a/test/evp_test.c +++ b/test/evp_test.c @@ -486,6 +486,7 @@ typedef struct cipher_data_st { unsigned char *key; size_t key_len; unsigned char *iv; + unsigned int rounds; size_t iv_len; unsigned char *plaintext; size_t plaintext_len; @@ -559,6 +560,13 @@ static int cipher_test_parse(EVP_TEST *t, const char *keyword, if (strcmp(keyword, "Key") == 0) return parse_bin(value, &cdat->key, &cdat->key_len); + if (strcmp(keyword, "Rounds") == 0) { + i = atoi(value); + if (i < 0) + return -1; + cdat->rounds = (unsigned int)i; + return 1; + } if (strcmp(keyword, "IV") == 0) return parse_bin(value, &cdat->iv, &cdat->iv_len); if (strcmp(keyword, "Plaintext") == 0) @@ -683,6 +691,15 @@ static int cipher_test_enc(EVP_TEST *t, int enc, } } + if (expected->rounds > 0) { + int rounds = (int)expected->rounds; + + if (!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC5_ROUNDS, rounds, NULL)) { + t->err = "INVALID_ROUNDS"; + goto err; + } + } + if (!EVP_CIPHER_CTX_set_key_length(ctx, expected->key_len)) { t->err = "INVALID_KEY_LENGTH"; goto err; diff --git a/test/recipes/30-test_evp.t b/test/recipes/30-test_evp.t index e60f82415b..7ff3a14e3e 100644 --- a/test/recipes/30-test_evp.t +++ b/test/recipes/30-test_evp.t @@ -53,6 +53,9 @@ push @defltfiles, @desfiles unless disabled("des"); my @rc4files = qw( evpciph_rc4.txt ); push @defltfiles, @rc4files unless disabled("rc4"); +my @rc5files = qw( evpciph_rc5.txt ); +push @defltfiles, @rc5files unless disabled("rc5"); + plan tests => ($no_fips ? 0 : 1) # FIPS install test + (scalar(@configs) * scalar(@files)) diff --git a/test/recipes/30-test_evp_data/evpciph_rc5.txt b/test/recipes/30-test_evp_data/evpciph_rc5.txt new file mode 100644 index 0000000000..300201b7cb --- /dev/null +++ b/test/recipes/30-test_evp_data/evpciph_rc5.txt @@ -0,0 +1,86 @@ +# +# Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. +# +# Licensed under the Apache License 2.0 (the "License"). You may not use +# this file except in compliance with the License. You can obtain a copy +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + +#The following tests were generated using legacy code, to ensure that the +#provider ciphers have identical results. +Title = RC5 Tests + +Cipher = RC5-ECB +Key = 00000000000000000000000000000000 +Plaintext = 0000000000000000 +Ciphertext = 21a5dbee154b8f6d + +Cipher = RC5-ECB +Key = 00000000000000000000000000000000 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = d9d37019aec1161b27d7ad56b21f0f42 + +Cipher = RC5-CBC +Key = 00000000000000000000000000000000 +IV = 0000000000000000 +Plaintext = 0000000000000000 +Ciphertext = 21a5dbee154b8f6d + +Cipher = RC5-CBC +Key = 0102030405060708090A0B0C0D0E0F10 +IV = 0102030405060708 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = eeebae12d768ac9e5b3d6072a9c76c65 + +Cipher = RC5-OFB +Key = 00000000000000000000000000000000 +IV = 0000000000000000 +Plaintext = 0000000000000000 +Ciphertext = 21a5dbee154b8f6d + +Cipher = RC5-OFB +Key = 0102030405060708090A0B0C0D0E0F10 +IV = 0102030405060708 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = c0ad101b40fc7ffdfc386ea5ecf458b7 + +Cipher = RC5-CFB +Key = 00000000000000000000000000000000 +IV = 0000000000000000 +Plaintext = 0000000000000000 +Ciphertext = 21a5dbee154b8f6d + +Cipher = RC5-CFB +Key = 0102030405060708090A0B0C0D0E0F10 +IV = 0102030405060708 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = c0ad101b40fc7ffdeb97c6173bf2987e + +Cipher = RC5-CFB +Key = 0102030405060708090A0B0C0D0E0F10 +IV = 0102030405060708 +Rounds = 8 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 439945301dfa830885ac2f3cf5e61d0e + +Cipher = RC5-CFB +Key = 0102030405060708090A0B0C0D0E0F10 +IV = 0102030405060708 +Rounds = 16 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = 5ad80530f4a19e622d03cd4f2b165730 + +#Bad rounds +Cipher = RC5-CFB +Key = 0102030405060708090A0B0C0D0E0F10 +IV = 0102030405060708 +Rounds = 9 +Plaintext = 000102030405060708090A0B0C0D0E0F +Result = INVALID_ROUNDS + +#bigger key +Cipher = RC5-CFB +Key = 0102030405060708090A0B0C0D0E0F101213141516 +IV = 0102030405060708 +Plaintext = 000102030405060708090A0B0C0D0E0F +Ciphertext = b3724d2d9d1b9285e1338fd266c2277d |