diff --git a/dap-sdk/crypto/include/dap_enc_base64.h b/dap-sdk/crypto/include/dap_enc_base64.h index 2fc27e454fc717a1cb97166e3beeb71c1e3d8596..7d69ba7bc85192a97bd6132e2d02abded9c311b0 100755 --- a/dap-sdk/crypto/include/dap_enc_base64.h +++ b/dap-sdk/crypto/include/dap_enc_base64.h @@ -38,6 +38,8 @@ extern "C" { size_t dap_enc_base64_decode(const char * in, size_t in_size, void * out, dap_enc_data_type_t standard); size_t dap_enc_base64_encode(const void * in, size_t in_size, char * out, dap_enc_data_type_t standard); +char * dap_enc_strdup_to_base64(const char * a_string); +char * dap_enc_strdup_from_base64(const char * a_string_base64); #ifdef __cplusplus } diff --git a/dap-sdk/crypto/src/dap_enc_base64.c b/dap-sdk/crypto/src/dap_enc_base64.c index 4501e7d3ab6705efae9c6332a03ae38d533459f9..b0f1351cead5ee1bb8329ec6fd6b50dbddbfa74d 100755 --- a/dap-sdk/crypto/src/dap_enc_base64.c +++ b/dap-sdk/crypto/src/dap_enc_base64.c @@ -271,6 +271,33 @@ size_t dap_enc_base64_encode(const void * a_in, size_t a_in_size, char * a_out, return size; } +char * dap_enc_strdup_to_base64(const char * a_string){ + size_t l_string_len = strlen(a_string); + size_t l_string_base64_len = DAP_ENC_BASE64_ENCODE_SIZE(l_string_len) + 1; + char * l_string_base64 = DAP_NEW_SIZE(char, l_string_base64_len); + size_t l_string_base64_len_res = dap_enc_base64_encode(a_string, l_string_len, l_string_base64, DAP_ENC_DATA_TYPE_B64); + l_string_base64[l_string_base64_len_res] = '\0'; + return l_string_base64; +} + +char * dap_enc_strdup_from_base64(const char * a_string_base64){ + if(!a_string_base64) + return NULL; + + size_t l_string_base64_len = strlen(a_string_base64); + if(!l_string_base64_len) + return NULL; + + char * l_string = DAP_NEW_Z_SIZE(byte_t, l_string_base64_len * 2); + size_t l_string_len = dap_enc_base64_decode(a_string_base64, l_string_base64_len, l_string, DAP_ENC_DATA_TYPE_B64_URLSAFE); + + if(!l_string_len){ + DAP_DELETE(l_string); + return NULL; + } + return l_string; +} + // get the size of the result buffer required for Base-64 // encoding/decoding. diff --git a/modules/app-cli/dap_app_cli_net.c b/modules/app-cli/dap_app_cli_net.c index 2ab51bd7625ccc0d9e6184809599c1515d271e52..517a42d105e349fc71a4ff1431c9c5b44cabe31e 100644 --- a/modules/app-cli/dap_app_cli_net.c +++ b/modules/app-cli/dap_app_cli_net.c @@ -169,15 +169,6 @@ bool s_dap_app_cli_cmd_contains_forbidden_symbol(const char * a_cmd_param){ return false; } -char * s_dap_app_cli_strdup_to_base64(const char * a_cmd_param){ - size_t l_cmd_param_len = strlen(a_cmd_param); - size_t l_cmd_param_base64_len = DAP_ENC_BASE64_ENCODE_SIZE(l_cmd_param_len) + 1; - char * l_cmd_param_base64 = DAP_NEW_SIZE(char, l_cmd_param_base64_len); - size_t l_cmd_param_base64_len_res = dap_enc_base64_encode(a_cmd_param, l_cmd_param_len, l_cmd_param_base64, DAP_ENC_DATA_TYPE_B64); - l_cmd_param_base64[l_cmd_param_base64_len_res] = '\0'; - return l_cmd_param_base64; -} - /** * Send request to kelvin-node * @@ -198,7 +189,7 @@ int dap_app_cli_post_command( dap_app_cli_connect_param_t *a_socket, dap_app_cli if (a_cmd->cmd_param[i]) { dap_string_append(l_cmd_data, "\r\n"); if(s_dap_app_cli_cmd_contains_forbidden_symbol(a_cmd->cmd_param[i])){ - char * l_cmd_param_base64 = s_dap_app_cli_strdup_to_base64(a_cmd->cmd_param[i]); + char * l_cmd_param_base64 = dap_enc_strdup_to_base64(a_cmd->cmd_param[i]); dap_string_append(l_cmd_data, l_cmd_param_base64); DAP_DELETE(l_cmd_param_base64); }else{