|
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 *); |
@@ -87,6 +138,15 @@ static __dlsym_EVP_aes_128_ctr dlsym_EVP_aes_128_ctr; |
87 | 138 | static HMODULE openssl; |
88 | 139 | #endif |
89 | 140 |
|
| 141 | +// names changed in OpenSSL 3 ABI - see History section in EVP_EncryptInit(3) |
| 142 | +#if OPENSSL_VERSION_NUMBER >= 0x30000000L |
| 143 | +#define CIPHER_CTX_BLOCK_SIZE "EVP_CIPHER_CTX_get_block_size" |
| 144 | +#define CIPHER_CTX_ENCRYPTING "EVP_CIPHER_CTX_is_encrypting" |
| 145 | +#else |
| 146 | +#define CIPHER_CTX_BLOCK_SIZE "EVP_CIPHER_CTX_block_size" |
| 147 | +#define CIPHER_CTX_ENCRYPTING "EVP_CIPHER_CTX_encrypting" |
| 148 | +#endif /* OPENSSL_VERSION_NUMBER >= 0x30000000L */ |
| 149 | + |
90 | 150 | static void loadAesCtr(JNIEnv *env) |
91 | 151 | { |
92 | 152 | #ifdef UNIX |
@@ -142,10 +202,10 @@ JNIEXPORT void JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_initIDs |
142 | 202 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_test_flags, env, openssl, \ |
143 | 203 | "EVP_CIPHER_CTX_test_flags"); |
144 | 204 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_block_size, env, openssl, \ |
145 | | - "EVP_CIPHER_CTX_block_size"); |
| 205 | + CIPHER_CTX_BLOCK_SIZE); |
146 | 206 | #if OPENSSL_VERSION_NUMBER >= 0x10100000L |
147 | 207 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CIPHER_CTX_encrypting, env, openssl, \ |
148 | | - "EVP_CIPHER_CTX_encrypting"); |
| 208 | + CIPHER_CTX_ENCRYPTING); |
149 | 209 | #endif |
150 | 210 | LOAD_DYNAMIC_SYMBOL(dlsym_EVP_CipherInit_ex, env, openssl, \ |
151 | 211 | "EVP_CipherInit_ex"); |
@@ -173,11 +233,11 @@ JNIEXPORT void JNICALL Java_org_apache_hadoop_crypto_OpensslCipher_initIDs |
173 | 233 | openssl, "EVP_CIPHER_CTX_test_flags"); |
174 | 234 | LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_block_size, \ |
175 | 235 | dlsym_EVP_CIPHER_CTX_block_size, env, \ |
176 | | - openssl, "EVP_CIPHER_CTX_block_size"); |
| 236 | + openssl, CIPHER_CTX_BLOCK_SIZE); |
177 | 237 | #if OPENSSL_VERSION_NUMBER >= 0x10100000L |
178 | 238 | LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CIPHER_CTX_encrypting, \ |
179 | 239 | dlsym_EVP_CIPHER_CTX_encrypting, env, \ |
180 | | - openssl, "EVP_CIPHER_CTX_encrypting"); |
| 240 | + openssl, CIPHER_CTX_ENCRYPTING); |
181 | 241 | #endif |
182 | 242 | LOAD_DYNAMIC_SYMBOL(__dlsym_EVP_CipherInit_ex, dlsym_EVP_CipherInit_ex, \ |
183 | 243 | env, openssl, "EVP_CipherInit_ex"); |
|
0 commit comments