diff options
author | Matt Caswell <matt@openssl.org> | 2021-02-01 15:15:10 +0000 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2021-02-05 15:22:43 +0000 |
commit | 5682e77dff5123f0e9259c258bb58bc6d2e358ef (patch) | |
tree | 8713314d62451958a401ac9fcb514da70d5a654e /test | |
parent | e376242d28e08591af229674a2816ac6f4bb8fdf (diff) |
Fix the cipher_overhead_test
Now that libssl no longer has any OPENSSL_NO_ALG guards the internal
cipher_overhead_test wasn't quite handling disabled ciphers correctly.
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/13916)
Diffstat (limited to 'test')
-rw-r--r-- | test/cipher_overhead_test.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/test/cipher_overhead_test.c b/test/cipher_overhead_test.c index 04be8d71cf..2231a215fd 100644 --- a/test/cipher_overhead_test.c +++ b/test/cipher_overhead_test.c @@ -11,6 +11,25 @@ #include "testutil.h" #include "../ssl/ssl_local.h" +static int cipher_enabled(const SSL_CIPHER *ciph) +{ + /* + * ssl_cipher_get_overhead() actually works with AEAD ciphers even if the + * underlying implementation is not present. + */ + if ((ciph->algorithm_mac & SSL_AEAD) != 0) + return 1; + + if (ciph->algorithm_enc != SSL_eNULL + && EVP_get_cipherbynid(SSL_CIPHER_get_cipher_nid(ciph)) == NULL) + return 0; + + if (EVP_get_digestbynid(SSL_CIPHER_get_digest_nid(ciph)) == NULL) + return 0; + + return 1; +} + static int cipher_overhead(void) { int ret = 1, i, n = ssl3_num_ciphers(); @@ -21,6 +40,10 @@ static int cipher_overhead(void) ciph = ssl3_get_cipher(i); if (!ciph->min_dtls) continue; + if (!cipher_enabled(ciph)) { + TEST_skip("Skipping disabled cipher %s", ciph->name); + continue; + } if (!TEST_true(ssl_cipher_get_overhead(ciph, &mac, &in, &blk, &ex))) { TEST_info("Failed getting %s", ciph->name); ret = 0; |