summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2021-02-01 15:15:10 +0000
committerMatt Caswell <matt@openssl.org>2021-02-05 15:22:43 +0000
commit5682e77dff5123f0e9259c258bb58bc6d2e358ef (patch)
tree8713314d62451958a401ac9fcb514da70d5a654e /test
parente376242d28e08591af229674a2816ac6f4bb8fdf (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.c23
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;