From 3059e97ef13936a3b60dfbcccf59a643667e339a Mon Sep 17 00:00:00 2001 From: armatusmiles <akurotych@gmail.com> Date: Mon, 12 Nov 2018 10:04:49 +0200 Subject: [PATCH] [*] optimize dap_enc --- crypto/dap_enc.c | 14 +++++++++++--- crypto/dap_enc_base64.c | 2 -- crypto/dap_enc_base64.h | 6 ------ test/libdap-test | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crypto/dap_enc.c b/crypto/dap_enc.c index c9f1c4e..1639cd4 100644 --- a/crypto/dap_enc.c +++ b/crypto/dap_enc.c @@ -50,6 +50,7 @@ void dap_enc_deinit() } + /** * @brief dap_enc_code Encode data with key * @param key_private Private key @@ -70,7 +71,7 @@ size_t dap_enc_code(struct dap_enc_key * key,const void * buf,const size_t buf_s size_t ret = key->enc(key, buf, buf_size, &proc_buf); if(data_type_out == DAP_ENC_DATA_TYPE_B64 || data_type_out == DAP_ENC_DATA_TYPE_B64_URLSAFE) { *buf_out = malloc(DAP_ENC_BASE64_ENCODE_SIZE(ret)); - ret=dap_enc_base64_encode(proc_buf, ret,(char*)*buf_out, data_type_out); + ret=dap_enc_base64_encode(proc_buf, ret, *buf_out, data_type_out); free(proc_buf); } else { log_it(L_ERROR, "Unknown dap_enc_data_type"); @@ -101,7 +102,7 @@ size_t dap_enc_decode(struct dap_enc_key * key,const void * buf, const size_t bu switch(data_type_in){ case DAP_ENC_DATA_TYPE_B64: case DAP_ENC_DATA_TYPE_B64_URLSAFE: - proc_buf=calloc(1,buf_size); + proc_buf=calloc(1,DAP_ENC_BASE64_ENCODE_SIZE(buf_size)); proc_buf_size= dap_enc_base64_decode((const char*) buf,buf_size,proc_buf,data_type_in); proc_buf_const=proc_buf; break; @@ -112,12 +113,19 @@ size_t dap_enc_decode(struct dap_enc_key * key,const void * buf, const size_t bu } if(key->dec) { - size_t ret=key->dec(key,proc_buf_const,proc_buf_size,buf_out); + if(proc_buf_size == 0) { + log_it(L_ERROR, "Buf is null. dap_enc_base64_decode is failed"); + return 0; + } + size_t ret = key->dec(key,proc_buf_const,proc_buf_size, buf_out); + if(data_type_in==DAP_ENC_DATA_TYPE_B64 || data_type_in == DAP_ENC_DATA_TYPE_B64_URLSAFE) free(proc_buf); return ret; } else { log_it(L_WARNING, "key->dec is NULL"); + if(proc_buf_size) + free(proc_buf); return 0; } } diff --git a/crypto/dap_enc_base64.c b/crypto/dap_enc_base64.c index cd2df7f..f9c878d 100755 --- a/crypto/dap_enc_base64.c +++ b/crypto/dap_enc_base64.c @@ -117,8 +117,6 @@ static const char* b64_table_by_standard(dap_enc_data_type_t standard) */ size_t dap_enc_base64_decode(const char * in, size_t in_size,void * out, dap_enc_data_type_t standard) { - //B64_Decode( in, in_size, (byte*) out ); - //return B64_GetSize( in_size,0 ); uint8_t * out_bytes = (uint8_t*) out; int j = 0; diff --git a/crypto/dap_enc_base64.h b/crypto/dap_enc_base64.h index c73d461..427717a 100755 --- a/crypto/dap_enc_base64.h +++ b/crypto/dap_enc_base64.h @@ -6,12 +6,6 @@ extern "C" { #endif - -typedef enum dap_enc_b64_standard { - DAP_ENC_STANDARD_B64, - DAP_ENC_STANDARD_B64_URLSAFE, -} dap_enc_b64_standard_t; - /* * Calculates encode size from input size */ diff --git a/test/libdap-test b/test/libdap-test index 982e8d9..e542fdb 160000 --- a/test/libdap-test +++ b/test/libdap-test @@ -1 +1 @@ -Subproject commit 982e8d9e7726918ce622b42b5335f324e738c6dc +Subproject commit e542fdbcbced6ce9b1c4cae4a92fa8580403941e -- GitLab