From 4687ae68c3881d418f217b5c55f96f154633cf4a Mon Sep 17 00:00:00 2001 From: Ivan Deniskin <ivanmordwin@yandex.ru> Date: Wed, 18 Jul 2018 18:27:52 +0300 Subject: [PATCH] AES tail block bug fixed --- crypto/dap_enc_aes.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/crypto/dap_enc_aes.c b/crypto/dap_enc_aes.c index dae80f8..dcb2a6a 100755 --- a/crypto/dap_enc_aes.c +++ b/crypto/dap_enc_aes.c @@ -9,8 +9,6 @@ #define AES_BLOCKSIZE 16 #define AES_KEYSIZE 16 -uint8_t tail_block[] = {21,27,20,36,16,20,27,31,22,41,27,33,30,21,32,28}; - #define DAP_ENC_AES_KEY(a) ((dap_enc_aes_key_t *)((a)->_inheritor) ) static void print_bytes(uint8_t *bytes, size_t num_bytes) { @@ -133,8 +131,12 @@ size_t dap_enc_aes_decode(struct dap_enc_key* a_key, const void * a_in, size_t a OQS_AES128_ECB_dec(a_in,a_in_size,a_key->data,a_out); int tail = 0; for(size_t i =a_in_size-1; i > a_in_size-15; i--) - if(*(char*)(a_out + i) == (char)tail_block[i%16]) - tail++; + { + if(*(char*)(a_out + i) == (char)0) + tail++; + else + break; + } return a_in_size - tail; } @@ -155,8 +157,7 @@ size_t dap_enc_aes_encode(struct dap_enc_key* a_key, const void * a_in, size_t a tail = 16 - a_in_size % 16; void * a_in_new = (void*)malloc(a_in_size + tail); memcpy(a_in_new,a_in,a_in_size); - uint8_t* pointer = &tail_block; - memcpy(a_in_new+a_in_size,pointer+(16-tail),tail); + memset(a_in_new+a_in_size,0,tail); OQS_AES128_ECB_enc(a_in_new,a_in_size+tail,a_key->data,a_out); return a_in_size + tail; } -- GitLab