mirror of
https://github.com/openssl/openssl.git
synced 2025-12-20 01:22:19 +08:00
Add engine stubs test
This test tries to use all stub macros and compare return values to verify that OPENSSL_ENGINE_STUBS define works. Fixes openssl/project#1762 Signed-off-by: Milan Broz <gmazyland@gmail.com> Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Norbert Pocs <norbertp@openssl.org> Reviewed-by: Neil Horman <nhorman@openssl.org> (Merged from https://github.com/openssl/openssl/pull/29414)
This commit is contained in:
@@ -70,7 +70,8 @@ IF[{- !$disabled{tests} -}]
|
||||
ca_internals_test bio_tfo_test membio_test bio_dgram_test list_test \
|
||||
fips_version_test x509_test hpke_test pairwise_fail_test \
|
||||
nodefltctxtest evp_xof_test x509_load_cert_file_test bio_meth_test \
|
||||
x509_acert_test x509_req_test strtoultest bio_pw_callback_test
|
||||
x509_acert_test x509_req_test strtoultest bio_pw_callback_test \
|
||||
engine_stubs_test
|
||||
|
||||
IF[{- !$disabled{'rpk'} -}]
|
||||
PROGRAMS{noinst}=rpktest
|
||||
@@ -1314,6 +1315,10 @@ ENDIF
|
||||
INCLUDE[bio_pw_callback_test]=../include ../apps/include
|
||||
DEPEND[bio_pw_callback_test]=../libcrypto libtestutil.a
|
||||
|
||||
SOURCE[engine_stubs_test]=engine_stubs_test.c
|
||||
INCLUDE[engine_stubs_test]=../include ../apps/include
|
||||
DEPEND[engine_stubs_test]=../libcrypto libtestutil.a
|
||||
|
||||
{-
|
||||
use File::Spec::Functions;
|
||||
use File::Basename;
|
||||
|
||||
311
test/engine_stubs_test.c
Normal file
311
test/engine_stubs_test.c
Normal file
@@ -0,0 +1,311 @@
|
||||
/*
|
||||
* Copyright 2025 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
|
||||
*/
|
||||
|
||||
#define OPENSSL_SUPPRESS_DEPRECATED
|
||||
#define OPENSSL_ENGINE_STUBS /* switch on stub macros */
|
||||
|
||||
#include <openssl/engine.h>
|
||||
#include "testutil.h"
|
||||
|
||||
/* Test stubs for removed ENGINE_* API */
|
||||
static int test_engine_stubs(void)
|
||||
{
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
ENGINE_load_builtin_engines();
|
||||
ENGINE_set_table_flags(0);
|
||||
ENGINE_unregister_RSA(NULL);
|
||||
ENGINE_register_all_RSA();
|
||||
ENGINE_unregister_DSA(NULL);
|
||||
ENGINE_register_all_DSA();
|
||||
ENGINE_unregister_EC(NULL);
|
||||
ENGINE_register_all_EC();
|
||||
ENGINE_unregister_DH(NULL);
|
||||
ENGINE_register_all_DH();
|
||||
ENGINE_unregister_RAND(NULL);
|
||||
ENGINE_register_all_RAND();
|
||||
ENGINE_unregister_digests(NULL);
|
||||
ENGINE_register_all_digests();
|
||||
ENGINE_unregister_pkey_meths(NULL);
|
||||
ENGINE_register_all_pkey_meths();
|
||||
ENGINE_unregister_pkey_asn1_meths(NULL);
|
||||
ENGINE_register_all_pkey_asn1_meths();
|
||||
ENGINE_unregister_ciphers(NULL);
|
||||
ENGINE_register_all_ciphers();
|
||||
ENGINE_add_conf_module();
|
||||
|
||||
if (!TEST_ptr_null(ENGINE_get_first()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_last()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_next(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_prev(NULL)))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_add(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_remove(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_by_id(NULL)))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_get_table_flags(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_RSA(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_DSA(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_EC(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_DH(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_RAND(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_ciphers(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_digests(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_pkey_meths(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_pkey_asn1_meths(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_complete(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_register_all_complete(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_ctrl(NULL, 0, 0, NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_cmd_is_executable(NULL, 0), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_ctrl_cmd(NULL, NULL, 0, NULL, NULL, 0), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_ctrl_cmd_string(NULL, NULL, NULL, 0), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_new()))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_free(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_up_ref(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_id(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_name(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_RSA(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_DSA(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_EC(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_DH(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_RAND(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_destroy_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_init_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_finish_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_ctrl_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_load_privkey_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_load_pubkey_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_load_ssl_client_cert_function(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_ciphers(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_digests(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_pkey_meths(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_pkey_asn1_meths(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_flags(NULL, 0), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_cmd_defns(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_get_ex_new_index(0, NULL, NULL, NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_ex_data(NULL, 0, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_ex_data(NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_id(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_name(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_RSA(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_DSA(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_EC(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_DH(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_RAND(NULL)))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_destroy_function(NULL) == (ENGINE_GEN_INT_FUNC_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_init_function(NULL) == (ENGINE_GEN_INT_FUNC_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_finish_function(NULL) == (ENGINE_GEN_INT_FUNC_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_ctrl_function(NULL) == (ENGINE_CTRL_FUNC_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_load_privkey_function(NULL) == (ENGINE_LOAD_KEY_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_load_pubkey_function(NULL) == (ENGINE_LOAD_KEY_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_ssl_client_cert_function(NULL) == (ENGINE_SSL_CLIENT_CERT_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_ciphers(NULL) == (ENGINE_CIPHERS_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_digests(NULL) == (ENGINE_DIGESTS_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_pkey_meths(NULL) == (ENGINE_PKEY_METHS_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_true(ENGINE_get_pkey_asn1_meths(NULL) == (ENGINE_PKEY_ASN1_METHS_PTR)NULL))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_cipher(NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_digest(NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_pkey_meth(NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_pkey_asn1_meth(NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_pkey_asn1_meth_str(NULL, NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_pkey_asn1_find_str(NULL, NULL, 0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_cmd_defns(NULL)))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_get_flags(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_init(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_finish(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_load_private_key(NULL, NULL, NULL, NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_load_public_key(NULL, NULL, NULL, NULL)))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_load_ssl_client_cert(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_default_RSA()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_default_DSA()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_default_EC()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_default_DH()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_default_RAND()))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_cipher_engine(0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_digest_engine(0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_pkey_meth_engine(0)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_pkey_asn1_meth_engine(0)))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_RSA(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_string(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_DSA(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_EC(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_DH(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_RAND(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_ciphers(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_digests(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_pkey_meths(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default_pkey_asn1_meths(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_set_default(NULL, 0), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(ENGINE_get_static_state()))
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
||||
ENGINE_cleanup();
|
||||
#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__DragonFly__)
|
||||
ENGINE_setup_bsd_cryptodev();
|
||||
#endif
|
||||
if (!TEST_int_eq(ENGINE_load_openssl(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_load_dynamic(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_load_cryptodev(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_load_rdrand(), 0))
|
||||
return 0;
|
||||
#ifndef OPENSSL_NO_STATIC_ENGINE
|
||||
if (!TEST_int_eq(ENGINE_load_padlock(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_load_capi(), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(ENGINE_load_afalg(), 0))
|
||||
return 0;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Test stubs for other removed API */
|
||||
static int test_other_stubs(void)
|
||||
{
|
||||
#ifndef OPENSSL_NO_DEPRECATED_3_0
|
||||
if (!TEST_int_eq(ERR_load_ENGINE_strings(), 1))
|
||||
return 0;
|
||||
|
||||
if (!TEST_int_eq(EVP_PKEY_set1_engine(NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(EVP_PKEY_get0_engine(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(DH_get0_engine(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(RSA_get0_engine(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(DSA_get0_engine(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(EC_KEY_get0_engine(NULL)))
|
||||
return 0;
|
||||
if (!TEST_ptr_null(OSSL_STORE_LOADER_get0_engine(NULL)))
|
||||
return 0;
|
||||
if (!TEST_int_eq(RAND_set_rand_engine(NULL), 0))
|
||||
return 0;
|
||||
#endif
|
||||
if (!TEST_int_eq(TS_CONF_set_crypto_device(NULL, NULL, NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(TS_CONF_set_default_engine(NULL), 0))
|
||||
return 0;
|
||||
if (!TEST_int_eq(SSL_CTX_set_client_cert_engine(NULL, NULL), 0))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int setup_tests(void)
|
||||
{
|
||||
ADD_TEST(test_engine_stubs);
|
||||
ADD_TEST(test_other_stubs);
|
||||
return 1;
|
||||
}
|
||||
12
test/recipes/92-test_engine_stubs.t
Normal file
12
test/recipes/92-test_engine_stubs.t
Normal file
@@ -0,0 +1,12 @@
|
||||
#! /usr/bin/env perl
|
||||
# Copyright 2025 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::Simple;
|
||||
|
||||
simple_test("test_engine_stubs", "engine_stubs_test");
|
||||
Reference in New Issue
Block a user