This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-crypto.git
The following commit(s) were added to refs/heads/master by this push:
new 03f88de6 Allow for renamed OpenSSL3 methods
03f88de6 is described below
commit 03f88de6b5d37e7c426a9ce389d67ef05c5f7f34
Author: Sebb <[email protected]>
AuthorDate: Wed Nov 8 23:51:10 2023 +0000
Allow for renamed OpenSSL3 methods
---
.../org/apache/commons/crypto/cipher/OpenSslNative.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/src/main/native/org/apache/commons/crypto/cipher/OpenSslNative.c
b/src/main/native/org/apache/commons/crypto/cipher/OpenSslNative.c
index 44da3455..f2408f14 100644
--- a/src/main/native/org/apache/commons/crypto/cipher/OpenSslNative.c
+++ b/src/main/native/org/apache/commons/crypto/cipher/OpenSslNative.c
@@ -30,6 +30,7 @@
#include "org_apache_commons_crypto_cipher_OpenSslNative.h"
#ifdef UNIX
+static unsigned long (*dlsym_OpenSSL_version_num) (void);
static EVP_CIPHER_CTX * (*dlsym_EVP_CIPHER_CTX_new)(void);
static void (*dlsym_EVP_CIPHER_CTX_free)(EVP_CIPHER_CTX *);
static int (*dlsym_EVP_CIPHER_CTX_set_padding)(EVP_CIPHER_CTX *, int);
@@ -55,6 +56,8 @@ static EVP_CIPHER * (*dlsym_EVP_aes_128_gcm)(void);
#endif
#ifdef WINDOWS
+typedef unsigned long (__cdecl *__dlsym_OpenSSL_version_num) (void);
+static __dlsym_OpenSSL_version_num dlsym_OpenSSL_version_num;
typedef EVP_CIPHER_CTX * (__cdecl *__dlsym_EVP_CIPHER_CTX_new)(void);
typedef void (__cdecl *__dlsym_EVP_CIPHER_CTX_free)(EVP_CIPHER_CTX *);
typedef int (__cdecl *__dlsym_EVP_CIPHER_CTX_set_padding)(EVP_CIPHER_CTX *,
int);
@@ -135,6 +138,8 @@ JNIEXPORT void JNICALL
Java_org_apache_commons_crypto_cipher_OpenSslNative_initI
#ifdef UNIX
dlerror(); // Clear any existing error
#endif
+ LOAD_DYNAMIC_SYMBOL_FALLBACK(__dlsym_OpenSSL_version_num,
dlsym_OpenSSL_version_num, \
+ env, openssl, "OpenSSL_version_num", "SSLeay");
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_new, dlsym_EVP_CIPHER_CTX_new, \
env, openssl, "EVP_CIPHER_CTX_new");
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_free, dlsym_EVP_CIPHER_CTX_free,
\
@@ -143,12 +148,21 @@ JNIEXPORT void JNICALL
Java_org_apache_commons_crypto_cipher_OpenSslNative_initI
env, openssl, "EVP_CIPHER_CTX_set_padding");
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_ctrl, dlsym_EVP_CIPHER_CTX_ctrl,
\
env, openssl, "EVP_CIPHER_CTX_ctrl");
+ char *block_size_name;
+ char *flags_name;
+ if (dlsym_OpenSSL_version_num() < VERSION_3_0_X) {
+ block_size_name = "EVP_CIPHER_CTX_block_size";
+ flags_name = "EVP_CIPHER_flags";
+ } else {
+ block_size_name = "EVP_CIPHER_CTX_get_block_size";
+ flags_name = "EVP_CIPHER_get_flags";
+ }
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_block_size,
dlsym_EVP_CIPHER_CTX_block_size, \
- env, openssl, "EVP_CIPHER_CTX_block_size");
+ env, openssl, block_size_name);
+ LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_flags, dlsym_EVP_CIPHER_flags, \
+ env, openssl, flags_name);
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_cipher,
dlsym_EVP_CIPHER_CTX_cipher, \
env, openssl, "EVP_CIPHER_CTX_cipher");
- LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_flags, dlsym_EVP_CIPHER_flags, \
- env, openssl, "EVP_CIPHER_flags");
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_test_flags,
dlsym_EVP_CIPHER_CTX_test_flags, \
env, openssl, "EVP_CIPHER_CTX_test_flags");
LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CipherInit_ex, dlsym_EVP_CipherInit_ex, \