X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=test%2Fevp_pkey_provided_test.c;h=6dcd0fe70122fea73712bc6be91f7ff27817ca8a;hp=afebd04feb9f7203de36dccfba55365993e4237e;hb=HEAD;hpb=f3be536686654016adc9e22024c06036f949f2b0 diff --git a/test/evp_pkey_provided_test.c b/test/evp_pkey_provided_test.c index afebd04feb..a51a4a3c07 100644 --- a/test/evp_pkey_provided_test.c +++ b/test/evp_pkey_provided_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 2019-2024 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 @@ -389,7 +389,7 @@ static int test_fromdata_rsa(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 32) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 8) @@ -417,7 +417,10 @@ static int test_fromdata_rsa(void) ret = test_print_key_using_pem("RSA", pk) && test_print_key_using_encoder("RSA", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -489,7 +492,7 @@ static int do_fromdata_rsa_derive(OSSL_PARAM *fromdata_params, check_bn = NULL; } - while (dup_pk == NULL) { + for (;;) { if (!TEST_int_eq(EVP_PKEY_get_bits(pk), expected_nbits) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), expected_sbits) || !TEST_int_eq(EVP_PKEY_get_size(pk), expected_ksize) @@ -513,6 +516,9 @@ static int do_fromdata_rsa_derive(OSSL_PARAM *fromdata_params, EVP_PKEY_free(copy_pk); copy_pk = NULL; + if (dup_pk != NULL) + break; + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; if (!TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1)) { @@ -994,7 +1000,7 @@ static int test_fromdata_dh_named_group(void) &len))) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112) @@ -1074,7 +1080,10 @@ static int test_fromdata_dh_named_group(void) ret = test_print_key_using_pem("DH", pk) && test_print_key_using_encoder("DH", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1175,7 +1184,7 @@ static int test_fromdata_dh_fips186_4(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112) @@ -1249,7 +1258,10 @@ static int test_fromdata_dh_fips186_4(void) ret = test_print_key_using_pem("DH", pk) && test_print_key_using_encoder("DH", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1483,7 +1495,7 @@ static int test_fromdata_ecx(int tst) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), bits) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), security_bits) @@ -1523,6 +1535,12 @@ static int test_fromdata_ecx(int tst) /* This should succeed because there are no parameters to copy */ || !TEST_true(EVP_PKEY_copy_parameters(copy_pk, pk))) goto err; + if (!TEST_ptr(ctx2 = EVP_PKEY_CTX_new_from_pkey(NULL, copy_pk, NULL)) + /* This should fail because copy_pk has no pubkey */ + || !TEST_int_le(EVP_PKEY_public_check(ctx2), 0)) + goto err; + EVP_PKEY_CTX_free(ctx2); + ctx2 = NULL; EVP_PKEY_free(copy_pk); copy_pk = NULL; @@ -1532,7 +1550,10 @@ static int test_fromdata_ecx(int tst) ret = test_print_key_using_pem(alg, pk) && test_print_key_using_encoder(alg, pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1650,7 +1671,7 @@ static int test_fromdata_ec(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 256) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 128) @@ -1689,6 +1710,15 @@ static int test_fromdata_ec(void) || !TEST_BN_eq(group_b, b)) goto err; + EC_GROUP_free(group); + group = NULL; + BN_free(group_p); + group_p = NULL; + BN_free(group_a); + group_a = NULL; + BN_free(group_b); + group_b = NULL; + if (!EVP_PKEY_get_utf8_string_param(pk, OSSL_PKEY_PARAM_GROUP_NAME, out_curve_name, sizeof(out_curve_name), @@ -1717,7 +1747,10 @@ static int test_fromdata_ec(void) ret = test_print_key_using_pem(alg, pk) && test_print_key_using_encoder(alg, pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk); @@ -1963,7 +1996,7 @@ static int test_fromdata_dsa_fips186_4(void) fromdata_params), 1)) goto err; - while (dup_pk == NULL) { + for (;;) { ret = 0; if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048) || !TEST_int_eq(EVP_PKEY_get_security_bits(pk), 112) @@ -2012,12 +2045,12 @@ static int test_fromdata_dsa_fips186_4(void) &pcounter_out)) || !TEST_int_eq(pcounter, pcounter_out)) goto err; - BN_free(p); - p = NULL; - BN_free(q); - q = NULL; - BN_free(g); - g = NULL; + BN_free(p_out); + p_out = NULL; + BN_free(q_out); + q_out = NULL; + BN_free(g_out); + g_out = NULL; BN_free(j_out); j_out = NULL; BN_free(pub_out); @@ -2045,7 +2078,10 @@ static int test_fromdata_dsa_fips186_4(void) ret = test_print_key_using_pem("DSA", pk) && test_print_key_using_encoder("DSA", pk); - if (!ret || !TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) + if (!ret || dup_pk != NULL) + break; + + if (!TEST_ptr(dup_pk = EVP_PKEY_dup(pk))) goto err; ret = ret && TEST_int_eq(EVP_PKEY_eq(pk, dup_pk), 1); EVP_PKEY_free(pk);