aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorNeil Horman <nhorman@openssl.org>2023-08-29 15:42:48 -0400
committerTomas Mraz <tomas@openssl.org>2023-09-12 16:00:55 +0200
commitd739b3e05e749d4310b7310c007a4f3b8d5f8556 (patch)
tree64477908423aefc746efc23ebce65b92538c65da /test
parent838173b614938dac84cb5273dc4e6e5acd92649e (diff)
downloadopenssl-d739b3e05e749d4310b7310c007a4f3b8d5f8556.zip
openssl-d739b3e05e749d4310b7310c007a4f3b8d5f8556.tar.gz
openssl-d739b3e05e749d4310b7310c007a4f3b8d5f8556.tar.bz2
make inability to dup/clone ciphers an error
There should be no reason that a cipher can't be duplicated Fixes #21887 Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/21933) (cherry picked from commit 39d857bb610d25b3de4e414264246ec41753c446)
Diffstat (limited to 'test')
-rw-r--r--test/evp_test.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/test/evp_test.c b/test/evp_test.c
index 280e19c..ce72998 100644
--- a/test/evp_test.c
+++ b/test/evp_test.c
@@ -709,6 +709,9 @@ static int cipher_test_enc(EVP_TEST *t, int enc,
int ok = 0, tmplen, chunklen, tmpflen, i;
EVP_CIPHER_CTX *ctx_base = NULL;
EVP_CIPHER_CTX *ctx = NULL, *duped;
+ int fips_dupctx_supported = (fips_provider_version_ge(libctx, 3, 0, 11)
+ && fips_provider_version_lt(libctx, 3, 1, 0))
+ || fips_provider_version_ge(libctx, 3, 1, 3);
t->err = "TEST_FAILURE";
if (!TEST_ptr(ctx_base = EVP_CIPHER_CTX_new()))
@@ -839,18 +842,30 @@ static int cipher_test_enc(EVP_TEST *t, int enc,
/* Test that the cipher dup functions correctly if it is supported */
ERR_set_mark();
- if (EVP_CIPHER_CTX_copy(ctx, ctx_base)) {
- EVP_CIPHER_CTX_free(ctx_base);
- ctx_base = NULL;
- } else {
- EVP_CIPHER_CTX_free(ctx);
- ctx = ctx_base;
+ if (!EVP_CIPHER_CTX_copy(ctx, ctx_base)) {
+ if (fips_dupctx_supported) {
+ TEST_info("Doing a copy of Cipher %s Fails!\n",
+ EVP_CIPHER_get0_name(expected->cipher));
+ ERR_print_errors_fp(stderr);
+ goto err;
+ } else {
+ TEST_info("Allowing copy fail as an old fips provider is in use.");
+ }
}
/* Likewise for dup */
duped = EVP_CIPHER_CTX_dup(ctx);
if (duped != NULL) {
EVP_CIPHER_CTX_free(ctx);
ctx = duped;
+ } else {
+ if (fips_dupctx_supported) {
+ TEST_info("Doing a dup of Cipher %s Fails!\n",
+ EVP_CIPHER_get0_name(expected->cipher));
+ ERR_print_errors_fp(stderr);
+ goto err;
+ } else {
+ TEST_info("Allowing dup fail as an old fips provider is in use.");
+ }
}
ERR_pop_to_mark();
@@ -1035,6 +1050,7 @@ static int cipher_test_run(EVP_TEST *t)
int rv, frag = 0;
size_t out_misalign, inp_misalign;
+ TEST_info("RUNNING TEST FOR CIPHER %s\n", EVP_CIPHER_get0_name(cdat->cipher));
if (!cdat->key) {
t->err = "NO_KEY";
return 0;