Skip to content

Commit

Permalink
Fix compilation with openssl 1.1.0.
Browse files Browse the repository at this point in the history
  • Loading branch information
ly1217 committed May 14, 2018
1 parent c4a6722 commit 1fe1210
Show file tree
Hide file tree
Showing 8 changed files with 87 additions and 85 deletions.
28 changes: 14 additions & 14 deletions common/block-tx-utils.c
Expand Up @@ -24,16 +24,16 @@ blocktx_generate_encrypt_key (unsigned char *session_key, int sk_len,
}

int
blocktx_encrypt_init (EVP_CIPHER_CTX *ctx,
blocktx_encrypt_init (EVP_CIPHER_CTX **ctx,
const unsigned char *key,
const unsigned char *iv)
{
int ret;

/* Prepare CTX for encryption. */
EVP_CIPHER_CTX_init (ctx);
*ctx = EVP_CIPHER_CTX_new ();

ret = EVP_EncryptInit_ex (ctx,
ret = EVP_EncryptInit_ex (*ctx,
EVP_aes_256_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
key, /* derived key */
Expand All @@ -45,16 +45,16 @@ blocktx_encrypt_init (EVP_CIPHER_CTX *ctx,
}

int
blocktx_decrypt_init (EVP_CIPHER_CTX *ctx,
blocktx_decrypt_init (EVP_CIPHER_CTX **ctx,
const unsigned char *key,
const unsigned char *iv)
{
int ret;

/* Prepare CTX for decryption. */
EVP_CIPHER_CTX_init (ctx);
*ctx = EVP_CIPHER_CTX_new();

ret = EVP_DecryptInit_ex (ctx,
ret = EVP_DecryptInit_ex (*ctx,
EVP_aes_256_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
key, /* derived key */
Expand Down Expand Up @@ -138,7 +138,7 @@ static int
handle_frame_content (struct evbuffer *buf, FrameParser *parser)
{
char *frame;
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX *ctx;
char *out;
int outlen, outlen2;
int ret = 0;
Expand All @@ -158,7 +158,7 @@ handle_frame_content (struct evbuffer *buf, FrameParser *parser)

evbuffer_remove (input, frame, parser->enc_frame_len);

if (EVP_DecryptUpdate (&ctx,
if (EVP_DecryptUpdate (ctx,
(unsigned char *)out, &outlen,
(unsigned char *)frame,
parser->enc_frame_len) == 0) {
Expand All @@ -167,7 +167,7 @@ handle_frame_content (struct evbuffer *buf, FrameParser *parser)
goto out;
}

if (EVP_DecryptFinal_ex (&ctx, (unsigned char *)(out + outlen), &outlen2) == 0)
if (EVP_DecryptFinal_ex (ctx, (unsigned char *)(out + outlen), &outlen2) == 0)
{
seaf_warning ("Failed to decrypt frame content.\n");
ret = -1;
Expand All @@ -180,7 +180,7 @@ handle_frame_content (struct evbuffer *buf, FrameParser *parser)
g_free (frame);
g_free (out);
parser->enc_frame_len = 0;
EVP_CIPHER_CTX_cleanup (&ctx);
EVP_CIPHER_CTX_free (ctx);
return ret;
}

Expand Down Expand Up @@ -222,7 +222,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)

out = g_malloc (fragment_len + ENC_BLOCK_SIZE);

if (EVP_DecryptUpdate (&parser->ctx,
if (EVP_DecryptUpdate (parser->ctx,
(unsigned char *)out, &outlen,
(unsigned char *)fragment, fragment_len) == 0) {
seaf_warning ("Failed to decrypt frame fragment.\n");
Expand All @@ -237,7 +237,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)
parser->remain -= fragment_len;

if (parser->remain <= 0) {
if (EVP_DecryptFinal_ex (&parser->ctx,
if (EVP_DecryptFinal_ex (parser->ctx,
(unsigned char *)out,
&outlen) == 0) {
seaf_warning ("Failed to decrypt frame fragment.\n");
Expand All @@ -249,7 +249,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)
if (ret < 0)
goto out;

EVP_CIPHER_CTX_cleanup (&parser->ctx);
EVP_CIPHER_CTX_free (parser->ctx);
parser->enc_init = FALSE;
parser->enc_frame_len = 0;
}
Expand All @@ -258,7 +258,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)
g_free (fragment);
g_free (out);
if (ret < 0) {
EVP_CIPHER_CTX_cleanup (&parser->ctx);
EVP_CIPHER_CTX_free (parser->ctx);
parser->enc_init = FALSE;
parser->enc_frame_len = 0;
}
Expand Down
6 changes: 3 additions & 3 deletions common/block-tx-utils.h
Expand Up @@ -68,12 +68,12 @@ blocktx_generate_encrypt_key (unsigned char *session_key, int sk_len,
unsigned char *key, unsigned char *iv);

int
blocktx_encrypt_init (EVP_CIPHER_CTX *ctx,
blocktx_encrypt_init (EVP_CIPHER_CTX **ctx,
const unsigned char *key,
const unsigned char *iv);

int
blocktx_decrypt_init (EVP_CIPHER_CTX *ctx,
blocktx_decrypt_init (EVP_CIPHER_CTX **ctx,
const unsigned char *key,
const unsigned char *iv);

Expand Down Expand Up @@ -112,7 +112,7 @@ typedef struct _FrameParser {
unsigned char key[ENC_KEY_SIZE];
unsigned char iv[ENC_BLOCK_SIZE];
gboolean enc_init;
EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX *ctx;

unsigned char key_v2[ENC_KEY_SIZE];
unsigned char iv_v2[ENC_BLOCK_SIZE];
Expand Down
56 changes: 29 additions & 27 deletions common/seafile-crypt.c
Expand Up @@ -254,35 +254,36 @@ seafile_encrypt (char **data_out,
return -1;
}

EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX *ctx;
int ret;
int blks;

/* Prepare CTX for encryption. */
EVP_CIPHER_CTX_init (&ctx);
ctx = EVP_CIPHER_CTX_new ();

if (crypt->version == 2)
ret = EVP_EncryptInit_ex (&ctx,
ret = EVP_EncryptInit_ex (ctx,
EVP_aes_256_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
crypt->key, /* derived key */
crypt->iv); /* initial vector */
else if (crypt->version == 1)
ret = EVP_EncryptInit_ex (&ctx,
ret = EVP_EncryptInit_ex (ctx,
EVP_aes_128_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
crypt->key, /* derived key */
crypt->iv); /* initial vector */
else
ret = EVP_EncryptInit_ex (&ctx,
ret = EVP_EncryptInit_ex (ctx,
EVP_aes_128_ecb(), /* cipher mode */
NULL, /* engine, NULL for default */
crypt->key, /* derived key */
crypt->iv); /* initial vector */

if (ret == ENC_FAILURE)
if (ret == ENC_FAILURE) {
EVP_CIPHER_CTX_free (ctx);
return -1;

}
/* Allocating output buffer. */

/*
Expand All @@ -303,7 +304,7 @@ seafile_encrypt (char **data_out,
int update_len, final_len;

/* Do the encryption. */
ret = EVP_EncryptUpdate (&ctx,
ret = EVP_EncryptUpdate (ctx,
(unsigned char*)*data_out,
&update_len,
(unsigned char*)data_in,
Expand All @@ -314,7 +315,7 @@ seafile_encrypt (char **data_out,


/* Finish the possible partial block. */
ret = EVP_EncryptFinal_ex (&ctx,
ret = EVP_EncryptFinal_ex (ctx,
(unsigned char*)*data_out + update_len,
&final_len);

Expand All @@ -324,13 +325,13 @@ seafile_encrypt (char **data_out,
if (ret == ENC_FAILURE || *out_len != (blks * BLK_SIZE))
goto enc_error;

EVP_CIPHER_CTX_cleanup (&ctx);
EVP_CIPHER_CTX_free (ctx);

return 0;

enc_error:

EVP_CIPHER_CTX_cleanup (&ctx);
EVP_CIPHER_CTX_free (ctx);

*out_len = -1;

Expand Down Expand Up @@ -365,34 +366,35 @@ seafile_decrypt (char **data_out,
return -1;
}

EVP_CIPHER_CTX ctx;
EVP_CIPHER_CTX *ctx;
int ret;

/* Prepare CTX for decryption. */
EVP_CIPHER_CTX_init (&ctx);
ctx = EVP_CIPHER_CTX_new ();

if (crypt->version == 2)
ret = EVP_DecryptInit_ex (&ctx,
ret = EVP_DecryptInit_ex (ctx,
EVP_aes_256_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
crypt->key, /* derived key */
crypt->iv); /* initial vector */
else if (crypt->version == 1)
ret = EVP_DecryptInit_ex (&ctx,
ret = EVP_DecryptInit_ex (ctx,
EVP_aes_128_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
crypt->key, /* derived key */
crypt->iv); /* initial vector */
else
ret = EVP_DecryptInit_ex (&ctx,
ret = EVP_DecryptInit_ex (ctx,
EVP_aes_128_ecb(), /* cipher mode */
NULL, /* engine, NULL for default */
crypt->key, /* derived key */
crypt->iv); /* initial vector */

if (ret == DEC_FAILURE)
if (ret == DEC_FAILURE) {
EVP_CIPHER_CTX_free (ctx);
return -1;

}
/* Allocating output buffer. */

*data_out = (char *)g_malloc (in_len);
Expand All @@ -405,7 +407,7 @@ seafile_decrypt (char **data_out,
int update_len, final_len;

/* Do the decryption. */
ret = EVP_DecryptUpdate (&ctx,
ret = EVP_DecryptUpdate (ctx,
(unsigned char*)*data_out,
&update_len,
(unsigned char*)data_in,
Expand All @@ -416,7 +418,7 @@ seafile_decrypt (char **data_out,


/* Finish the possible partial block. */
ret = EVP_DecryptFinal_ex (&ctx,
ret = EVP_DecryptFinal_ex (ctx,
(unsigned char*)*data_out + update_len,
&final_len);

Expand All @@ -426,13 +428,13 @@ seafile_decrypt (char **data_out,
if (ret == DEC_FAILURE || *out_len > in_len)
goto dec_error;

EVP_CIPHER_CTX_cleanup (&ctx);
EVP_CIPHER_CTX_free (ctx);

return 0;

dec_error:

EVP_CIPHER_CTX_cleanup (&ctx);
EVP_CIPHER_CTX_free (ctx);

*out_len = -1;
if (*data_out != NULL)
Expand All @@ -445,30 +447,30 @@ seafile_decrypt (char **data_out,
}

int
seafile_decrypt_init (EVP_CIPHER_CTX *ctx,
seafile_decrypt_init (EVP_CIPHER_CTX **ctx,
int version,
const unsigned char *key,
const unsigned char *iv)
{
int ret;

/* Prepare CTX for decryption. */
EVP_CIPHER_CTX_init (ctx);
*ctx = EVP_CIPHER_CTX_new ();

if (version == 2)
ret = EVP_DecryptInit_ex (ctx,
ret = EVP_DecryptInit_ex (*ctx,
EVP_aes_256_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
key, /* derived key */
iv); /* initial vector */
else if (version == 1)
ret = EVP_DecryptInit_ex (ctx,
ret = EVP_DecryptInit_ex (*ctx,
EVP_aes_128_cbc(), /* cipher mode */
NULL, /* engine, NULL for default */
key, /* derived key */
iv); /* initial vector */
else
ret = EVP_DecryptInit_ex (ctx,
ret = EVP_DecryptInit_ex (*ctx,
EVP_aes_128_ecb(), /* cipher mode */
NULL, /* engine, NULL for default */
key, /* derived key */
Expand Down
2 changes: 1 addition & 1 deletion common/seafile-crypt.h
Expand Up @@ -98,7 +98,7 @@ seafile_decrypt (char **data_out,
SeafileCrypt *crypt);

int
seafile_decrypt_init (EVP_CIPHER_CTX *ctx,
seafile_decrypt_init (EVP_CIPHER_CTX **ctx,
int version,
const unsigned char *key,
const unsigned char *iv);
Expand Down

0 comments on commit 1fe1210

Please sign in to comment.