diff --git a/test/build.info b/test/build.info index 0ce3e27ae8..1485801e84 100644 --- a/test/build.info +++ b/test/build.info @@ -57,7 +57,8 @@ IF[{- !$disabled{tests} -}] http_test servername_test ocspapitest fatalerrtest tls13ccstest \ sysdefaulttest errtest ssl_ctx_test gosttest \ context_internal_test aesgcmtest params_test evp_pkey_dparams_test \ - keymgmt_internal_test hexstr_test provider_status_test defltfips_test + keymgmt_internal_test hexstr_test provider_status_test defltfips_test \ + pem_read_depr_test IF[{- !$disabled{'deprecated-3.0'} -}] PROGRAMS{noinst}=enginetest @@ -807,6 +808,12 @@ IF[{- !$disabled{tests} -}] SOURCE[bio_prefix_text]=bio_prefix_text.c $LIBAPPSSRC INCLUDE[bio_prefix_text]=.. ../include ../apps/include DEPEND[bio_prefix_text]=../libcrypto + + IF[{- !$disabled{'deprecated-3.0'} -}] + SOURCE[pem_read_depr_test]=pem_read_depr_test.c + INCLUDE[pem_read_depr_test]=../include ../apps/include + DEPEND[pem_read_depr_test]=../libcrypto libtestutil.a + ENDIF ENDIF SOURCE[ssl_ctx_test]=ssl_ctx_test.c diff --git a/test/pem_read_depr_test.c b/test/pem_read_depr_test.c new file mode 100644 index 0000000000..7ef7f30be6 --- /dev/null +++ b/test/pem_read_depr_test.c @@ -0,0 +1,213 @@ +/* + * Copyright 2020 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 + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * This file tests deprecated APIs. Therefore we need to suppress deprecation + * warnings. + */ +#define OPENSSL_SUPPRESS_DEPRECATED + +#include +#include + +#include "testutil.h" + +static const char *datadir; + +static BIO *getfile(const char *filename) +{ + char *paramsfile = test_mk_file_path(datadir, filename); + BIO *infile = NULL; + + if (!TEST_ptr(paramsfile)) + goto err; + infile = BIO_new_file(paramsfile, "r"); + + err: + OPENSSL_free(paramsfile); + return infile; +} + +#ifndef OPENSSL_NO_DH +static int test_read_dh_params(void) +{ + int testresult = 0; + BIO *infile = getfile("dhparams.pem"); + DH *dh = NULL; + + if (!TEST_ptr(infile)) + goto err; + + dh = PEM_read_bio_DHparams(infile, NULL, NULL, NULL); + if (!TEST_ptr(dh)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + DH_free(dh); + return testresult; +} + +static int test_read_dh_x942_params(void) +{ + int testresult = 0; + BIO *infile = getfile("x942params.pem"); + DH *dh = NULL; + + if (!TEST_ptr(infile)) + goto err; + + dh = PEM_read_bio_DHparams(infile, NULL, NULL, NULL); + if (!TEST_ptr(dh)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + DH_free(dh); + return testresult; +} +#endif + +#ifndef OPENSSL_NO_DSA +static int test_read_dsa_params(void) +{ + int testresult = 0; + BIO *infile = getfile("dsaparams.pem"); + DSA *dsa = NULL; + + if (!TEST_ptr(infile)) + goto err; + + dsa = PEM_read_bio_DSAparams(infile, NULL, NULL, NULL); + if (!TEST_ptr(dsa)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + DSA_free(dsa); + return testresult; +} + +static int test_read_dsa_private(void) +{ + int testresult = 0; + BIO *infile = getfile("dsaprivatekey.pem"); + DSA *dsa = NULL; + + if (!TEST_ptr(infile)) + goto err; + + dsa = PEM_read_bio_DSAPrivateKey(infile, NULL, NULL, NULL); + if (!TEST_ptr(dsa)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + DSA_free(dsa); + return testresult; +} + +static int test_read_dsa_public(void) +{ + int testresult = 0; + BIO *infile = getfile("dsapublickey.pem"); + DSA *dsa = NULL; + + if (!TEST_ptr(infile)) + goto err; + + dsa = PEM_read_bio_DSA_PUBKEY(infile, NULL, NULL, NULL); + if (!TEST_ptr(dsa)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + DSA_free(dsa); + return testresult; +} +#endif + +static int test_read_rsa_private(void) +{ + int testresult = 0; + BIO *infile = getfile("rsaprivatekey.pem"); + RSA *rsa = NULL; + + if (!TEST_ptr(infile)) + goto err; + + rsa = PEM_read_bio_RSAPrivateKey(infile, NULL, NULL, NULL); + if (!TEST_ptr(rsa)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + RSA_free(rsa); + return testresult; +} + +static int test_read_rsa_public(void) +{ + int testresult = 0; + BIO *infile = getfile("rsapublickey.pem"); + RSA *rsa = NULL; + + if (!TEST_ptr(infile)) + goto err; + + rsa = PEM_read_bio_RSA_PUBKEY(infile, NULL, NULL, NULL); + if (!TEST_ptr(rsa)) + goto err; + + testresult = 1; + + err: + BIO_free(infile); + RSA_free(rsa); + return testresult; +} + +int setup_tests(void) +{ + if (!test_skip_common_options()) { + TEST_error("Error parsing test options\n"); + return 0; + } + + if (!TEST_ptr(datadir = test_get_argument(0))) { + TEST_error("Error getting data dir\n"); + return 0; + } + +#ifndef OPENSSL_NO_DH + ADD_TEST(test_read_dh_params); + ADD_TEST(test_read_dh_x942_params); +#endif +#ifndef OPENSSL_NO_DSA + ADD_TEST(test_read_dsa_params); + ADD_TEST(test_read_dsa_private); + ADD_TEST(test_read_dsa_public); +#endif + ADD_TEST(test_read_rsa_private); + ADD_TEST(test_read_rsa_public); + + return 1; +} diff --git a/test/recipes/04-test_pem_read_depr.t b/test/recipes/04-test_pem_read_depr.t new file mode 100644 index 0000000000..6ae878b765 --- /dev/null +++ b/test/recipes/04-test_pem_read_depr.t @@ -0,0 +1,20 @@ +#! /usr/bin/env perl +# Copyright 2015-2016 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 +# in the file LICENSE in the source distribution or at +# https://www.openssl.org/source/license.html + + +use OpenSSL::Test qw(:DEFAULT data_dir); +use OpenSSL::Test::Utils; + +setup("test_pem_read_depr"); + +plan skip_all => "Test not supported in a no-deprecated build" + if disabled("deprecated"); + +plan tests => 1; + +ok(run(test(['pem_read_depr_test', data_dir()])), "pem_read_depr_test"); diff --git a/test/recipes/04-test_pem_read_depr_data/dhparams.pem b/test/recipes/04-test_pem_read_depr_data/dhparams.pem new file mode 100644 index 0000000000..21d1f61b59 --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/dhparams.pem @@ -0,0 +1,8 @@ +-----BEGIN DH PARAMETERS----- +MIIBCAKCAQEA/uDak+qLI40JfWdgM/eWp9Wg1yjCH1psOeyxSImj09DOdvOPKXhI +vBjvwyw76vn+HDBg0R90FbA1VmJBXwFqm2qAytpySgPniFWRoIN38SWrZ7FwlXuO +SPWgXxtRQCIuN7SfIvFoncQ41aa9rJTJ1VXNT22keTe8DbF8tZaALwiaTWmslNa/ ++qI/1/a+R4/SqLmQQBFJ10NfNQ7w66tmzsL3mcoz1vOrl+mmOgKHiKaTnI7oiL8y +qWbnCIdRUPVImNGur/oKRk7Ye/66cgras9WXjXRr5ExVh4+wBYTvJ2H7THRoBgts +0g1y1Zu5uGJQttPbgC18guqH6NH6xPin+wIBAg== +-----END DH PARAMETERS----- diff --git a/test/recipes/04-test_pem_read_depr_data/dsaparams.pem b/test/recipes/04-test_pem_read_depr_data/dsaparams.pem new file mode 100644 index 0000000000..7c4623269f --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/dsaparams.pem @@ -0,0 +1,14 @@ +-----BEGIN DSA PARAMETERS----- +MIICKAKCAQEAkCVbIEa67wJYbxPJRmA+NYY67GfktNggaxbhMaL+jyR7U1uPpOEa +/tTBgql40zj3W+QORevWOjo4ECxCpWmttG81r1+jhlG/a3Bk+CJB+CZw+ZC8NBXV +46v03q+MR3AjLOr/k/sgBabVc6I4K6IFC5ZmlwS0+8F4VudOq4lLqHZXFp89AJWi +HhtPbcD+jYYtrL+3MT7rwQJ+5MoXUgzfTnJFR5hpBuqgYubTGHc8nEG9KkXnE97B +as0hTWaYuLe/RwHEhabZi7pcFqD26fCJC63gzT6zK73R2GD0qRwPD0pxh/adu2uu +h314G2y03Fstnc8q5i/NYofP3Lg++0yJNQIdAMi9Wu0rxBvq5Je+TXliYygyKa5E +/KKOwvshJ2kCggEAWLdQjAIb/Jtn1YZNGZhrif6NCHyO+qxq2B4Ajrw3TUMrmEbt +avfWoHNkoJCTE10ZzWTZqrVWqzfytK8VnG7XRfMftjMdiXTKg4amG8wvNCC3at36 +WouWYsZx50PWXHOyRiFENcmXDiyzvz2/NcZmKIDdlII/JF3sTjn2HtzpwAIEduEV +1YnyY9E6MiP0jeMaHvo5zSHAdSYTu0eBZ3ThxCyyW+sIKRA96+yBUtCrGOb+UUu6 +udVKAj8sauSBsIbLGf/qrw86u/qSZbqr+keY6ozSsCCHeFMUIhGxv4a9E0XcAX0r +VLgYFtiO5DyuXSRACmCgmHYAlvyiP+E5xDs4Nw== +-----END DSA PARAMETERS----- diff --git a/test/recipes/04-test_pem_read_depr_data/dsaprivatekey.pem b/test/recipes/04-test_pem_read_depr_data/dsaprivatekey.pem new file mode 100644 index 0000000000..d24e9e7dd8 --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/dsaprivatekey.pem @@ -0,0 +1,15 @@ +-----BEGIN PRIVATE KEY----- +MIICXAIBADCCAjUGByqGSM44BAEwggIoAoIBAQCQJVsgRrrvAlhvE8lGYD41hjrs +Z+S02CBrFuExov6PJHtTW4+k4Rr+1MGCqXjTOPdb5A5F69Y6OjgQLEKlaa20bzWv +X6OGUb9rcGT4IkH4JnD5kLw0FdXjq/Ter4xHcCMs6v+T+yAFptVzojgrogULlmaX +BLT7wXhW506riUuodlcWnz0AlaIeG09twP6Nhi2sv7cxPuvBAn7kyhdSDN9OckVH +mGkG6qBi5tMYdzycQb0qRecT3sFqzSFNZpi4t79HAcSFptmLulwWoPbp8IkLreDN +PrMrvdHYYPSpHA8PSnGH9p27a66HfXgbbLTcWy2dzyrmL81ih8/cuD77TIk1Ah0A +yL1a7SvEG+rkl75NeWJjKDIprkT8oo7C+yEnaQKCAQBYt1CMAhv8m2fVhk0ZmGuJ +/o0IfI76rGrYHgCOvDdNQyuYRu1q99agc2SgkJMTXRnNZNmqtVarN/K0rxWcbtdF +8x+2Mx2JdMqDhqYbzC80ILdq3fpai5ZixnHnQ9Zcc7JGIUQ1yZcOLLO/Pb81xmYo +gN2Ugj8kXexOOfYe3OnAAgR24RXVifJj0ToyI/SN4xoe+jnNIcB1JhO7R4FndOHE +LLJb6wgpED3r7IFS0KsY5v5RS7q51UoCPyxq5IGwhssZ/+qvDzq7+pJluqv6R5jq +jNKwIId4UxQiEbG/hr0TRdwBfStUuBgW2I7kPK5dJEAKYKCYdgCW/KI/4TnEOzg3 +BB4CHHOCC9vc0Sw+aRYwfowxY8VNL972eXm5m8pKi8Q= +-----END PRIVATE KEY----- diff --git a/test/recipes/04-test_pem_read_depr_data/dsapublickey.pem b/test/recipes/04-test_pem_read_depr_data/dsapublickey.pem new file mode 100644 index 0000000000..7d8b88fc97 --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/dsapublickey.pem @@ -0,0 +1,20 @@ +-----BEGIN PUBLIC KEY----- +MIIDQjCCAjUGByqGSM44BAEwggIoAoIBAQCQJVsgRrrvAlhvE8lGYD41hjrsZ+S0 +2CBrFuExov6PJHtTW4+k4Rr+1MGCqXjTOPdb5A5F69Y6OjgQLEKlaa20bzWvX6OG +Ub9rcGT4IkH4JnD5kLw0FdXjq/Ter4xHcCMs6v+T+yAFptVzojgrogULlmaXBLT7 +wXhW506riUuodlcWnz0AlaIeG09twP6Nhi2sv7cxPuvBAn7kyhdSDN9OckVHmGkG +6qBi5tMYdzycQb0qRecT3sFqzSFNZpi4t79HAcSFptmLulwWoPbp8IkLreDNPrMr +vdHYYPSpHA8PSnGH9p27a66HfXgbbLTcWy2dzyrmL81ih8/cuD77TIk1Ah0AyL1a +7SvEG+rkl75NeWJjKDIprkT8oo7C+yEnaQKCAQBYt1CMAhv8m2fVhk0ZmGuJ/o0I +fI76rGrYHgCOvDdNQyuYRu1q99agc2SgkJMTXRnNZNmqtVarN/K0rxWcbtdF8x+2 +Mx2JdMqDhqYbzC80ILdq3fpai5ZixnHnQ9Zcc7JGIUQ1yZcOLLO/Pb81xmYogN2U +gj8kXexOOfYe3OnAAgR24RXVifJj0ToyI/SN4xoe+jnNIcB1JhO7R4FndOHELLJb +6wgpED3r7IFS0KsY5v5RS7q51UoCPyxq5IGwhssZ/+qvDzq7+pJluqv6R5jqjNKw +IId4UxQiEbG/hr0TRdwBfStUuBgW2I7kPK5dJEAKYKCYdgCW/KI/4TnEOzg3A4IB +BQACggEAGkVenUtTdSt8uK1jmc/98IVmMCVG6qijYqdF+0zSrtnY3+cSPXmiZwWS +qcvs07ILw2zzdXBc5eIG09fjeRA0T7s9Qv+qVymX8EcBEsuTKXSaN2Xnf42J/190 +dMqu5koQkX9xeb5IajGsVqMupjmoASEDMoV/wbLdgtzhCupnRgn6BpesQa+UZY0W +y5HQYfYmH4DmiPjCXJFB1dNCieDs00cbf+JFxAMIfcsi9azUM2MFREn0Qx9vC25n +JLzh6pQnOihiuM+VZN0aRvdAqn+X2yjg5srIr/TxnWO3brhc0prbHJRO4eKu1eXA +1QOteLKdbqIl/kVrvcEpZR8/YOdiaQ== +-----END PUBLIC KEY----- diff --git a/test/recipes/04-test_pem_read_depr_data/rsaprivatekey.pem b/test/recipes/04-test_pem_read_depr_data/rsaprivatekey.pem new file mode 100644 index 0000000000..6510b6bfb8 --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/rsaprivatekey.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDIqX89TliznVAA +GSBKmk1HNe4xtmRnJFzyBtWfOvE6uY7mymEoj048jRacaXPLG8LRSchBNiB+nVm2 +KEro4ho6mXjHJ+0OXx8UbBDQyloqIpYrBL0I5vBoydNqLwtAocdmmtOzaz6ggzNw +ZL2oB7tNbmFKfcda9zsDYIHei3vyvb5yzseWjh0T6iA27TkM3wq+xboUiDGkfzdM +gOsMr7DQrYBUQL6Nj7bnKt0BFuqfBO0ZGwpXCQRDt3KluTa28pVgudJFuU0EQEzz +bjRYX3KtnN+fTxHIrh1K/uRRO7rngnWLLn1VbGXwsLVxfge2zwRSi352GSd0WiGk +tZUaOu2dAgMBAAECggEAJ1Q5UR3C+ulRXcOO9bBKhzOFzQ6PnTueT/2Q7xWRZE4s +OQXfhyCXV/zbOqrcfCmjxHtumYFvWwGiLLa2//AY7fVYm8gyiUeRguIvZYzToUCI +KERUfKMu6YrtOfmgffl3aJ/d8GOLsdAlS9ki5wUk6+c/gGcopKaiVWYb7i9uisPW +3zOotzrWQkpUekwnTxTIgyPqY3FzN4NF6zKw1Pk4zQ8TQ7XFoENeF7qQgIsiNdlz +UdStD9lx0hLof0B2TelNWDjL0IQKHXf4FZy+JoDyotoy3WgFPbowSr3j15cDbA6j +hdbGIduFNxpuFr6tl/P4VDvfqxqn+qo7+Rym93TeoQKBgQDrrDV58NY07UBb0y/9 +NyyQwvTYMR/q4a2A5RuJkEp7/K3ywWyWpZcxQJYH7ZNJMMmRIi5srTuF1N2UexW5 +MFDZuz9nmHkqy+xCO+mues3PyRjTIf60YFhwH8lEZbBZYJKKlHIYdeG6pGHqZGa6 +gmIKvEmPz8JWKirSJg/TfEcMKQKBgQDZ+DvVZG/UmOPJra/E2S7eCJAFE9IC8LAp +bhmqmHm9GnkUTd7U5bLrblN1IaG/519t1go74GaP9gVxdyue4ZR0XdPIJFW0iRUr +/P8yRkJFw5hIhr45xyH/a8dhbiDV1jedOkCraZ+IyXR0+GNydhBLjgCkyjTgDSzO +ezoc+UFEVQKBgQDTWWO30LD5VA9UigdOaW2RARV80ElUZkEoB87zRjBWEtuYibgt +PaFibQ5fW8Krb5JEksfZdF2d/rEcGGn54weOy6rn58g6BhkBqSM+8yihgDHAHouC +DakiHI9txFgrPz0MBGZx4z2lGQgqoRGzj3wHLqY1z1bz2Or//VxSB/DbSQKBgQDG +etkZJn0CrTn3IvaEHHQl8MwcI4E/9iWjhENQ6ckpHlsU1xfK62LyKSNL7JUaZzip +jpcBEQSzoIYyXR7WbXk+QVYg0J1OaOljhdxnzjx4xHP9ztyXRjI6IM2Mdbjmn0tD +G5FZxTNlXnRyMuBzkPijpCoH5K0jPDwJxYIUchAxhQKBgE+Hr8I5gUzrLrhqsS3e +mcRNNpzJ1jGsrQ8pjd2vGNa3+WCkvSBMj91WCpoIBvYXSX2q6XqDxqbwZogbP/Gs +XgvrHwX7s4H1r2klreAsblhzFUkQsnhDBhi0HizVNrYeyDHVxfZaSHF4fJT5wPGl +lNVmVn42G54e1Cq38XWm4A12 +-----END PRIVATE KEY----- diff --git a/test/recipes/04-test_pem_read_depr_data/rsapublickey.pem b/test/recipes/04-test_pem_read_depr_data/rsapublickey.pem new file mode 100644 index 0000000000..ac2df8a51e --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/rsapublickey.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyKl/PU5Ys51QABkgSppN +RzXuMbZkZyRc8gbVnzrxOrmO5sphKI9OPI0WnGlzyxvC0UnIQTYgfp1ZtihK6OIa +Opl4xyftDl8fFGwQ0MpaKiKWKwS9CObwaMnTai8LQKHHZprTs2s+oIMzcGS9qAe7 +TW5hSn3HWvc7A2CB3ot78r2+cs7Hlo4dE+ogNu05DN8KvsW6FIgxpH83TIDrDK+w +0K2AVEC+jY+25yrdARbqnwTtGRsKVwkEQ7dypbk2tvKVYLnSRblNBEBM8240WF9y +rZzfn08RyK4dSv7kUTu654J1iy59VWxl8LC1cX4Hts8EUot+dhkndFohpLWVGjrt +nQIDAQAB +-----END PUBLIC KEY----- diff --git a/test/recipes/04-test_pem_read_depr_data/x942params.pem b/test/recipes/04-test_pem_read_depr_data/x942params.pem new file mode 100644 index 0000000000..f4575d5605 --- /dev/null +++ b/test/recipes/04-test_pem_read_depr_data/x942params.pem @@ -0,0 +1,14 @@ +-----BEGIN X9.42 DH PARAMETERS----- +MIICLAKCAQEAyT1xEPjk7PmoJKqVWgn//oVibfMGT9eYVcVOBpdvHK5bUPDO2c3Q +IoClYdbKfiiyAGCTIsykTI+SaY4x3PsK2G5H2kk/+WjY1Qt3D60I0ltGhJZ9HH0Z +XTZ+XE58MDUPplkVeOiwgZSzUi4Cr6MhkD10ixJfH3TfrZaKsDUV76JeBiXTuYxR +TUQoeb196h0VvjsbLkAgmNR0y/z/jlxhYrJGulYHAEB1qZzFwR7puja5HkBlrcbP +Sm79jIrWTP535zHpkPp7HggjBVUTlXm2fEPEy3IxjeS2IZls4jAlU7gBajWTn5x1 +xB8puPwR3bEM3KwOtrOB7LxyeSAi7ZsuDwKCAQBeX1BH6sLltd2PfF/LLl5c87pA +NIoluZqpx7YTyTwjuKyzbCcl/12AMsXJPsRcOJToZlyfjiWqO0VHEE2BMLEEDV3J +xnKCGyxqWGDohtJvGnMQtLFG8fIDroY6pGxZvCMcX9lsFhcx6V613Livv9krGpJk +E6uJeybPYlKxznnsd0C38fF6csGQ6XA5Jk2ZMY4NUDRWKPpYn5R/aUf9QCmXEaQg +U2tb6a/GldEoB6oKad/2QwoCkzOhSOrVkzNq370hC9kdkY2jS6H+D6Vb1Kht2HvE +SqoGzlAULgju9EwRHhKQYHjl9Hvf0b6xiy0COstxXi7TlSAXNQ+wvxRdOOVyAiEA +2Y0jIv7Bg/ezKBIDgHS6DNMiVjpK3IQyKoKMdKiWdLc= +-----END X9.42 DH PARAMETERS-----