From: Richard Levitte Date: Sat, 15 May 2021 06:14:49 +0000 (+0200) Subject: test/evp_extra_test2.c: Try EVP_PKEY_export() with a legacy RSA key X-Git-Tag: openssl-3.0.0-alpha17~5 X-Git-Url: https://git.openssl.org/gitweb/?a=commitdiff_plain;h=0e5a4da4a86c6435c70d587d740c3096686a8500;p=openssl.git test/evp_extra_test2.c: Try EVP_PKEY_export() with a legacy RSA key Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/15293) --- diff --git a/test/evp_extra_test2.c b/test/evp_extra_test2.c index 3ad28d867a..3f7edac278 100644 --- a/test/evp_extra_test2.c +++ b/test/evp_extra_test2.c @@ -7,6 +7,9 @@ * https://www.openssl.org/source/license.html */ +/* We need to use some deprecated APIs */ +#define OPENSSL_SUPPRESS_DEPRECATED + /* * Really these tests should be in evp_extra_test - but that doesn't * yet support testing with a non-default libctx. Once it does we should move @@ -17,6 +20,9 @@ #include #include #include +#ifndef OPENSSL_NO_DEPRECATED_3_0 +# include +#endif #include #include "testutil.h" #include "internal/nelem.h" @@ -744,16 +750,36 @@ static int test_pkey_export_null(void) static int test_pkey_export(void) { EVP_PKEY *pkey = NULL; - int ret = 0; +#ifndef OPENSSL_NO_DEPRECATED_3_0 + RSA *rsa = NULL; +#endif + int ret = 1; const unsigned char *pdata = keydata[0].kder; + int pdata_len = keydata[0].size; - ret = TEST_ptr(pkey = d2i_AutoPrivateKey_ex(NULL, &pdata, keydata[0].size, - mainctx, NULL)) - && TEST_int_eq(EVP_PKEY_export(pkey, EVP_PKEY_KEYPAIR, - test_pkey_export_cb, pkey), 1) - && TEST_int_eq(EVP_PKEY_export(pkey, EVP_PKEY_KEYPAIR, - test_pkey_export_cb, NULL), 0); + if (!TEST_ptr(pkey = d2i_AutoPrivateKey_ex(NULL, &pdata, pdata_len, + mainctx, NULL)) + || !TEST_true(EVP_PKEY_export(pkey, EVP_PKEY_KEYPAIR, + test_pkey_export_cb, pkey)) + || !TEST_false(EVP_PKEY_export(pkey, EVP_PKEY_KEYPAIR, + test_pkey_export_cb, NULL))) + ret = 0; EVP_PKEY_free(pkey); + +#ifndef OPENSSL_NO_DEPRECATED_3_0 + /* Now, try with a legacy key */ + pdata = keydata[0].kder; + pdata_len = keydata[0].size; + if (!TEST_ptr(rsa = d2i_RSAPrivateKey(NULL, &pdata, pdata_len)) + || !TEST_ptr(pkey = EVP_PKEY_new()) + || !TEST_true(EVP_PKEY_assign_RSA(pkey, rsa)) + || !TEST_true(EVP_PKEY_export(pkey, EVP_PKEY_KEYPAIR, + test_pkey_export_cb, pkey)) + || !TEST_false(EVP_PKEY_export(pkey, EVP_PKEY_KEYPAIR, + test_pkey_export_cb, NULL))) + ret = 0; + EVP_PKEY_free(pkey); +#endif return ret; }