|
24 | 24 |
|
25 | 25 | #include "org_apache_hadoop_crypto_OpensslCipher.h"
|
26 | 26 |
|
| 27 | +/* |
| 28 | + # OpenSSL ABI Symbols |
| 29 | +
|
| 30 | + Available on all OpenSSL versions: |
| 31 | +
|
| 32 | + | Function | 1.0 | 1.1 | 3.0 | |
| 33 | + |--------------------------------|-----|-----|-----| |
| 34 | + | EVP_CIPHER_CTX_new | YES | YES | YES | |
| 35 | + | EVP_CIPHER_CTX_free | YES | YES | YES | |
| 36 | + | EVP_CIPHER_CTX_set_padding | YES | YES | YES | |
| 37 | + | EVP_CIPHER_CTX_test_flags | YES | YES | YES | |
| 38 | + | EVP_CipherInit_ex | YES | YES | YES | |
| 39 | + | EVP_CipherUpdate | YES | YES | YES | |
| 40 | + | EVP_CipherFinal_ex | YES | YES | YES | |
| 41 | + | ENGINE_by_id | YES | YES | YES | |
| 42 | + | ENGINE_free | YES | YES | YES | |
| 43 | + | EVP_aes_256_ctr | YES | YES | YES | |
| 44 | + | EVP_aes_128_ctr | YES | YES | YES | |
| 45 | +
|
| 46 | + Available on old versions: |
| 47 | +
|
| 48 | + | Function | 1.0 | 1.1 | 3.0 | |
| 49 | + |--------------------------------|-----|-----|-----| |
| 50 | + | EVP_CIPHER_CTX_cleanup | YES | --- | --- | |
| 51 | + | EVP_CIPHER_CTX_init | YES | --- | --- | |
| 52 | + | EVP_CIPHER_CTX_block_size | YES | YES | --- | |
| 53 | + | EVP_CIPHER_CTX_encrypting | --- | YES | --- | |
| 54 | +
|
| 55 | + Available on new versions: |
| 56 | +
|
| 57 | + | Function | 1.0 | 1.1 | 3.0 | |
| 58 | + |--------------------------------|-----|-----|-----| |
| 59 | + | OPENSSL_init_crypto | --- | YES | YES | |
| 60 | + | EVP_CIPHER_CTX_reset | --- | YES | YES | |
| 61 | + | EVP_CIPHER_CTX_get_block_size | --- | --- | YES | |
| 62 | + | EVP_CIPHER_CTX_is_encrypting | --- | --- | YES | |
| 63 | +
|
| 64 | + Optionally available on new versions: |
| 65 | +
|
| 66 | + | Function | 1.0 | 1.1 | 3.0 | |
| 67 | + |--------------------------------|-----|-----|-----| |
| 68 | + | EVP_sm4_ctr | --- | opt | opt | |
| 69 | +
|
| 70 | + Name changes: |
| 71 | +
|
| 72 | + | < 3.0 name | >= 3.0 name | |
| 73 | + |----------------------------|--------------------------------| |
| 74 | + | EVP_CIPHER_CTX_block_size | EVP_CIPHER_CTX_get_block_size | |
| 75 | + | EVP_CIPHER_CTX_encrypting | EVP_CIPHER_CTX_is_encrypting | |
| 76 | + */ |
| 77 | + |
27 | 78 | #ifdef UNIX
|
28 | 79 | static EVP_CIPHER_CTX * (*dlsym_EVP_CIPHER_CTX_new)(void);
|
29 | 80 | static void (*dlsym_EVP_CIPHER_CTX_free)(EVP_CIPHER_CTX *);
|
@@ -106,6 +157,15 @@ static __dlsym_ENGINE_free dlsym_ENGINE_free;
|
106 | 157 | static HMODULE openssl;
|
107 | 158 | #endif
|
108 | 159 |
|
| 160 | +// names changed in OpenSSL 3 ABI - see History section in EVP_EncryptInit(3) |
| 161 | +#if OPENSSL_VERSION_NUMBER >= 0x30000000L |
| 162 | +#define CIPHER_CTX_BLOCK_SIZE "EVP_CIPHER_CTX_get_block_size" |
| 163 | +#define CIPHER_CTX_ENCRYPTING "EVP_CIPHER_CTX_is_encrypting" |
| 164 | +#else |
| 165 | +#define CIPHER_CTX_BLOCK_SIZE "EVP_CIPHER_CTX_block_size" |
| 166 | +#define CIPHER_CTX_ENCRYPTING "EVP_CIPHER_CTX_encrypting" |
| 167 | +#endif /* OPENSSL_VERSION_NUMBER >= 0x30000000L */ |
| 168 | + |
109 | 169 | static void loadAesCtr(JNIEnv *env)
|
110 | 170 | {
|
111 | 171 | #ifdef UNIX
|
@@ -170,10 +230,10 @@ JNIEXPORT void JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_initIDs
|
170 | 230 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_test_flags, env, openssl, \
|
171 | 231 | "EVP_CIPHER_CTX_test_flags");
|
172 | 232 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_block_size, env, openssl, \
|
173 |
| - "EVP_CIPHER_CTX_block_size"); |
| 233 | + CIPHER_CTX_BLOCK_SIZE); |
174 | 234 | #if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
175 | 235 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_encrypting, env, openssl, \
|
176 |
| - "EVP_CIPHER_CTX_encrypting"); |
| 236 | + CIPHER_CTX_ENCRYPTING); |
177 | 237 | #endif
|
178 | 238 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CipherInit_ex, env, openssl, \
|
179 | 239 | "EVP_CipherInit_ex");
|
@@ -209,11 +269,11 @@ JNIEXPORT void JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_initIDs
|
209 | 269 | openssl, "EVP_CIPHER_CTX_test_flags");
|
210 | 270 | LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_block_size, \
|
211 | 271 | dlsym_EVP_CIPHER_CTX_block_size, env, \
|
212 |
| - openssl, "EVP_CIPHER_CTX_block_size"); |
| 272 | + openssl, CIPHER_CTX_BLOCK_SIZE); |
213 | 273 | #if OPENSSL_VERSION_NUMBER >= 0x10100000L
|
214 | 274 | LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_encrypting, \
|
215 | 275 | dlsym_EVP_CIPHER_CTX_encrypting, env, \
|
216 |
| - openssl, "EVP_CIPHER_CTX_encrypting"); |
| 276 | + openssl, CIPHER_CTX_ENCRYPTING); |
217 | 277 | #endif
|
218 | 278 | LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CipherInit_ex, dlsym_EVP_CipherInit_ex, \
|
219 | 279 | env, openssl, "EVP_CipherInit_ex");
|
|
0 commit comments