1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

B #5140: make code compatible with openssl 1.1.0

This commit is contained in:
Javi Fontan 2017-05-04 14:23:17 +02:00
parent 191fca5241
commit 1c2a649635

View File

@ -157,18 +157,30 @@ string * one_util::base64_decode(const string& in)
string one_util::sha1_digest(const string& in)
{
EVP_MD_CTX mdctx;
EVP_MD_CTX* mdctx;
unsigned char md_value[EVP_MAX_MD_SIZE];
unsigned int md_len;
ostringstream oss;
EVP_MD_CTX_init(&mdctx);
EVP_DigestInit_ex(&mdctx, EVP_sha1(), NULL);
#if OPENSSL_VERSION_NUMBER < 0x10100000L
mdctx = (EVP_MD_CTX*) malloc(sizeof(EVP_MD_CTX));
EVP_MD_CTX_init(mdctx);
#else
mdctx = EVP_MD_CTX_new();
#endif
EVP_DigestUpdate(&mdctx, in.c_str(), in.length());
EVP_DigestInit_ex(mdctx, EVP_sha1(), NULL);
EVP_DigestFinal_ex(&mdctx,md_value,&md_len);
EVP_MD_CTX_cleanup(&mdctx);
EVP_DigestUpdate(mdctx, in.c_str(), in.length());
EVP_DigestFinal_ex(mdctx,md_value, &md_len);
#if OPENSSL_VERSION_NUMBER < 0x10100000L
EVP_MD_CTX_cleanup(mdctx);
free(mdctx);
#else
EVP_MD_CTX_free(mdctx);
#endif
for(unsigned int i = 0; i<md_len; i++)
{
@ -184,7 +196,7 @@ string one_util::sha1_digest(const string& in)
string * one_util::aes256cbc_encrypt(const string& in, const string password)
{
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX *ctx;
const unsigned char *key = (unsigned char*) password.c_str();
const unsigned char *in_data = (unsigned char*) in.c_str();
@ -193,11 +205,23 @@ string * one_util::aes256cbc_encrypt(const string& in, const string password)
int outlen1, outlen2;
EVP_EncryptInit(&ctx, EVP_aes_256_cbc(), key, NULL);
EVP_EncryptUpdate(&ctx, out, &outlen1, in_data, in.length());
EVP_EncryptFinal(&ctx, out + outlen1, &outlen2);
#if OPENSSL_VERSION_NUMBER < 0x10100000L
ctx = (EVP_CIPHER_CTX*) malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(ctx);
#else
ctx = EVP_CIPHER_CTX_new();
#endif
EVP_CIPHER_CTX_cleanup(&ctx);
EVP_EncryptInit(ctx, EVP_aes_256_cbc(), key, NULL);
EVP_EncryptUpdate(ctx, out, &outlen1, in_data, in.length());
EVP_EncryptFinal(ctx, out + outlen1, &outlen2);
#if OPENSSL_VERSION_NUMBER < 0x10100000L
EVP_CIPHER_CTX_cleanup(ctx);
free(ctx);
#else
EVP_CIPHER_CTX_free(ctx);
#endif
string encrypt((char*) out, (size_t)(outlen1+outlen2));