mirror of
https://github.com/openssl/openssl.git
synced 2024-11-21 01:15:20 +08:00
tests: Add test for X509_dup with ENGINE based key
Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16648)
This commit is contained in:
parent
ef2fb64f9d
commit
bf585c9c07
@ -352,6 +352,62 @@ static int test_redirect(void)
|
|||||||
OPENSSL_free(tmp);
|
OPENSSL_free(tmp);
|
||||||
return to_return;
|
return to_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int test_x509_dup_w_engine(void)
|
||||||
|
{
|
||||||
|
ENGINE *e = NULL;
|
||||||
|
X509 *cert = NULL, *dupcert = NULL;
|
||||||
|
int ret = 0;
|
||||||
|
BIO *b = NULL;
|
||||||
|
RSA_METHOD *rsameth = NULL;
|
||||||
|
|
||||||
|
if (!TEST_ptr(b = BIO_new_file(test_get_argument(0), "r"))
|
||||||
|
|| !TEST_ptr(cert = PEM_read_bio_X509(b, NULL, NULL, NULL)))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
/* Dup without an engine */
|
||||||
|
if (!TEST_ptr(dupcert = X509_dup(cert)))
|
||||||
|
goto err;
|
||||||
|
X509_free(dupcert);
|
||||||
|
dupcert = NULL;
|
||||||
|
X509_free(cert);
|
||||||
|
cert = NULL;
|
||||||
|
|
||||||
|
/* Create a test ENGINE */
|
||||||
|
if (!TEST_ptr(e = ENGINE_new())
|
||||||
|
|| !TEST_true(ENGINE_set_id(e, "Test dummy engine"))
|
||||||
|
|| !TEST_true(ENGINE_set_name(e, "Test dummy engine")))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
if (!TEST_ptr(rsameth = RSA_meth_dup(RSA_get_default_method())))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
ENGINE_set_RSA(e, rsameth);
|
||||||
|
|
||||||
|
if (!TEST_true(ENGINE_set_default_RSA(e)))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
if (!TEST_int_ge(BIO_seek(b, 0), 0)
|
||||||
|
|| !TEST_ptr(cert = PEM_read_bio_X509(b, NULL, NULL, NULL)))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
/* Dup with an engine set on the key */
|
||||||
|
if (!TEST_ptr(dupcert = X509_dup(cert)))
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
ret = 1;
|
||||||
|
|
||||||
|
err:
|
||||||
|
X509_free(cert);
|
||||||
|
X509_free(dupcert);
|
||||||
|
if (e != NULL) {
|
||||||
|
ENGINE_unregister_RSA(e);
|
||||||
|
ENGINE_free(e);
|
||||||
|
}
|
||||||
|
RSA_meth_free(rsameth);
|
||||||
|
BIO_free(b);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int global_init(void)
|
int global_init(void)
|
||||||
@ -363,13 +419,27 @@ int global_init(void)
|
|||||||
return OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL);
|
return OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OPT_TEST_DECLARE_USAGE("certfile\n")
|
||||||
|
|
||||||
int setup_tests(void)
|
int setup_tests(void)
|
||||||
{
|
{
|
||||||
#ifdef OPENSSL_NO_ENGINE
|
#ifdef OPENSSL_NO_ENGINE
|
||||||
TEST_note("No ENGINE support");
|
TEST_note("No ENGINE support");
|
||||||
#else
|
#else
|
||||||
|
int n;
|
||||||
|
|
||||||
|
if (!test_skip_common_options()) {
|
||||||
|
TEST_error("Error parsing test options\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = test_get_argument_count();
|
||||||
|
if (n == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
ADD_TEST(test_engines);
|
ADD_TEST(test_engines);
|
||||||
ADD_TEST(test_redirect);
|
ADD_TEST(test_redirect);
|
||||||
|
ADD_TEST(test_x509_dup_w_engine);
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -10,13 +10,16 @@
|
|||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use OpenSSL::Test;
|
use OpenSSL::Test qw/:DEFAULT srctop_file/;
|
||||||
use OpenSSL::Test::Utils;
|
use OpenSSL::Test::Utils;
|
||||||
|
|
||||||
setup("test_engine");
|
setup("test_engine");
|
||||||
|
|
||||||
|
my @path = qw(test certs);
|
||||||
|
|
||||||
plan skip_all => "engines are deprecated"
|
plan skip_all => "engines are deprecated"
|
||||||
if disabled('deprecated-3.0');
|
if disabled('deprecated-3.0');
|
||||||
|
|
||||||
plan tests => 1;
|
plan tests => 1;
|
||||||
ok(run(test(["enginetest"])), "running enginetest");
|
ok(run(test(["enginetest", srctop_file(@path, "root-cert.pem")])),
|
||||||
|
"running enginetest");
|
||||||
|
Loading…
Reference in New Issue
Block a user