diff options
Diffstat (limited to 'openssl-crypto.patch')
-rw-r--r-- | openssl-crypto.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/openssl-crypto.patch b/openssl-crypto.patch new file mode 100644 index 000000000000..a307cf27d2b1 --- /dev/null +++ b/openssl-crypto.patch @@ -0,0 +1,72 @@ +--- a/src/cpp/core/system/Crypto.cpp.orig 2017-10-14 15:59:52.561983799 +0900 ++++ b/src/cpp/core/system/Crypto.cpp 2017-10-14 15:58:24.504542511 +0900 +@@ -261,27 +261,26 @@ Error aesEncrypt(const std::vector<unsig + int outlen = 0; + int bytesEncrypted = 0; + +- EVP_CIPHER_CTX ctx; +- EVP_CIPHER_CTX_init(&ctx); +- EVP_CipherInit_ex(&ctx, EVP_aes_128_cbc(), NULL, &key[0], &iv[0], kEncrypt); ++ EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new(); ++ EVP_CipherInit_ex(ctx, EVP_aes_128_cbc(), NULL, &key[0], &iv[0], kEncrypt); + + // perform the encryption +- if(!EVP_CipherUpdate(&ctx, &(pEncrypted->operator[](0)), &outlen, &data[0], data.size())) ++ if(!EVP_CipherUpdate(ctx, &(pEncrypted->operator[](0)), &outlen, &data[0], data.size())) + { +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + return lastCryptoError(ERROR_LOCATION); + } + bytesEncrypted += outlen; + + // perform final flush including left-over padding +- if(!EVP_CipherFinal_ex(&ctx, &(pEncrypted->operator[](outlen)), &outlen)) ++ if(!EVP_CipherFinal_ex(ctx, &(pEncrypted->operator[](outlen)), &outlen)) + { +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + return lastCryptoError(ERROR_LOCATION); + } + bytesEncrypted += outlen; + +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + + // resize the container to the amount of actual bytes encrypted (including padding) + pEncrypted->resize(bytesEncrypted); +@@ -298,27 +297,26 @@ Error aesDecrypt(const std::vector<unsig + int outlen = 0; + int bytesDecrypted = 0; + +- EVP_CIPHER_CTX ctx; +- EVP_CIPHER_CTX_init(&ctx); +- EVP_CipherInit_ex(&ctx, EVP_aes_128_cbc(), NULL, &key[0], &iv[0], kDecrypt); ++ EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new(); ++ EVP_CipherInit_ex(ctx, EVP_aes_128_cbc(), NULL, &key[0], &iv[0], kDecrypt); + + // perform the decryption +- if(!EVP_CipherUpdate(&ctx, &(pDecrypted->operator[](0)), &outlen, &data[0], data.size())) ++ if(!EVP_CipherUpdate(ctx, &(pDecrypted->operator[](0)), &outlen, &data[0], data.size())) + { +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + return lastCryptoError(ERROR_LOCATION); + } + bytesDecrypted += outlen; + + // perform final flush +- if(!EVP_CipherFinal_ex(&ctx, &(pDecrypted->operator[](outlen)), &outlen)) ++ if(!EVP_CipherFinal_ex(ctx, &(pDecrypted->operator[](outlen)), &outlen)) + { +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + return lastCryptoError(ERROR_LOCATION); + } + bytesDecrypted += outlen; + +- EVP_CIPHER_CTX_cleanup(&ctx); ++ EVP_CIPHER_CTX_free(ctx); + + // resize the container to the amount of actual bytes decrypted (padding is removed) + pDecrypted->resize(bytesDecrypted);
\ No newline at end of file |