Browse Source

changed aes transform to cipher text stealing mode

pull/380/head
Logan007 4 years ago
parent
commit
680248d154
  1. 4
      include/aes.h
  2. 6
      src/aes.c
  3. 2
      src/transform_aes.c

4
include/aes.h

@ -48,10 +48,10 @@ typedef struct aes_context_t {
int aes_cbc_encrypt (unsigned char *out, const unsigned char *in, size_t in_len, int aes_cbc_encrypt (unsigned char *out, const unsigned char *in, size_t in_len,
const unsigned char *iv, aes_context_t *ctx); unsigned char *iv, aes_context_t *ctx);
int aes_cbc_decrypt (unsigned char *out, const unsigned char *in, size_t in_len, int aes_cbc_decrypt (unsigned char *out, const unsigned char *in, size_t in_len,
const unsigned char *iv, aes_context_t *ctx); unsigned char *iv, aes_context_t *ctx);
int aes_ecb_decrypt (unsigned char *out, const unsigned char *in, aes_context_t *ctx); int aes_ecb_decrypt (unsigned char *out, const unsigned char *in, aes_context_t *ctx);

6
src/aes.c

@ -45,7 +45,7 @@ static char *openssl_err_as_string (void) {
/* ****************************************************** */ /* ****************************************************** */
int aes_cbc_encrypt (unsigned char *out, const unsigned char *in, size_t in_len, int aes_cbc_encrypt (unsigned char *out, const unsigned char *in, size_t in_len,
const unsigned char *iv, aes_context_t *ctx) { unsigned char *iv, aes_context_t *ctx) {
#ifdef HAVE_OPENSSL_1_1 #ifdef HAVE_OPENSSL_1_1
int evp_len; int evp_len;
@ -81,13 +81,14 @@ int aes_cbc_encrypt (unsigned char *out, const unsigned char *in, size_t in_len,
&(ctx->enc_key), &(ctx->enc_key),
iv, iv,
AES_ENCRYPT); AES_ENCRYPT);
memset(iv, 0, AES_BLOCK_SIZE);
#endif #endif
} }
/* ****************************************************** */ /* ****************************************************** */
int aes_cbc_decrypt (unsigned char *out, const unsigned char *in, size_t in_len, int aes_cbc_decrypt (unsigned char *out, const unsigned char *in, size_t in_len,
const unsigned char *iv, aes_context_t *ctx) { unsigned char *iv, aes_context_t *ctx) {
#ifdef HAVE_OPENSSL_1_1 #ifdef HAVE_OPENSSL_1_1
int evp_len; int evp_len;
@ -123,6 +124,7 @@ int aes_cbc_decrypt (unsigned char *out, const unsigned char *in, size_t in_len,
&(ctx->dec_key), &(ctx->dec_key),
iv, iv,
AES_DECRYPT); AES_DECRYPT);
memset(iv, 0, AES_BLOCK_SIZE);
#endif #endif
return 0; return 0;

2
src/transform_aes.c

@ -35,7 +35,7 @@
// cbc mode is being used with random value prepended to plaintext // cbc mode is being used with random value prepended to plaintext
// instead of iv so, actual iv is null_iv // instead of iv so, actual iv is null_iv
const uint8_t null_iv[AES_IV_SIZE] = {0}; uint8_t null_iv[AES_IV_SIZE] = {0};
typedef struct transop_aes { typedef struct transop_aes {
aes_context_t *ctx; aes_context_t *ctx;

Loading…
Cancel
Save