Line 0
Link Here
|
|
|
1 |
--- src/core/common/crypthelper.cpp.orig 2017-08-16 12:24:03 UTC |
2 |
+++ src/core/common/crypthelper.cpp |
3 |
@@ -291,22 +291,33 @@ CryptHelper::AES128Encrypt(const unsigned char *keyDat |
4 |
outCipher.resize(cipherSize); |
5 |
|
6 |
#ifdef HAVE_OPENSSL |
7 |
- EVP_CIPHER_CTX encryptCtx; |
8 |
- EVP_CIPHER_CTX_init(&encryptCtx); |
9 |
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L |
10 |
+ EVP_CIPHER_CTX *encryptCtx = EVP_CIPHER_CTX_new(); |
11 |
+ #else |
12 |
+ EVP_CIPHER_CTX _encryptCtx; |
13 |
+ EVP_CIPHER_CTX *encryptCtx; |
14 |
+ encryptCtx = &_encryptCtx; |
15 |
+ #endif // OPENSSL_VERSION_NUMBER >= 0x10100000L |
16 |
+ |
17 |
+ EVP_CIPHER_CTX_init(encryptCtx); |
18 |
int outCipherSize = cipherSize; |
19 |
|
20 |
- int success = EVP_EncryptInit(&encryptCtx, EVP_aes_128_cbc(), key, iv); |
21 |
- EVP_CIPHER_CTX_set_padding(&encryptCtx, 0); |
22 |
+ int success = EVP_EncryptInit(encryptCtx, EVP_aes_128_cbc(), key, iv); |
23 |
+ EVP_CIPHER_CTX_set_padding(encryptCtx, 0); |
24 |
if (success) { |
25 |
- success = EVP_EncryptUpdate(&encryptCtx, &outCipher[0], &outCipherSize, paddedPlainStr, paddedPlainSize); |
26 |
+ success = EVP_EncryptUpdate(encryptCtx, &outCipher[0], &outCipherSize, paddedPlainStr, paddedPlainSize); |
27 |
|
28 |
if (success && outCipherSize) { |
29 |
// Since padding is off, this will not modify the cipher. However, parameters need to be set. |
30 |
- EVP_EncryptFinal(&encryptCtx, &outCipher[0], &outCipherSize); |
31 |
+ EVP_EncryptFinal(encryptCtx, &outCipher[0], &outCipherSize); |
32 |
retVal = true; |
33 |
} |
34 |
} else |
35 |
outCipher.clear(); |
36 |
+ |
37 |
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L |
38 |
+ EVP_CIPHER_CTX_free(encryptCtx); |
39 |
+ #endif // OPENSSL_VERSION_NUMBER >= 0x10100000L |
40 |
#else |
41 |
gcry_cipher_hd_t hd; |
42 |
gcry_error_t err = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, 0); |
43 |
@@ -338,22 +349,33 @@ CryptHelper::AES128Decrypt(const unsigned char *keyDat |
44 |
BytesToKey(keyData, keySize, key, iv); |
45 |
outPlain.resize(cipherSize); |
46 |
#ifdef HAVE_OPENSSL |
47 |
- EVP_CIPHER_CTX decryptCtx; |
48 |
- EVP_CIPHER_CTX_init(&decryptCtx); |
49 |
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L |
50 |
+ EVP_CIPHER_CTX *decryptCtx = EVP_CIPHER_CTX_new(); |
51 |
+ #else |
52 |
+ EVP_CIPHER_CTX _decryptCtx; |
53 |
+ EVP_CIPHER_CTX *decryptCtx; |
54 |
+ decryptCtx = &_decryptCtx; |
55 |
+ #endif // OPENSSL_VERSION_NUMBER >= 0x10100000L |
56 |
+ |
57 |
+ EVP_CIPHER_CTX_init(decryptCtx); |
58 |
int outPlainSize = cipherSize; |
59 |
|
60 |
- int success = EVP_DecryptInit(&decryptCtx, EVP_aes_128_cbc(), key, iv); |
61 |
- EVP_CIPHER_CTX_set_padding(&decryptCtx, 0); |
62 |
+ int success = EVP_DecryptInit(decryptCtx, EVP_aes_128_cbc(), key, iv); |
63 |
+ EVP_CIPHER_CTX_set_padding(decryptCtx, 0); |
64 |
if (success) { |
65 |
- success = EVP_DecryptUpdate(&decryptCtx, (unsigned char *)&outPlain[0], &outPlainSize, cipher, cipherSize); |
66 |
+ success = EVP_DecryptUpdate(decryptCtx, (unsigned char *)&outPlain[0], &outPlainSize, cipher, cipherSize); |
67 |
|
68 |
if (success && outPlainSize) { |
69 |
// Since padding is off, this will not modify the plain text. However, parameters need to be set. |
70 |
- EVP_DecryptFinal(&decryptCtx, (unsigned char *)outPlain.c_str(), &outPlainSize); |
71 |
+ EVP_DecryptFinal(decryptCtx, (unsigned char *)outPlain.c_str(), &outPlainSize); |
72 |
retVal = true; |
73 |
} |
74 |
} else |
75 |
outPlain.clear(); |
76 |
+ |
77 |
+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L |
78 |
+ EVP_CIPHER_CTX_free(decryptCtx); |
79 |
+ #endif // OPENSSL_VERSION_NUMBER >= 0x10100000L |
80 |
#else |
81 |
gcry_cipher_hd_t hd; |
82 |
gcry_error_t err = gcry_cipher_open(&hd, GCRY_CIPHER_AES128, GCRY_CIPHER_MODE_CBC, 0); |