mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-09-04 17:00:35 +00:00
Fix compilation with openssl 1.1.0.
This commit is contained in:
@@ -24,16 +24,16 @@ blocktx_generate_encrypt_key (unsigned char *session_key, int sk_len,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
blocktx_encrypt_init (EVP_CIPHER_CTX *ctx,
|
blocktx_encrypt_init (EVP_CIPHER_CTX **ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
const unsigned char *iv)
|
const unsigned char *iv)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Prepare CTX for encryption. */
|
/* 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 */
|
EVP_aes_256_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
@@ -45,16 +45,16 @@ blocktx_encrypt_init (EVP_CIPHER_CTX *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
blocktx_decrypt_init (EVP_CIPHER_CTX *ctx,
|
blocktx_decrypt_init (EVP_CIPHER_CTX **ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
const unsigned char *iv)
|
const unsigned char *iv)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Prepare CTX for decryption. */
|
/* 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 */
|
EVP_aes_256_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
@@ -138,7 +138,7 @@ static int
|
|||||||
handle_frame_content (struct evbuffer *buf, FrameParser *parser)
|
handle_frame_content (struct evbuffer *buf, FrameParser *parser)
|
||||||
{
|
{
|
||||||
char *frame;
|
char *frame;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
char *out;
|
char *out;
|
||||||
int outlen, outlen2;
|
int outlen, outlen2;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@@ -158,7 +158,7 @@ handle_frame_content (struct evbuffer *buf, FrameParser *parser)
|
|||||||
|
|
||||||
evbuffer_remove (input, frame, parser->enc_frame_len);
|
evbuffer_remove (input, frame, parser->enc_frame_len);
|
||||||
|
|
||||||
if (EVP_DecryptUpdate (&ctx,
|
if (EVP_DecryptUpdate (ctx,
|
||||||
(unsigned char *)out, &outlen,
|
(unsigned char *)out, &outlen,
|
||||||
(unsigned char *)frame,
|
(unsigned char *)frame,
|
||||||
parser->enc_frame_len) == 0) {
|
parser->enc_frame_len) == 0) {
|
||||||
@@ -167,7 +167,7 @@ handle_frame_content (struct evbuffer *buf, FrameParser *parser)
|
|||||||
goto out;
|
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");
|
seaf_warning ("Failed to decrypt frame content.\n");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
@@ -180,7 +180,7 @@ out:
|
|||||||
g_free (frame);
|
g_free (frame);
|
||||||
g_free (out);
|
g_free (out);
|
||||||
parser->enc_frame_len = 0;
|
parser->enc_frame_len = 0;
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -222,7 +222,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)
|
|||||||
|
|
||||||
out = g_malloc (fragment_len + ENC_BLOCK_SIZE);
|
out = g_malloc (fragment_len + ENC_BLOCK_SIZE);
|
||||||
|
|
||||||
if (EVP_DecryptUpdate (&parser->ctx,
|
if (EVP_DecryptUpdate (parser->ctx,
|
||||||
(unsigned char *)out, &outlen,
|
(unsigned char *)out, &outlen,
|
||||||
(unsigned char *)fragment, fragment_len) == 0) {
|
(unsigned char *)fragment, fragment_len) == 0) {
|
||||||
seaf_warning ("Failed to decrypt frame fragment.\n");
|
seaf_warning ("Failed to decrypt frame fragment.\n");
|
||||||
@@ -237,7 +237,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)
|
|||||||
parser->remain -= fragment_len;
|
parser->remain -= fragment_len;
|
||||||
|
|
||||||
if (parser->remain <= 0) {
|
if (parser->remain <= 0) {
|
||||||
if (EVP_DecryptFinal_ex (&parser->ctx,
|
if (EVP_DecryptFinal_ex (parser->ctx,
|
||||||
(unsigned char *)out,
|
(unsigned char *)out,
|
||||||
&outlen) == 0) {
|
&outlen) == 0) {
|
||||||
seaf_warning ("Failed to decrypt frame fragment.\n");
|
seaf_warning ("Failed to decrypt frame fragment.\n");
|
||||||
@@ -249,7 +249,7 @@ handle_frame_fragment_content (struct evbuffer *buf, FrameParser *parser)
|
|||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&parser->ctx);
|
EVP_CIPHER_CTX_free (parser->ctx);
|
||||||
parser->enc_init = FALSE;
|
parser->enc_init = FALSE;
|
||||||
parser->enc_frame_len = 0;
|
parser->enc_frame_len = 0;
|
||||||
}
|
}
|
||||||
@@ -258,7 +258,7 @@ out:
|
|||||||
g_free (fragment);
|
g_free (fragment);
|
||||||
g_free (out);
|
g_free (out);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
EVP_CIPHER_CTX_cleanup (&parser->ctx);
|
EVP_CIPHER_CTX_free (parser->ctx);
|
||||||
parser->enc_init = FALSE;
|
parser->enc_init = FALSE;
|
||||||
parser->enc_frame_len = 0;
|
parser->enc_frame_len = 0;
|
||||||
}
|
}
|
||||||
|
@@ -68,12 +68,12 @@ blocktx_generate_encrypt_key (unsigned char *session_key, int sk_len,
|
|||||||
unsigned char *key, unsigned char *iv);
|
unsigned char *key, unsigned char *iv);
|
||||||
|
|
||||||
int
|
int
|
||||||
blocktx_encrypt_init (EVP_CIPHER_CTX *ctx,
|
blocktx_encrypt_init (EVP_CIPHER_CTX **ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
const unsigned char *iv);
|
const unsigned char *iv);
|
||||||
|
|
||||||
int
|
int
|
||||||
blocktx_decrypt_init (EVP_CIPHER_CTX *ctx,
|
blocktx_decrypt_init (EVP_CIPHER_CTX **ctx,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
const unsigned char *iv);
|
const unsigned char *iv);
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ typedef struct _FrameParser {
|
|||||||
unsigned char key[ENC_KEY_SIZE];
|
unsigned char key[ENC_KEY_SIZE];
|
||||||
unsigned char iv[ENC_BLOCK_SIZE];
|
unsigned char iv[ENC_BLOCK_SIZE];
|
||||||
gboolean enc_init;
|
gboolean enc_init;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
|
|
||||||
unsigned char key_v2[ENC_KEY_SIZE];
|
unsigned char key_v2[ENC_KEY_SIZE];
|
||||||
unsigned char iv_v2[ENC_BLOCK_SIZE];
|
unsigned char iv_v2[ENC_BLOCK_SIZE];
|
||||||
|
@@ -254,35 +254,36 @@ seafile_encrypt (char **data_out,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
int ret;
|
int ret;
|
||||||
int blks;
|
int blks;
|
||||||
|
|
||||||
/* Prepare CTX for encryption. */
|
/* Prepare CTX for encryption. */
|
||||||
EVP_CIPHER_CTX_init (&ctx);
|
ctx = EVP_CIPHER_CTX_new ();
|
||||||
|
|
||||||
if (crypt->version == 2)
|
if (crypt->version == 2)
|
||||||
ret = EVP_EncryptInit_ex (&ctx,
|
ret = EVP_EncryptInit_ex (ctx,
|
||||||
EVP_aes_256_cbc(), /* cipher mode */
|
EVP_aes_256_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
crypt->key, /* derived key */
|
crypt->key, /* derived key */
|
||||||
crypt->iv); /* initial vector */
|
crypt->iv); /* initial vector */
|
||||||
else if (crypt->version == 1)
|
else if (crypt->version == 1)
|
||||||
ret = EVP_EncryptInit_ex (&ctx,
|
ret = EVP_EncryptInit_ex (ctx,
|
||||||
EVP_aes_128_cbc(), /* cipher mode */
|
EVP_aes_128_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
crypt->key, /* derived key */
|
crypt->key, /* derived key */
|
||||||
crypt->iv); /* initial vector */
|
crypt->iv); /* initial vector */
|
||||||
else
|
else
|
||||||
ret = EVP_EncryptInit_ex (&ctx,
|
ret = EVP_EncryptInit_ex (ctx,
|
||||||
EVP_aes_128_ecb(), /* cipher mode */
|
EVP_aes_128_ecb(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
crypt->key, /* derived key */
|
crypt->key, /* derived key */
|
||||||
crypt->iv); /* initial vector */
|
crypt->iv); /* initial vector */
|
||||||
|
|
||||||
if (ret == ENC_FAILURE)
|
if (ret == ENC_FAILURE) {
|
||||||
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
/* Allocating output buffer. */
|
/* Allocating output buffer. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -303,7 +304,7 @@ seafile_encrypt (char **data_out,
|
|||||||
int update_len, final_len;
|
int update_len, final_len;
|
||||||
|
|
||||||
/* Do the encryption. */
|
/* Do the encryption. */
|
||||||
ret = EVP_EncryptUpdate (&ctx,
|
ret = EVP_EncryptUpdate (ctx,
|
||||||
(unsigned char*)*data_out,
|
(unsigned char*)*data_out,
|
||||||
&update_len,
|
&update_len,
|
||||||
(unsigned char*)data_in,
|
(unsigned char*)data_in,
|
||||||
@@ -314,7 +315,7 @@ seafile_encrypt (char **data_out,
|
|||||||
|
|
||||||
|
|
||||||
/* Finish the possible partial block. */
|
/* Finish the possible partial block. */
|
||||||
ret = EVP_EncryptFinal_ex (&ctx,
|
ret = EVP_EncryptFinal_ex (ctx,
|
||||||
(unsigned char*)*data_out + update_len,
|
(unsigned char*)*data_out + update_len,
|
||||||
&final_len);
|
&final_len);
|
||||||
|
|
||||||
@@ -324,13 +325,13 @@ seafile_encrypt (char **data_out,
|
|||||||
if (ret == ENC_FAILURE || *out_len != (blks * BLK_SIZE))
|
if (ret == ENC_FAILURE || *out_len != (blks * BLK_SIZE))
|
||||||
goto enc_error;
|
goto enc_error;
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
enc_error:
|
enc_error:
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
*out_len = -1;
|
*out_len = -1;
|
||||||
|
|
||||||
@@ -365,34 +366,35 @@ seafile_decrypt (char **data_out,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Prepare CTX for decryption. */
|
/* Prepare CTX for decryption. */
|
||||||
EVP_CIPHER_CTX_init (&ctx);
|
ctx = EVP_CIPHER_CTX_new ();
|
||||||
|
|
||||||
if (crypt->version == 2)
|
if (crypt->version == 2)
|
||||||
ret = EVP_DecryptInit_ex (&ctx,
|
ret = EVP_DecryptInit_ex (ctx,
|
||||||
EVP_aes_256_cbc(), /* cipher mode */
|
EVP_aes_256_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
crypt->key, /* derived key */
|
crypt->key, /* derived key */
|
||||||
crypt->iv); /* initial vector */
|
crypt->iv); /* initial vector */
|
||||||
else if (crypt->version == 1)
|
else if (crypt->version == 1)
|
||||||
ret = EVP_DecryptInit_ex (&ctx,
|
ret = EVP_DecryptInit_ex (ctx,
|
||||||
EVP_aes_128_cbc(), /* cipher mode */
|
EVP_aes_128_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
crypt->key, /* derived key */
|
crypt->key, /* derived key */
|
||||||
crypt->iv); /* initial vector */
|
crypt->iv); /* initial vector */
|
||||||
else
|
else
|
||||||
ret = EVP_DecryptInit_ex (&ctx,
|
ret = EVP_DecryptInit_ex (ctx,
|
||||||
EVP_aes_128_ecb(), /* cipher mode */
|
EVP_aes_128_ecb(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
crypt->key, /* derived key */
|
crypt->key, /* derived key */
|
||||||
crypt->iv); /* initial vector */
|
crypt->iv); /* initial vector */
|
||||||
|
|
||||||
if (ret == DEC_FAILURE)
|
if (ret == DEC_FAILURE) {
|
||||||
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
/* Allocating output buffer. */
|
/* Allocating output buffer. */
|
||||||
|
|
||||||
*data_out = (char *)g_malloc (in_len);
|
*data_out = (char *)g_malloc (in_len);
|
||||||
@@ -405,7 +407,7 @@ seafile_decrypt (char **data_out,
|
|||||||
int update_len, final_len;
|
int update_len, final_len;
|
||||||
|
|
||||||
/* Do the decryption. */
|
/* Do the decryption. */
|
||||||
ret = EVP_DecryptUpdate (&ctx,
|
ret = EVP_DecryptUpdate (ctx,
|
||||||
(unsigned char*)*data_out,
|
(unsigned char*)*data_out,
|
||||||
&update_len,
|
&update_len,
|
||||||
(unsigned char*)data_in,
|
(unsigned char*)data_in,
|
||||||
@@ -416,7 +418,7 @@ seafile_decrypt (char **data_out,
|
|||||||
|
|
||||||
|
|
||||||
/* Finish the possible partial block. */
|
/* Finish the possible partial block. */
|
||||||
ret = EVP_DecryptFinal_ex (&ctx,
|
ret = EVP_DecryptFinal_ex (ctx,
|
||||||
(unsigned char*)*data_out + update_len,
|
(unsigned char*)*data_out + update_len,
|
||||||
&final_len);
|
&final_len);
|
||||||
|
|
||||||
@@ -426,13 +428,13 @@ seafile_decrypt (char **data_out,
|
|||||||
if (ret == DEC_FAILURE || *out_len > in_len)
|
if (ret == DEC_FAILURE || *out_len > in_len)
|
||||||
goto dec_error;
|
goto dec_error;
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
dec_error:
|
dec_error:
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
*out_len = -1;
|
*out_len = -1;
|
||||||
if (*data_out != NULL)
|
if (*data_out != NULL)
|
||||||
@@ -445,7 +447,7 @@ dec_error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
seafile_decrypt_init (EVP_CIPHER_CTX *ctx,
|
seafile_decrypt_init (EVP_CIPHER_CTX **ctx,
|
||||||
int version,
|
int version,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
const unsigned char *iv)
|
const unsigned char *iv)
|
||||||
@@ -453,22 +455,22 @@ seafile_decrypt_init (EVP_CIPHER_CTX *ctx,
|
|||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
/* Prepare CTX for decryption. */
|
/* Prepare CTX for decryption. */
|
||||||
EVP_CIPHER_CTX_init (ctx);
|
*ctx = EVP_CIPHER_CTX_new ();
|
||||||
|
|
||||||
if (version == 2)
|
if (version == 2)
|
||||||
ret = EVP_DecryptInit_ex (ctx,
|
ret = EVP_DecryptInit_ex (*ctx,
|
||||||
EVP_aes_256_cbc(), /* cipher mode */
|
EVP_aes_256_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
iv); /* initial vector */
|
iv); /* initial vector */
|
||||||
else if (version == 1)
|
else if (version == 1)
|
||||||
ret = EVP_DecryptInit_ex (ctx,
|
ret = EVP_DecryptInit_ex (*ctx,
|
||||||
EVP_aes_128_cbc(), /* cipher mode */
|
EVP_aes_128_cbc(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
iv); /* initial vector */
|
iv); /* initial vector */
|
||||||
else
|
else
|
||||||
ret = EVP_DecryptInit_ex (ctx,
|
ret = EVP_DecryptInit_ex (*ctx,
|
||||||
EVP_aes_128_ecb(), /* cipher mode */
|
EVP_aes_128_ecb(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
|
@@ -98,7 +98,7 @@ seafile_decrypt (char **data_out,
|
|||||||
SeafileCrypt *crypt);
|
SeafileCrypt *crypt);
|
||||||
|
|
||||||
int
|
int
|
||||||
seafile_decrypt_init (EVP_CIPHER_CTX *ctx,
|
seafile_decrypt_init (EVP_CIPHER_CTX **ctx,
|
||||||
int version,
|
int version,
|
||||||
const unsigned char *key,
|
const unsigned char *key,
|
||||||
const unsigned char *iv);
|
const unsigned char *iv);
|
||||||
|
36
lib/utils.c
36
lib/utils.c
@@ -1526,7 +1526,7 @@ ccnet_encrypt (char **data_out,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
int ret, key_len;
|
int ret, key_len;
|
||||||
unsigned char key[16], iv[16];
|
unsigned char key[16], iv[16];
|
||||||
int blks;
|
int blks;
|
||||||
@@ -1552,17 +1552,18 @@ ccnet_encrypt (char **data_out,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Prepare CTX for encryption. */
|
/* 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_128_ecb(), /* cipher mode */
|
EVP_aes_128_ecb(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
iv); /* initial vector */
|
iv); /* initial vector */
|
||||||
|
|
||||||
if (ret == ENC_FAILURE)
|
if (ret == ENC_FAILURE){
|
||||||
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
/* Allocating output buffer. */
|
/* Allocating output buffer. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1583,7 +1584,7 @@ ccnet_encrypt (char **data_out,
|
|||||||
int update_len, final_len;
|
int update_len, final_len;
|
||||||
|
|
||||||
/* Do the encryption. */
|
/* Do the encryption. */
|
||||||
ret = EVP_EncryptUpdate (&ctx,
|
ret = EVP_EncryptUpdate (ctx,
|
||||||
(unsigned char*)*data_out,
|
(unsigned char*)*data_out,
|
||||||
&update_len,
|
&update_len,
|
||||||
(unsigned char*)data_in,
|
(unsigned char*)data_in,
|
||||||
@@ -1591,10 +1592,9 @@ ccnet_encrypt (char **data_out,
|
|||||||
|
|
||||||
if (ret == ENC_FAILURE)
|
if (ret == ENC_FAILURE)
|
||||||
goto enc_error;
|
goto enc_error;
|
||||||
|
|
||||||
|
|
||||||
/* Finish the possible partial block. */
|
/* Finish the possible partial block. */
|
||||||
ret = EVP_EncryptFinal_ex (&ctx,
|
ret = EVP_EncryptFinal_ex (ctx,
|
||||||
(unsigned char*)*data_out + update_len,
|
(unsigned char*)*data_out + update_len,
|
||||||
&final_len);
|
&final_len);
|
||||||
|
|
||||||
@@ -1604,13 +1604,13 @@ ccnet_encrypt (char **data_out,
|
|||||||
if (ret == ENC_FAILURE || *out_len != (blks * BLK_SIZE))
|
if (ret == ENC_FAILURE || *out_len != (blks * BLK_SIZE))
|
||||||
goto enc_error;
|
goto enc_error;
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
enc_error:
|
enc_error:
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
*out_len = -1;
|
*out_len = -1;
|
||||||
|
|
||||||
@@ -1642,7 +1642,7 @@ ccnet_decrypt (char **data_out,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
int ret, key_len;
|
int ret, key_len;
|
||||||
unsigned char key[16], iv[16];
|
unsigned char key[16], iv[16];
|
||||||
|
|
||||||
@@ -1668,9 +1668,9 @@ ccnet_decrypt (char **data_out,
|
|||||||
|
|
||||||
|
|
||||||
/* Prepare CTX for decryption. */
|
/* 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_128_ecb(), /* cipher mode */
|
EVP_aes_128_ecb(), /* cipher mode */
|
||||||
NULL, /* engine, NULL for default */
|
NULL, /* engine, NULL for default */
|
||||||
key, /* derived key */
|
key, /* derived key */
|
||||||
@@ -1691,7 +1691,7 @@ ccnet_decrypt (char **data_out,
|
|||||||
int update_len, final_len;
|
int update_len, final_len;
|
||||||
|
|
||||||
/* Do the decryption. */
|
/* Do the decryption. */
|
||||||
ret = EVP_DecryptUpdate (&ctx,
|
ret = EVP_DecryptUpdate (ctx,
|
||||||
(unsigned char*)*data_out,
|
(unsigned char*)*data_out,
|
||||||
&update_len,
|
&update_len,
|
||||||
(unsigned char*)data_in,
|
(unsigned char*)data_in,
|
||||||
@@ -1702,7 +1702,7 @@ ccnet_decrypt (char **data_out,
|
|||||||
|
|
||||||
|
|
||||||
/* Finish the possible partial block. */
|
/* Finish the possible partial block. */
|
||||||
ret = EVP_DecryptFinal_ex (&ctx,
|
ret = EVP_DecryptFinal_ex (ctx,
|
||||||
(unsigned char*)*data_out + update_len,
|
(unsigned char*)*data_out + update_len,
|
||||||
&final_len);
|
&final_len);
|
||||||
|
|
||||||
@@ -1712,13 +1712,13 @@ ccnet_decrypt (char **data_out,
|
|||||||
if (ret == DEC_FAILURE || *out_len > in_len)
|
if (ret == DEC_FAILURE || *out_len > in_len)
|
||||||
goto dec_error;
|
goto dec_error;
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
dec_error:
|
dec_error:
|
||||||
|
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
|
|
||||||
*out_len = -1;
|
*out_len = -1;
|
||||||
if (*data_out != NULL)
|
if (*data_out != NULL)
|
||||||
|
@@ -58,7 +58,7 @@ typedef struct SendfileData {
|
|||||||
Seafile *file;
|
Seafile *file;
|
||||||
SeafileCrypt *crypt;
|
SeafileCrypt *crypt;
|
||||||
gboolean enc_init;
|
gboolean enc_init;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
BlockHandle *handle;
|
BlockHandle *handle;
|
||||||
size_t remain;
|
size_t remain;
|
||||||
int idx;
|
int idx;
|
||||||
@@ -154,7 +154,7 @@ free_sendfile_data (SendfileData *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data->enc_init)
|
if (data->enc_init)
|
||||||
EVP_CIPHER_CTX_cleanup (&data->ctx);
|
EVP_CIPHER_CTX_free (data->ctx);
|
||||||
|
|
||||||
seafile_unref (data->file);
|
seafile_unref (data->file);
|
||||||
g_free (data->crypt);
|
g_free (data->crypt);
|
||||||
@@ -301,7 +301,7 @@ next:
|
|||||||
seaf_block_manager_block_handle_free (seaf->block_mgr, handle);
|
seaf_block_manager_block_handle_free (seaf->block_mgr, handle);
|
||||||
data->handle = NULL;
|
data->handle = NULL;
|
||||||
if (data->crypt != NULL) {
|
if (data->crypt != NULL) {
|
||||||
EVP_CIPHER_CTX_cleanup (&data->ctx);
|
EVP_CIPHER_CTX_free (data->ctx);
|
||||||
data->enc_init = FALSE;
|
data->enc_init = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ next:
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ret = EVP_DecryptUpdate (&data->ctx,
|
int ret = EVP_DecryptUpdate (data->ctx,
|
||||||
(unsigned char *)dec_out,
|
(unsigned char *)dec_out,
|
||||||
&dec_out_len,
|
&dec_out_len,
|
||||||
(unsigned char *)buf,
|
(unsigned char *)buf,
|
||||||
@@ -355,7 +355,7 @@ next:
|
|||||||
/* If it's the last piece of a block, call decrypt_final()
|
/* If it's the last piece of a block, call decrypt_final()
|
||||||
* to decrypt the possible partial block. */
|
* to decrypt the possible partial block. */
|
||||||
if (data->remain == 0) {
|
if (data->remain == 0) {
|
||||||
ret = EVP_DecryptFinal_ex (&data->ctx,
|
ret = EVP_DecryptFinal_ex (data->ctx,
|
||||||
(unsigned char *)dec_out,
|
(unsigned char *)dec_out,
|
||||||
&dec_out_len);
|
&dec_out_len);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
|
@@ -205,7 +205,7 @@ static int
|
|||||||
send_auth_response (BlockTxServer *server, int status)
|
send_auth_response (BlockTxServer *server, int status)
|
||||||
{
|
{
|
||||||
AuthResponse rsp;
|
AuthResponse rsp;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
rsp.status = htonl (status);
|
rsp.status = htonl (status);
|
||||||
@@ -221,21 +221,21 @@ send_auth_response (BlockTxServer *server, int status)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_encrypted_data (&ctx, server->data_fd, &rsp, sizeof(rsp)) < 0)
|
if (send_encrypted_data (ctx, server->data_fd, &rsp, sizeof(rsp)) < 0)
|
||||||
{
|
{
|
||||||
seaf_warning ("Send auth response: failed to send data.\n");
|
seaf_warning ("Send auth response: failed to send data.\n");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_encrypted_data_frame_end (&ctx, server->data_fd) < 0) {
|
if (send_encrypted_data_frame_end (ctx, server->data_fd) < 0) {
|
||||||
seaf_warning ("Send auth response: failed to end.\n");
|
seaf_warning ("Send auth response: failed to end.\n");
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,7 +308,7 @@ static int
|
|||||||
send_block_response_header (BlockTxServer *server, int status)
|
send_block_response_header (BlockTxServer *server, int status)
|
||||||
{
|
{
|
||||||
ResponseHeader header;
|
ResponseHeader header;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
header.status = htonl (status);
|
header.status = htonl (status);
|
||||||
@@ -325,7 +325,7 @@ send_block_response_header (BlockTxServer *server, int status)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_encrypted_data (&ctx, server->data_fd,
|
if (send_encrypted_data (ctx, server->data_fd,
|
||||||
&header, sizeof(header)) < 0)
|
&header, sizeof(header)) < 0)
|
||||||
{
|
{
|
||||||
seaf_warning ("Send block response header %s: failed to send data.\n",
|
seaf_warning ("Send block response header %s: failed to send data.\n",
|
||||||
@@ -334,7 +334,7 @@ send_block_response_header (BlockTxServer *server, int status)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_encrypted_data_frame_end (&ctx, server->data_fd) < 0) {
|
if (send_encrypted_data_frame_end (ctx, server->data_fd) < 0) {
|
||||||
seaf_warning ("Send block response header %s: failed to end.\n",
|
seaf_warning ("Send block response header %s: failed to end.\n",
|
||||||
server->curr_block_id);
|
server->curr_block_id);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
@@ -342,7 +342,7 @@ send_block_response_header (BlockTxServer *server, int status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,7 +447,7 @@ send_encrypted_block (BlockTxServer *server,
|
|||||||
{
|
{
|
||||||
int n, remain;
|
int n, remain;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
char send_buf[SEND_BUFFER_SIZE];
|
char send_buf[SEND_BUFFER_SIZE];
|
||||||
|
|
||||||
if (server->version == 1)
|
if (server->version == 1)
|
||||||
@@ -472,7 +472,7 @@ send_encrypted_block (BlockTxServer *server,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_encrypted_data (&ctx, server->data_fd, send_buf, n) < 0) {
|
if (send_encrypted_data (ctx, server->data_fd, send_buf, n) < 0) {
|
||||||
seaf_warning ("Send block %s: failed to send data.\n", block_id);
|
seaf_warning ("Send block %s: failed to send data.\n", block_id);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto out;
|
goto out;
|
||||||
@@ -481,7 +481,7 @@ send_encrypted_block (BlockTxServer *server,
|
|||||||
remain -= n;
|
remain -= n;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (send_encrypted_data_frame_end (&ctx, server->data_fd) < 0) {
|
if (send_encrypted_data_frame_end (ctx, server->data_fd) < 0) {
|
||||||
seaf_warning ("Send block %s: failed to end.\n", block_id);
|
seaf_warning ("Send block %s: failed to end.\n", block_id);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
goto out;
|
goto out;
|
||||||
@@ -490,7 +490,7 @@ send_encrypted_block (BlockTxServer *server,
|
|||||||
seaf_debug ("Send block %s done.\n", server->curr_block_id);
|
seaf_debug ("Send block %s done.\n", server->curr_block_id);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -661,7 +661,7 @@ block_tx_server_thread (void *vdata)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (server->parser.enc_init)
|
if (server->parser.enc_init)
|
||||||
EVP_CIPHER_CTX_cleanup (&server->parser.ctx);
|
EVP_CIPHER_CTX_free (server->parser.ctx);
|
||||||
|
|
||||||
evbuffer_free (server->recv_buf);
|
evbuffer_free (server->recv_buf);
|
||||||
evutil_closesocket (server->data_fd);
|
evutil_closesocket (server->data_fd);
|
||||||
|
@@ -86,7 +86,7 @@ add_file_to_archive (PackDirData *data,
|
|||||||
BlockMetadata *bmd = NULL;
|
BlockMetadata *bmd = NULL;
|
||||||
char *blk_id = NULL;
|
char *blk_id = NULL;
|
||||||
uint32_t remain = 0;
|
uint32_t remain = 0;
|
||||||
EVP_CIPHER_CTX ctx;
|
EVP_CIPHER_CTX *ctx;
|
||||||
gboolean enc_init = FALSE;
|
gboolean enc_init = FALSE;
|
||||||
char *dec_out = NULL;
|
char *dec_out = NULL;
|
||||||
int dec_out_len = -1;
|
int dec_out_len = -1;
|
||||||
@@ -196,7 +196,7 @@ add_file_to_archive (PackDirData *data,
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
int r = EVP_DecryptUpdate (&ctx,
|
int r = EVP_DecryptUpdate (ctx,
|
||||||
(unsigned char *)dec_out,
|
(unsigned char *)dec_out,
|
||||||
&dec_out_len,
|
&dec_out_len,
|
||||||
(unsigned char *)buf,
|
(unsigned char *)buf,
|
||||||
@@ -221,7 +221,7 @@ add_file_to_archive (PackDirData *data,
|
|||||||
/* If it's the last piece of a block, call decrypt_final()
|
/* If it's the last piece of a block, call decrypt_final()
|
||||||
* to decrypt the possible partial block. */
|
* to decrypt the possible partial block. */
|
||||||
if (remain == 0) {
|
if (remain == 0) {
|
||||||
r = EVP_DecryptFinal_ex (&ctx,
|
r = EVP_DecryptFinal_ex (ctx,
|
||||||
(unsigned char *)dec_out,
|
(unsigned char *)dec_out,
|
||||||
&dec_out_len);
|
&dec_out_len);
|
||||||
if (r != 1) {
|
if (r != 1) {
|
||||||
@@ -264,7 +264,7 @@ out:
|
|||||||
seaf_block_manager_block_handle_free(seaf->block_mgr, handle);
|
seaf_block_manager_block_handle_free(seaf->block_mgr, handle);
|
||||||
}
|
}
|
||||||
if (crypt != NULL && enc_init)
|
if (crypt != NULL && enc_init)
|
||||||
EVP_CIPHER_CTX_cleanup (&ctx);
|
EVP_CIPHER_CTX_free (ctx);
|
||||||
g_free (dec_out);
|
g_free (dec_out);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
Reference in New Issue
Block a user