]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
crypto-util: load several more functions from libcrypto.so
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 25 Jun 2026 12:10:05 +0000 (21:10 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 27 Jun 2026 15:26:56 +0000 (00:26 +0900)
They will be used in later commits.

src/shared/crypto-util.c
src/shared/crypto-util.h

index 6fefad74c975a497763325685d65cceb4bc54117..5b1d6d813663526523045b9bba87a1bce1fca6dd 100644 (file)
@@ -17,7 +17,6 @@
 #include "strv.h"
 
 #if HAVE_OPENSSL
-#  include <openssl/core_names.h>
 #  include <openssl/kdf.h>
 #  include <openssl/provider.h>
 #  include <openssl/store.h>
@@ -73,12 +72,32 @@ DLSYM_PROTOTYPE(BIO_s_mem) = NULL;
 DLSYM_PROTOTYPE(BIO_write) = NULL;
 DLSYM_PROTOTYPE(BN_CTX_free) = NULL;
 DLSYM_PROTOTYPE(BN_CTX_new) = NULL;
+DLSYM_PROTOTYPE(BN_CTX_secure_new) = NULL;
+DLSYM_PROTOTYPE(BN_add) = NULL;
+DLSYM_PROTOTYPE(BN_add_word) = NULL;
 DLSYM_PROTOTYPE(BN_bin2bn) = NULL;
-static DLSYM_PROTOTYPE(BN_bn2bin) = NULL;
+DLSYM_PROTOTYPE(BN_bn2bin) = NULL;
+DLSYM_PROTOTYPE(BN_bn2binpad) = NULL;
 DLSYM_PROTOTYPE(BN_bn2nativepad) = NULL;
+DLSYM_PROTOTYPE(BN_check_prime) = NULL;
+DLSYM_PROTOTYPE(BN_clear_free) = NULL;
+DLSYM_PROTOTYPE(BN_cmp) = NULL;
+DLSYM_PROTOTYPE(BN_copy) = NULL;
 DLSYM_PROTOTYPE(BN_free) = NULL;
+DLSYM_PROTOTYPE(BN_is_negative) = NULL;
+DLSYM_PROTOTYPE(BN_mod_exp) = NULL;
+DLSYM_PROTOTYPE(BN_mod_inverse) = NULL;
+DLSYM_PROTOTYPE(BN_mod_lshift1_quick) = NULL;
+DLSYM_PROTOTYPE(BN_mod_mul) = NULL;
+DLSYM_PROTOTYPE(BN_mod_sqr) = NULL;
+DLSYM_PROTOTYPE(BN_mod_sub) = NULL;
+DLSYM_PROTOTYPE(BN_mul) = NULL;
 DLSYM_PROTOTYPE(BN_new) = NULL;
+DLSYM_PROTOTYPE(BN_nnmod) = NULL;
 DLSYM_PROTOTYPE(BN_num_bits) = NULL;
+DLSYM_PROTOTYPE(BN_secure_new) = NULL;
+DLSYM_PROTOTYPE(BN_set_word) = NULL;
+DLSYM_PROTOTYPE(BN_sub_word) = NULL;
 DLSYM_PROTOTYPE(CRYPTO_free) = NULL;
 DLSYM_PROTOTYPE(ECDSA_SIG_free) = NULL;
 DLSYM_PROTOTYPE(EC_GROUP_free) = NULL;
@@ -130,12 +149,13 @@ static DLSYM_PROTOTYPE(EVP_KDF_fetch) = NULL;
 static DLSYM_PROTOTYPE(EVP_KDF_free) = NULL;
 DLSYM_PROTOTYPE(EVP_MAC_CTX_free) = NULL;
 static DLSYM_PROTOTYPE(EVP_MAC_CTX_get_mac_size) = NULL;
-static DLSYM_PROTOTYPE(EVP_MAC_CTX_new) = NULL;
-static DLSYM_PROTOTYPE(EVP_MAC_fetch) = NULL;
-static DLSYM_PROTOTYPE(EVP_MAC_final) = NULL;
+DLSYM_PROTOTYPE(EVP_MAC_CTX_new) = NULL;
+DLSYM_PROTOTYPE(EVP_MAC_fetch) = NULL;
+DLSYM_PROTOTYPE(EVP_MAC_final) = NULL;
 DLSYM_PROTOTYPE(EVP_MAC_free) = NULL;
-static DLSYM_PROTOTYPE(EVP_MAC_init) = NULL;
-static DLSYM_PROTOTYPE(EVP_MAC_update) = NULL;
+DLSYM_PROTOTYPE(EVP_MAC_init) = NULL;
+DLSYM_PROTOTYPE(EVP_MAC_update) = NULL;
+DLSYM_PROTOTYPE(EVP_MD_CTX_copy_ex) = NULL;
 DLSYM_PROTOTYPE(EVP_MD_CTX_free) = NULL;
 DLSYM_PROTOTYPE(EVP_MD_CTX_get0_md) = NULL;
 DLSYM_PROTOTYPE(EVP_MD_CTX_new) = NULL;
@@ -195,11 +215,11 @@ DLSYM_PROTOTYPE(OPENSSL_sk_pop_free) = NULL;
 DLSYM_PROTOTYPE(OPENSSL_sk_push) = NULL;
 DLSYM_PROTOTYPE(OPENSSL_sk_value) = NULL;
 DLSYM_PROTOTYPE(OSSL_EC_curve_nid2name) = NULL;
-static DLSYM_PROTOTYPE(OSSL_PARAM_BLD_free) = NULL;
-static DLSYM_PROTOTYPE(OSSL_PARAM_BLD_new) = NULL;
+DLSYM_PROTOTYPE(OSSL_PARAM_BLD_free) = NULL;
+DLSYM_PROTOTYPE(OSSL_PARAM_BLD_new) = NULL;
 static DLSYM_PROTOTYPE(OSSL_PARAM_BLD_push_octet_string) = NULL;
-static DLSYM_PROTOTYPE(OSSL_PARAM_BLD_push_utf8_string) = NULL;
-static DLSYM_PROTOTYPE(OSSL_PARAM_BLD_to_param) = NULL;
+DLSYM_PROTOTYPE(OSSL_PARAM_BLD_push_utf8_string) = NULL;
+DLSYM_PROTOTYPE(OSSL_PARAM_BLD_to_param) = NULL;
 DLSYM_PROTOTYPE(OSSL_PARAM_construct_BN) = NULL;
 DLSYM_PROTOTYPE(OSSL_PARAM_construct_end) = NULL;
 DLSYM_PROTOTYPE(OSSL_PARAM_construct_octet_string) = NULL;
@@ -276,7 +296,6 @@ static DLSYM_PROTOTYPE(i2d_PublicKey) = NULL;
 DLSYM_PROTOTYPE(i2d_X509) = NULL;
 DLSYM_PROTOTYPE(i2d_X509_NAME) = NULL;
 
-DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(OSSL_PARAM_BLD*, sym_OSSL_PARAM_BLD_free, OSSL_PARAM_BLD_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(OSSL_STORE_CTX*, sym_OSSL_STORE_close, OSSL_STORE_closep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(OSSL_STORE_INFO*, sym_OSSL_STORE_INFO_free, OSSL_STORE_INFO_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(EVP_KDF*, sym_EVP_KDF_free, EVP_KDF_freep, NULL);
@@ -380,12 +399,32 @@ int dlopen_libcrypto(int log_level) {
                         DLSYM_ARG(BIO_write),
                         DLSYM_ARG(BN_CTX_free),
                         DLSYM_ARG(BN_CTX_new),
+                        DLSYM_ARG(BN_CTX_secure_new),
+                        DLSYM_ARG(BN_add),
+                        DLSYM_ARG(BN_add_word),
                         DLSYM_ARG(BN_bin2bn),
                         DLSYM_ARG(BN_bn2bin),
+                        DLSYM_ARG(BN_bn2binpad),
                         DLSYM_ARG(BN_bn2nativepad),
+                        DLSYM_ARG(BN_check_prime),
+                        DLSYM_ARG(BN_clear_free),
+                        DLSYM_ARG(BN_cmp),
+                        DLSYM_ARG(BN_copy),
                         DLSYM_ARG(BN_free),
+                        DLSYM_ARG(BN_is_negative),
+                        DLSYM_ARG(BN_mod_exp),
+                        DLSYM_ARG(BN_mod_inverse),
+                        DLSYM_ARG(BN_mod_lshift1_quick),
+                        DLSYM_ARG(BN_mod_mul),
+                        DLSYM_ARG(BN_mod_sqr),
+                        DLSYM_ARG(BN_mod_sub),
+                        DLSYM_ARG(BN_mul),
                         DLSYM_ARG(BN_new),
+                        DLSYM_ARG(BN_nnmod),
                         DLSYM_ARG(BN_num_bits),
+                        DLSYM_ARG(BN_secure_new),
+                        DLSYM_ARG(BN_set_word),
+                        DLSYM_ARG(BN_sub_word),
                         DLSYM_ARG(CRYPTO_free),
                         DLSYM_ARG(ECDSA_SIG_free),
                         DLSYM_ARG(EC_GROUP_free),
@@ -443,6 +482,7 @@ int dlopen_libcrypto(int log_level) {
                         DLSYM_ARG(EVP_MAC_free),
                         DLSYM_ARG(EVP_MAC_init),
                         DLSYM_ARG(EVP_MAC_update),
+                        DLSYM_ARG(EVP_MD_CTX_copy_ex),
                         DLSYM_ARG(EVP_MD_CTX_free),
                         DLSYM_ARG(EVP_MD_CTX_get0_md),
                         DLSYM_ARG(EVP_MD_CTX_new),
index 791b37d6be80cc46aa7b5ef60f06374d65ec1a10..bd7dda0931c448021c1d40208215eb72d97a1444 100644 (file)
@@ -47,6 +47,7 @@ int dlopen_libcrypto(int log_level);
 
 #  include <openssl/bio.h>              /* IWYU pragma: export */
 #  include <openssl/bn.h>               /* IWYU pragma: export */
+#  include <openssl/core_names.h>       /* IWYU pragma: export */
 #  include <openssl/crypto.h>           /* IWYU pragma: export */
 #  include <openssl/ec.h>               /* IWYU pragma: export */
 #  include <openssl/err.h>              /* IWYU pragma: export */
@@ -93,11 +94,32 @@ extern DLSYM_PROTOTYPE(BIO_s_mem);
 extern DLSYM_PROTOTYPE(BIO_write);
 extern DLSYM_PROTOTYPE(BN_CTX_free);
 extern DLSYM_PROTOTYPE(BN_CTX_new);
+extern DLSYM_PROTOTYPE(BN_CTX_secure_new);
+extern DLSYM_PROTOTYPE(BN_add);
+extern DLSYM_PROTOTYPE(BN_add_word);
 extern DLSYM_PROTOTYPE(BN_bin2bn);
+extern DLSYM_PROTOTYPE(BN_bn2bin);
+extern DLSYM_PROTOTYPE(BN_bn2binpad);
 extern DLSYM_PROTOTYPE(BN_bn2nativepad);
+extern DLSYM_PROTOTYPE(BN_check_prime);
+extern DLSYM_PROTOTYPE(BN_clear_free);
+extern DLSYM_PROTOTYPE(BN_cmp);
+extern DLSYM_PROTOTYPE(BN_copy);
 extern DLSYM_PROTOTYPE(BN_free);
+extern DLSYM_PROTOTYPE(BN_is_negative);
+extern DLSYM_PROTOTYPE(BN_mod_exp);
+extern DLSYM_PROTOTYPE(BN_mod_inverse);
+extern DLSYM_PROTOTYPE(BN_mod_lshift1_quick);
+extern DLSYM_PROTOTYPE(BN_mod_mul);
+extern DLSYM_PROTOTYPE(BN_mod_sqr);
+extern DLSYM_PROTOTYPE(BN_mod_sub);
+extern DLSYM_PROTOTYPE(BN_mul);
 extern DLSYM_PROTOTYPE(BN_new);
+extern DLSYM_PROTOTYPE(BN_nnmod);
 extern DLSYM_PROTOTYPE(BN_num_bits);
+extern DLSYM_PROTOTYPE(BN_secure_new);
+extern DLSYM_PROTOTYPE(BN_set_word);
+extern DLSYM_PROTOTYPE(BN_sub_word);
 extern DLSYM_PROTOTYPE(CRYPTO_free);
 extern DLSYM_PROTOTYPE(ECDSA_SIG_free);
 extern DLSYM_PROTOTYPE(EC_GROUP_free);
@@ -135,7 +157,13 @@ extern DLSYM_PROTOTYPE(EVP_EncryptFinal_ex);
 extern DLSYM_PROTOTYPE(EVP_EncryptInit_ex);
 extern DLSYM_PROTOTYPE(EVP_EncryptUpdate);
 extern DLSYM_PROTOTYPE(EVP_MAC_CTX_free);
+extern DLSYM_PROTOTYPE(EVP_MAC_CTX_new);
+extern DLSYM_PROTOTYPE(EVP_MAC_fetch);
+extern DLSYM_PROTOTYPE(EVP_MAC_final);
 extern DLSYM_PROTOTYPE(EVP_MAC_free);
+extern DLSYM_PROTOTYPE(EVP_MAC_init);
+extern DLSYM_PROTOTYPE(EVP_MAC_update);
+extern DLSYM_PROTOTYPE(EVP_MD_CTX_copy_ex);
 extern DLSYM_PROTOTYPE(EVP_MD_CTX_free);
 extern DLSYM_PROTOTYPE(EVP_MD_CTX_get0_md);
 extern DLSYM_PROTOTYPE(EVP_MD_CTX_new);
@@ -180,6 +208,10 @@ extern DLSYM_PROTOTYPE(OPENSSL_sk_pop_free);
 extern DLSYM_PROTOTYPE(OPENSSL_sk_push);
 extern DLSYM_PROTOTYPE(OPENSSL_sk_value);
 extern DLSYM_PROTOTYPE(OSSL_EC_curve_nid2name);
+extern DLSYM_PROTOTYPE(OSSL_PARAM_BLD_free);
+extern DLSYM_PROTOTYPE(OSSL_PARAM_BLD_new);
+extern DLSYM_PROTOTYPE(OSSL_PARAM_BLD_push_utf8_string);
+extern DLSYM_PROTOTYPE(OSSL_PARAM_BLD_to_param);
 extern DLSYM_PROTOTYPE(OSSL_PARAM_construct_BN);
 extern DLSYM_PROTOTYPE(OSSL_PARAM_construct_end);
 extern DLSYM_PROTOTYPE(OSSL_PARAM_construct_octet_string);
@@ -262,6 +294,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(RSA*, sym_RSA_free, RSA_freep, NULL);
 #define sym_BIO_get_mem_ptr(b, pp) sym_BIO_ctrl((b), BIO_C_GET_BUF_MEM_PTR, 0, (char *) (pp))
 #define sym_BIO_reset(b) sym_BIO_ctrl((b), BIO_CTRL_RESET, 0, NULL)
 #define sym_BN_num_bytes(a) ((sym_BN_num_bits(a) + 7) / 8)
+#define sym_BN_one(a) sym_BN_set_word(a, 1)
 #define sym_EVP_MD_CTX_get_size(ctx) sym_EVP_MD_get_size(sym_EVP_MD_CTX_get0_md(ctx))
 #define sym_EVP_MD_CTX_get0_name(ctx) sym_EVP_MD_get0_name(sym_EVP_MD_CTX_get0_md(ctx))
 #define sym_EVP_PKEY_assign_RSA(pkey, rsa) sym_EVP_PKEY_assign((pkey), EVP_PKEY_RSA, (rsa))
@@ -272,6 +305,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_MACRO_RENAME(void*, sym_OPENSSL_free, OPENSSL_f
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(ASN1_OCTET_STRING*, sym_ASN1_OCTET_STRING_free, ASN1_OCTET_STRING_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(ASN1_TIME*, sym_ASN1_TIME_free, ASN1_TIME_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(BIGNUM*, sym_BN_free, BN_freep, NULL);
+DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(BIGNUM*, sym_BN_clear_free, BN_clear_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(BIO*, sym_BIO_free_all, BIO_free_allp, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(BIO*, sym_BIO_free, BIO_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(BN_CTX*, sym_BN_CTX_free, BN_CTX_freep, NULL);
@@ -286,6 +320,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(EVP_MD_CTX*, sym_EVP_MD_CTX_free, EVP_MD
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(EVP_MD*, sym_EVP_MD_free, EVP_MD_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(EVP_PKEY_CTX*, sym_EVP_PKEY_CTX_free, EVP_PKEY_CTX_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(EVP_PKEY*, sym_EVP_PKEY_free, EVP_PKEY_freep, NULL);
+DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(OSSL_PARAM_BLD*, sym_OSSL_PARAM_BLD_free, OSSL_PARAM_BLD_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(OSSL_PARAM*, sym_OSSL_PARAM_free, OSSL_PARAM_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(PKCS7_SIGNER_INFO*, sym_PKCS7_SIGNER_INFO_free, PKCS7_SIGNER_INFO_freep, NULL);
 DEFINE_TRIVIAL_CLEANUP_FUNC_FULL_RENAME(PKCS7*, sym_PKCS7_free, PKCS7_freep, NULL);