diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/apk.c | 26 | ||||
-rw-r--r-- | src/apk_openssl.h | 27 |
2 files changed, 28 insertions, 25 deletions
@@ -20,11 +20,6 @@ #include <unistd.h> #include <sys/stat.h> -#include <openssl/crypto.h> -#ifndef OPENSSL_NO_ENGINE -#include <openssl/engine.h> -#endif - #include <fetch.h> #include "apk_defines.h" @@ -358,25 +353,6 @@ static int parse_options(int argc, char **argv, struct apk_applet *applet, void return 0; } -static void fini_openssl(void) -{ - EVP_cleanup(); -#ifndef OPENSSL_NO_ENGINE - ENGINE_cleanup(); -#endif - CRYPTO_cleanup_all_ex_data(); -} - -static void init_openssl(void) -{ - atexit(fini_openssl); - OpenSSL_add_all_algorithms(); -#ifndef OPENSSL_NO_ENGINE - ENGINE_load_builtin_engines(); - ENGINE_register_all_complete(); -#endif -} - static void setup_automatic_flags(struct apk_ctx *ac) { const char *tmp; @@ -449,7 +425,7 @@ int main(int argc, char **argv) ctx.force |= applet->forced_force; } - init_openssl(); + apk_openssl_init(); setup_automatic_flags(&ctx); fetchConnectionCacheInit(32, 4); diff --git a/src/apk_openssl.h b/src/apk_openssl.h index 4ee6da2..c0abdf2 100644 --- a/src/apk_openssl.h +++ b/src/apk_openssl.h @@ -11,7 +11,11 @@ #define APK_SSL_COMPAT_H #include <openssl/opensslv.h> +#include <openssl/crypto.h> #include <openssl/evp.h> +#ifndef OPENSSL_NO_ENGINE +#include <openssl/engine.h> +#endif #if OPENSSL_VERSION_NUMBER < 0x1010000fL || (defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL) @@ -25,6 +29,29 @@ static inline void EVP_MD_CTX_free(EVP_MD_CTX *mdctx) return EVP_MD_CTX_destroy(mdctx); } +static inline void apk_openssl_cleanup(void) +{ + EVP_cleanup(); +#ifndef OPENSSL_NO_ENGINE + ENGINE_cleanup(); +#endif + CRYPTO_cleanup_all_ex_data(); +} + +static inline void apk_openssl_init(void) +{ + atexit(apk_openssl_cleanup); + OpenSSL_add_all_algorithms(); +#ifndef OPENSSL_NO_ENGINE + ENGINE_load_builtin_engines(); + ENGINE_register_all_complete(); +#endif +} + +#else + +static inline void apk_openssl_init(void) {} + #endif #endif |