1*4882a593SmuzhiyunFrom 1ad09f56d461e78ad83c77b654fb65467a68388b Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Dennis Schridde <dennis.schridde@uni-heidelberg.de> 3*4882a593SmuzhiyunDate: Wed, 30 Nov 2016 17:33:00 +0100 4*4882a593SmuzhiyunSubject: [PATCH] ID:461 - OpenSSL 1.1 compatibility - "error: storage size 5*4882a593Smuzhiyun of 'ctx' isn't known" 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunIn OpenSSL 1.1 EVP_CIPHER_CTX became opaque, cf. `man 3ssl EVP_EncryptInit` 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunFixes: ID:461 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunUpstream: https://github.com/ipmitool/ipmitool/commit/b57487e360916ab3eaa50aa6d021c73b6337a4a0 12*4882a593Smuzhiyun 13*4882a593SmuzhiyunSigned-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> 14*4882a593Smuzhiyun--- 15*4882a593Smuzhiyun src/plugins/lanplus/lanplus_crypt_impl.c | 28 ++++++++++++++-------------- 16*4882a593Smuzhiyun 1 file changed, 14 insertions(+), 14 deletions(-) 17*4882a593Smuzhiyun 18*4882a593Smuzhiyundiff --git a/src/plugins/lanplus/lanplus_crypt_impl.c b/src/plugins/lanplus/lanplus_crypt_impl.c 19*4882a593Smuzhiyunindex d5fac37..3c0df23 100644 20*4882a593Smuzhiyun--- a/src/plugins/lanplus/lanplus_crypt_impl.c 21*4882a593Smuzhiyun+++ b/src/plugins/lanplus/lanplus_crypt_impl.c 22*4882a593Smuzhiyun@@ -164,10 +164,10 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, 23*4882a593Smuzhiyun uint8_t * output, 24*4882a593Smuzhiyun uint32_t * bytes_written) 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun- EVP_CIPHER_CTX ctx; 27*4882a593Smuzhiyun- EVP_CIPHER_CTX_init(&ctx); 28*4882a593Smuzhiyun- EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv); 29*4882a593Smuzhiyun- EVP_CIPHER_CTX_set_padding(&ctx, 0); 30*4882a593Smuzhiyun+ EVP_CIPHER_CTX* ctx; 31*4882a593Smuzhiyun+ EVP_CIPHER_CTX_init(ctx); 32*4882a593Smuzhiyun+ EVP_EncryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv); 33*4882a593Smuzhiyun+ EVP_CIPHER_CTX_set_padding(ctx, 0); 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun *bytes_written = 0; 37*4882a593Smuzhiyun@@ -191,7 +191,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, 38*4882a593Smuzhiyun assert((input_length % IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE) == 0); 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun- if(!EVP_EncryptUpdate(&ctx, output, (int *)bytes_written, input, input_length)) 42*4882a593Smuzhiyun+ if(!EVP_EncryptUpdate(ctx, output, (int *)bytes_written, input, input_length)) 43*4882a593Smuzhiyun { 44*4882a593Smuzhiyun /* Error */ 45*4882a593Smuzhiyun *bytes_written = 0; 46*4882a593Smuzhiyun@@ -201,7 +201,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, 47*4882a593Smuzhiyun { 48*4882a593Smuzhiyun uint32_t tmplen; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun- if(!EVP_EncryptFinal_ex(&ctx, output + *bytes_written, (int *)&tmplen)) 51*4882a593Smuzhiyun+ if(!EVP_EncryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen)) 52*4882a593Smuzhiyun { 53*4882a593Smuzhiyun *bytes_written = 0; 54*4882a593Smuzhiyun return; /* Error */ 55*4882a593Smuzhiyun@@ -210,7 +210,7 @@ lanplus_encrypt_aes_cbc_128(const uint8_t * iv, 56*4882a593Smuzhiyun { 57*4882a593Smuzhiyun /* Success */ 58*4882a593Smuzhiyun *bytes_written += tmplen; 59*4882a593Smuzhiyun- EVP_CIPHER_CTX_cleanup(&ctx); 60*4882a593Smuzhiyun+ EVP_CIPHER_CTX_cleanup(ctx); 61*4882a593Smuzhiyun } 62*4882a593Smuzhiyun } 63*4882a593Smuzhiyun } 64*4882a593Smuzhiyun@@ -239,10 +239,10 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, 65*4882a593Smuzhiyun uint8_t * output, 66*4882a593Smuzhiyun uint32_t * bytes_written) 67*4882a593Smuzhiyun { 68*4882a593Smuzhiyun- EVP_CIPHER_CTX ctx; 69*4882a593Smuzhiyun- EVP_CIPHER_CTX_init(&ctx); 70*4882a593Smuzhiyun- EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, key, iv); 71*4882a593Smuzhiyun- EVP_CIPHER_CTX_set_padding(&ctx, 0); 72*4882a593Smuzhiyun+ EVP_CIPHER_CTX* ctx; 73*4882a593Smuzhiyun+ EVP_CIPHER_CTX_init(ctx); 74*4882a593Smuzhiyun+ EVP_DecryptInit_ex(ctx, EVP_aes_128_cbc(), NULL, key, iv); 75*4882a593Smuzhiyun+ EVP_CIPHER_CTX_set_padding(ctx, 0); 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun if (verbose >= 5) 79*4882a593Smuzhiyun@@ -266,7 +266,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, 80*4882a593Smuzhiyun assert((input_length % IPMI_CRYPT_AES_CBC_128_BLOCK_SIZE) == 0); 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun- if (!EVP_DecryptUpdate(&ctx, output, (int *)bytes_written, input, input_length)) 84*4882a593Smuzhiyun+ if (!EVP_DecryptUpdate(ctx, output, (int *)bytes_written, input, input_length)) 85*4882a593Smuzhiyun { 86*4882a593Smuzhiyun /* Error */ 87*4882a593Smuzhiyun lprintf(LOG_DEBUG, "ERROR: decrypt update failed"); 88*4882a593Smuzhiyun@@ -277,7 +277,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, 89*4882a593Smuzhiyun { 90*4882a593Smuzhiyun uint32_t tmplen; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun- if (!EVP_DecryptFinal_ex(&ctx, output + *bytes_written, (int *)&tmplen)) 93*4882a593Smuzhiyun+ if (!EVP_DecryptFinal_ex(ctx, output + *bytes_written, (int *)&tmplen)) 94*4882a593Smuzhiyun { 95*4882a593Smuzhiyun char buffer[1000]; 96*4882a593Smuzhiyun ERR_error_string(ERR_get_error(), buffer); 97*4882a593Smuzhiyun@@ -290,7 +290,7 @@ lanplus_decrypt_aes_cbc_128(const uint8_t * iv, 98*4882a593Smuzhiyun { 99*4882a593Smuzhiyun /* Success */ 100*4882a593Smuzhiyun *bytes_written += tmplen; 101*4882a593Smuzhiyun- EVP_CIPHER_CTX_cleanup(&ctx); 102*4882a593Smuzhiyun+ EVP_CIPHER_CTX_cleanup(ctx); 103*4882a593Smuzhiyun } 104*4882a593Smuzhiyun } 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun-- 107*4882a593Smuzhiyun1.9.1 108*4882a593Smuzhiyun 109