diff --git a/dap-sdk/crypto/src/dap_cert.c b/dap-sdk/crypto/src/dap_cert.c index 4b9d0e35a417f366e8e95f35f8b5a94a00eb0f40..f813c276d6c9b3d1b66f57a20bc04ca374bf1bd2 100755 --- a/dap-sdk/crypto/src/dap_cert.c +++ b/dap-sdk/crypto/src/dap_cert.c @@ -82,11 +82,13 @@ int dap_cert_init() } /** - * @brief dap_cert_parse_str_list - * @param a_certs_str - * @param a_certs - * @param a_certs_size_t - * @return summary size for signatures of all certs in list + * @brief + * parse list of certificate from config file (if it is presented) + * in current implementation this function is used when node certificate (node-addr.dcert) is not generated + * @param a_certs_str const char * string with certificate name (node-addr) + * @param a_certs dap_cert_t *** array with certificates + * @param a_certs_size size of certificate + * @return size_t */ size_t dap_cert_parse_str_list(const char * a_certs_str, dap_cert_t *** a_certs, size_t * a_certs_size) { @@ -134,10 +136,11 @@ size_t dap_cert_parse_str_list(const char * a_certs_str, dap_cert_t *** a_certs, /** - * @brief dap_cert_sign_output_size - * @param a_cert - * @param a_size_wished - * @return + * @brief + * simply call dap_sign_create_output_unserialized_calc_size( a_cert->enc_key,a_size_wished) + * @param a_cert dap_cert_t * certificate object + * @param a_size_wished wished data size (don't used in current implementation) + * @return size_t */ size_t dap_cert_sign_output_size(dap_cert_t * a_cert, size_t a_size_wished) { @@ -160,12 +163,13 @@ size_t dap_cert_sign_output_size(dap_cert_t * a_cert, size_t a_size_wished) }*/ /** - * @brief dap_cert_sign - * @param a_cert - * @param a_data - * @param a_data_size - * @param a_output_size_wished - * @return + * @brief + * sign data by encryption key from certificate + * @param a_cert dap_cert_t * certificate object + * @param a_data data for signing + * @param a_data_size data size + * @param a_output_size_wished wished data size (don't used in current implementation) + * @return dap_sign_t* */ dap_sign_t * dap_cert_sign(dap_cert_t * a_cert, const void * a_data , size_t a_data_size, size_t a_output_size_wished ) @@ -176,10 +180,11 @@ dap_sign_t * dap_cert_sign(dap_cert_t * a_cert, const void * a_data } /** - * @brief dap_cert_add_cert_sign - * @param a_cert - * @param a_cert_signer - * @return + * @brief + * sign certificate with another certificate (a_cert->signs) + * @param a_cert dap_cert_t certificate object + * @param a_cert_signer dap_cert_t certificate object, which signs a_cert + * @return int */ int dap_cert_add_cert_sign(dap_cert_t * a_cert, dap_cert_t * a_cert_signer) { @@ -196,10 +201,13 @@ int dap_cert_add_cert_sign(dap_cert_t * a_cert, dap_cert_t * a_cert_signer) /** - * @brief dap_cert_generate_mem - * @param a_cert_name - * @param a_key_type - * @return + * @brief generate certificate in memory with specified seed + * + * @param a_cert_name const char * name of certificate + * @param a_key_type dap_enc_key_type_t key type + * @param a_seed const void* seed for certificate generation + * @param a_seed_size size_t size of seed + * @return dap_cert_t* */ dap_cert_t * dap_cert_generate_mem_with_seed(const char * a_cert_name, dap_enc_key_type_t a_key_type, const void* a_seed, size_t a_seed_size) @@ -222,10 +230,11 @@ dap_cert_t * dap_cert_generate_mem_with_seed(const char * a_cert_name, dap_enc_k } /** - * @brief dap_cert_generate_mem - * @param a_cert_name - * @param a_key_type - * @return + * @brief generate certificate in memory + * + * @param a_cert_name const char * certificate name + * @param a_key_type encryption key type + * @return dap_cert_t* */ dap_cert_t * dap_cert_generate_mem(const char * a_cert_name, dap_enc_key_type_t a_key_type) { @@ -233,11 +242,12 @@ dap_cert_t * dap_cert_generate_mem(const char * a_cert_name, dap_enc_key_type_t } /** - * @brief dap_cert_generate - * @param a_cert_name - * @param a_file_path - * @param a_key_type - * @return + * @brief generate certificate and save it to file + * + * @param a_cert_name const char * certificate name + * @param a_file_path const char * path to certificate file + * @param a_key_type dap_enc_key_type_t key_type + * @return dap_cert_t* */ dap_cert_t * dap_cert_generate(const char * a_cert_name , const char * a_file_path,dap_enc_key_type_t a_key_type ) @@ -259,7 +269,8 @@ dap_cert_t * dap_cert_generate(const char * a_cert_name /** * @brief dap_cert_delete_by_name - * @param a_cert_name + * delete certificate object, finding by name + * @param a_cert_name const char * certificate name */ void dap_cert_delete_by_name(const char * a_cert_name) { @@ -271,8 +282,9 @@ void dap_cert_delete_by_name(const char * a_cert_name) } /** - * @brief dap_cert_find_by_name - * @param a_cert_name + * @brief + * find certificate by name in path, which is configured ca_folders parameter in chain config + * @param a_cert_name const char * * @return */ dap_cert_t * dap_cert_find_by_name(const char * a_cert_name) @@ -313,7 +325,8 @@ dap_list_t *dap_cert_get_all_mem() /** * @brief dap_cert_new - * @param a_name + * create certificate object with specified name + * @param a_name const char * * @return */ dap_cert_t * dap_cert_new(const char * a_name) @@ -332,7 +345,8 @@ dap_cert_t * dap_cert_new(const char * a_name) /** * @brief s_cert_delete - * @param a_cert + * delete certificate object + * @param a_cert dap_cert_t * */ void dap_cert_delete(dap_cert_t * a_cert) { @@ -354,9 +368,10 @@ void dap_cert_delete(dap_cert_t * a_cert) /** * @brief dap_cert_add_file - * @param a_cert_name - * @param a_folder_path - * @return + * load certificate file from folder (specified in chain config) + * @param a_cert_name const char * certificate name + * @param a_folder_path const char * certificate path + * @return dap_cert_t */ dap_cert_t * dap_cert_add_file(const char * a_cert_name,const char *a_folder_path) { @@ -378,9 +393,11 @@ dap_cert_t * dap_cert_add_file(const char * a_cert_name,const char *a_folder_pat } /** - * @brief dap_cert_save_to_folder - * @param a_cert - * @param a_file_dir_path + * @brief save certitificate to folder + * + * @param a_cert dap_cert_t * certiticate object + * @param a_file_dir_path const char * path to directory with certificate + * @return int */ int dap_cert_save_to_folder(dap_cert_t * a_cert, const char *a_file_dir_path) { @@ -396,8 +413,10 @@ int dap_cert_save_to_folder(dap_cert_t * a_cert, const char *a_file_dir_path) /** * @brief dap_cert_to_pkey - * @param a_cert - * @return + * get public key from certificate + * dap_pkey_from_enc_key( a_cert->enc_key ) + * @param a_cert dap_cert_t certificate object + * @return dap_pkey_t */ dap_pkey_t * dap_cert_to_pkey(dap_cert_t * a_cert) { @@ -408,10 +427,11 @@ dap_pkey_t * dap_cert_to_pkey(dap_cert_t * a_cert) } /** - * @brief dap_cert_compare_with_sign - * @param a_cert - * @param a_sign - * @return + * @brief + * compare certificate encryption key with key, which was used for event or block signing + * @param a_cert dap_cert_t * certificate object + * @param a_sign dap_sign_t * dap_sign_t object (signed block or event) + * @return int */ int dap_cert_compare_with_sign (dap_cert_t * a_cert,const dap_sign_t * a_sign) { @@ -434,8 +454,8 @@ int dap_cert_compare_with_sign (dap_cert_t * a_cert,const dap_sign_t * a_sign) /** - * @brief dap_cert_count_cert_sign - * @param a_cert + * @brief Certificates signatures chain size + * @param a_cert dap_cert_t certificate object * @return */ size_t dap_cert_count_cert_sign(dap_cert_t * a_cert) @@ -448,8 +468,8 @@ size_t dap_cert_count_cert_sign(dap_cert_t * a_cert) /** - * @brief dap_cert_dump - * @param a_cert + * @brief show certificate information + * @param a_cert dap_cert_t certificate object */ void dap_cert_dump(dap_cert_t * a_cert) { @@ -491,8 +511,10 @@ void dap_cert_dump(dap_cert_t * a_cert) } /** - * @brief dap_cert_get_folder - * @param a_folder_path + * @brief get certificate folder path + * usage example: dap_cert_get_folder(0) + * @param a_n_folder_path + * @return const char* */ const char* dap_cert_get_folder(int a_n_folder_path) { @@ -511,8 +533,9 @@ const char* dap_cert_get_folder(int a_n_folder_path) /** - * @brief dap_cert_add_folder - * @param a_folder_path + * @brief load certificates from specified folder + * + * @param a_folder_path const char * */ void dap_cert_add_folder(const char *a_folder_path) { @@ -551,6 +574,15 @@ void dap_cert_add_folder(const char *a_folder_path) log_it(L_WARNING, "Can't add folder %s to cert manager",a_folder_path); } +/** + * @brief + * + * @param a_key const char * + * @param a_type dap_cert_metadata_type_t + * @param a_value void * + * @param a_value_size size_t + * @return dap_cert_metadata_t* + */ dap_cert_metadata_t *dap_cert_new_meta(const char *a_key, dap_cert_metadata_type_t a_type, void *a_value, size_t a_value_size) { if (!a_key || a_type > DAP_CERT_META_CUSTOM || (!a_value && a_value_size)) { @@ -568,12 +600,13 @@ dap_cert_metadata_t *dap_cert_new_meta(const char *a_key, dap_cert_metadata_type } /** - * @brief dap_cert_add_meta Add metadata to certificate - * @param a_cert - * @param a_key - * @param a_type - * @param a_value - * @param a_value_size + * @brief Add metadata to certificate + * action for command "cellframe-node cert add_metadata <cert name> <key:type:length:value>" + * @param a_cert dap_cert_t * certificate object + * @param a_key const char * key + * @param a_type dap_cert_metadata_type_t type + * @param a_value void * value + * @param a_value_size size_t length */ void dap_cert_add_meta(dap_cert_t *a_cert, const char *a_key, dap_cert_metadata_type_t a_type, void *a_value, size_t a_value_size) { @@ -588,6 +621,15 @@ void dap_cert_add_meta(dap_cert_t *a_cert, const char *a_key, dap_cert_metadata_ } } +/** + * @brief Add metadata to certificate with additional value modification + * + * @param a_cert dap_cert_t * certificate object + * @param a_key const char * key + * @param a_type dap_cert_metadata_type_t type + * @param a_value void * value + * @param a_value_size size_t length + */ void dap_cert_add_meta_scalar(dap_cert_t *a_cert, const char *a_key, dap_cert_metadata_type_t a_type, uint64_t a_value, size_t a_value_size) { void *l_value; @@ -627,15 +669,24 @@ void dap_cert_add_meta_scalar(dap_cert_t *a_cert, const char *a_key, dap_cert_me } /** - * @brief dap_cert_get_meta - * @param a_cert - * @param a_field + * @brief get specified metadata from certificate + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return dap_cert_metadata_t* */ dap_cert_metadata_t *dap_cert_get_meta(dap_cert_t *a_cert, const char *a_field) { return dap_binary_tree_search(a_cert->metadata, a_field); } +/** + * @brief get specified metadata from certificate in string (DAP_CERT_META_STRING) format + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return char* + */ char *dap_cert_get_meta_string(dap_cert_t *a_cert, const char *a_field) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -649,6 +700,14 @@ char *dap_cert_get_meta_string(dap_cert_t *a_cert, const char *a_field) return strndup((char *)&l_meta->value[0], l_meta->length); } +/** + * @brief get metadata from certificate with boolean (DAP_CERT_META_BOOL) type + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return true + * @return false + */ bool dap_cert_get_meta_bool(dap_cert_t *a_cert, const char *a_field) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -665,6 +724,13 @@ bool dap_cert_get_meta_bool(dap_cert_t *a_cert, const char *a_field) return *(bool *)&l_meta->value[0]; } +/** + * @brief get metadata from certificate with int (DAP_CERT_META_INT) type + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return int + */ int dap_cert_get_meta_int(dap_cert_t *a_cert, const char *a_field) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -681,6 +747,13 @@ int dap_cert_get_meta_int(dap_cert_t *a_cert, const char *a_field) return *(int *)&l_meta->value[0]; } +/** + * @brief get metadata from certificate with datetime (DAP_CERT_META_DATETIME) type + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return time_t + */ time_t dap_cert_get_meta_time(dap_cert_t *a_cert, const char *a_field) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -697,6 +770,13 @@ time_t dap_cert_get_meta_time(dap_cert_t *a_cert, const char *a_field) return *(time_t *)&l_meta->value[0]; } +/** + * @brief get metadata from certificate with datetime (DAP_CERT_META_DATETIME_PERIOD) type + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return time_t + */ time_t dap_cert_get_meta_period(dap_cert_t *a_cert, const char *a_field) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -713,6 +793,13 @@ time_t dap_cert_get_meta_period(dap_cert_t *a_cert, const char *a_field) return *(time_t *)&l_meta->value[0]; } +/** + * @brief get metadata from certificate with dap_sign_t (DAP_CERT_META_SIGN) type + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @return dap_sign_t* + */ dap_sign_t *dap_cert_get_meta_sign(dap_cert_t *a_cert, const char *a_field) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -730,6 +817,14 @@ dap_sign_t *dap_cert_get_meta_sign(dap_cert_t *a_cert, const char *a_field) return l_ret; } +/** + * @brief get metadata from certificate with custom (DAP_CERT_META_CUSTOM) type + * + * @param a_cert dap_cert_t * certificate object + * @param a_field const char * field, which will be gotten from metadata + * @param a_meta_size_out size_t size of recieved data + * @return void* + */ void *dap_cert_get_meta_custom(dap_cert_t *a_cert, const char *a_field, size_t *a_meta_size_out) { dap_cert_metadata_t *l_meta = dap_cert_get_meta(a_cert, a_field); @@ -748,8 +843,9 @@ void *dap_cert_get_meta_custom(dap_cert_t *a_cert, const char *a_field, size_t * /** * @brief dap_cert_deinit + * empty function */ void dap_cert_deinit() { -} +} \ No newline at end of file diff --git a/dap-sdk/crypto/src/dap_sign.c b/dap-sdk/crypto/src/dap_sign.c index dd1625e88f0215082e14f7330ec070a28b8e8b66..2582d4b1c3a29452a9c377a8c96ef986ae510074 100755 --- a/dap-sdk/crypto/src/dap_sign.c +++ b/dap-sdk/crypto/src/dap_sign.c @@ -38,7 +38,13 @@ //static dap_sign_t * s_sign_null = NULL; static bliss_signature_t s_sign_bliss_null = {0}; -// calc signature size +/** + * @brief get signature size (different for specific crypto algorithm) + * + * @param a_key dap_enc_key_t * encryption key object + * @param a_output_wish_size size_t output size + * @return size_t + */ size_t dap_sign_create_output_unserialized_calc_size(dap_enc_key_t * a_key, size_t a_output_wish_size ) { (void)a_output_wish_size; @@ -60,8 +66,8 @@ size_t dap_sign_create_output_unserialized_calc_size(dap_enc_key_t * a_key, size /** - * @brief dap_sign_type_from_key_type - * @param a_key_type + * @brief get sign type (dap_sign_type_t) type from key type (dap_enc_key_type_t) + * @param a_key_type dap_enc_key_type_t key type * @return */ dap_sign_type_t dap_sign_type_from_key_type( dap_enc_key_type_t a_key_type) @@ -79,9 +85,9 @@ dap_sign_type_t dap_sign_type_from_key_type( dap_enc_key_type_t a_key_type) } /** - * @brief dap_sign_type_to_key_type - * @param a_chain_sign_type - * @return + * @brief convert chain sign type (dap_sign_type_t) to encryption key type (dap_enc_key_type_t) + * @param a_chain_sign_type dap_enc_key_type_t signature type + * @return dap_enc_key_type_t */ dap_enc_key_type_t dap_sign_type_to_key_type(dap_sign_type_t a_chain_sign_type) { @@ -97,9 +103,10 @@ dap_enc_key_type_t dap_sign_type_to_key_type(dap_sign_type_t a_chain_sign_type /** - * @brief dap_sign_type_to_str - * @param a_chain_sign_type - * @return + * @brief convert sign type (dap_sign_type_t) to string format + * [sig_bliss,sig_tesla,sig_picnic,sig_dil,sig_multi2,sig_multi] + * @param a_chain_sign_type sign type dap_sign_type_t + * @return const char* */ const char * dap_sign_type_to_str(dap_sign_type_t a_chain_sign_type) { @@ -116,9 +123,10 @@ const char * dap_sign_type_to_str(dap_sign_type_t a_chain_sign_type) } /** - * @brief dap_pkey_type_from_sign - * @param a_pkey_type - * @return + * @brief convert public key type (dap_pkey_type_t) to dap_sign_type_t type + * + * @param a_pkey_type dap_pkey_type_t key type + * @return dap_sign_type_t */ dap_sign_type_t dap_pkey_type_from_sign( dap_pkey_type_t a_pkey_type) { @@ -136,9 +144,10 @@ dap_sign_type_t dap_pkey_type_from_sign( dap_pkey_type_t a_pkey_type) /** - * @brief dap_sign_type_from_str - * @param a_type_str - * @return + * @brief convert string to dap_sign_type_t type + * + * @param a_type_str const char * algorithm type [sig_bliss,sig_tesla,sig_picnic,sig_dil,sig_multi2,sig_multi] + * @return dap_sign_type_t */ dap_sign_type_t dap_sign_type_from_str(const char * a_type_str) { @@ -162,12 +171,14 @@ dap_sign_type_t dap_sign_type_from_str(const char * a_type_str) } /** - * @brief dap_sign_create_output - * @param a_key - * @param a_data - * @param a_data_size - * @param a_output [in/out] - * @return + * @brief encrypt data + * call a_key->enc_na or dap_enc_sig_bliss_get_sign + * @param a_key dap_enc_key_t key object + * @param a_data const void * data + * @param a_data_size const size_t size of data + * @param a_output void * output buffer + * @param a_output_size size_t size of output buffer + * @return int */ static int dap_sign_create_output(dap_enc_key_t *a_key, const void * a_data, const size_t a_data_size, void * a_output, size_t *a_output_size) @@ -194,12 +205,13 @@ static int dap_sign_create_output(dap_enc_key_t *a_key, const void * a_data, con } /** - * @brief dap_sign_create - * @param a_key - * @param a_data - * @param a_data_size - * @param a_output_wish_size - * @return + * @brief sign data with specified key + * + * @param a_key dap_enc_key_t key object + * @param a_data const void * buffer with data + * @param a_data_size const size_t buffer size + * @param a_output_wish_size size_t output buffer size + * @return dap_sign_t* */ dap_sign_t * dap_sign_create(dap_enc_key_t *a_key, const void * a_data, const size_t a_data_size, size_t a_output_wish_size) @@ -243,14 +255,16 @@ dap_sign_t * dap_sign_create(dap_enc_key_t *a_key, const void * a_data, } return NULL; } + /** - * @brief dap_sign_pack - * @param a_key - * @param a_sign_ser - * @param a_sign_ser_size - * @param a_pkey - * @param a_pub_key_size - * @return dap_sign_t* + * @brief create signed object header (dap_sign_t) from variables + * + * @param a_key dap_enc_key_t key object + * @param a_sign_ser signed data buffer + * @param a_sign_ser_size buffer size + * @param a_pkey public key + * @param a_pub_key_size pulic key size + * @return dap_sign_t* */ dap_sign_t * dap_sign_pack(dap_enc_key_t *a_key, const void * a_sign_ser, const size_t a_sign_ser_size, const void * a_pkey, const size_t a_pub_key_size) { @@ -266,10 +280,11 @@ dap_sign_t * dap_sign_pack(dap_enc_key_t *a_key, const void * a_sign_ser, const } /** - * @brief dap_sign_get_sign - * @param a_sign - * @param a_sign_out - * @return + * @brief + * get a_sign->pkey_n_sign + a_sign->header.sign_pkey_size + * @param a_sign dap_sign_t object (header + raw signature data) + * @param a_sign_out a_sign->header.sign_size + * @return uint8_t* */ uint8_t* dap_sign_get_sign(dap_sign_t *a_sign, size_t *a_sign_out) { @@ -281,10 +296,11 @@ uint8_t* dap_sign_get_sign(dap_sign_t *a_sign, size_t *a_sign_out) } /** - * @brief dap_sign_get_pkey - * @param a_sign - * @param a_pub_key_out - * @return + * @brief get a_sign->pkey_n_sign and a_sign->header.sign_pkey_size (optionally) + * + * @param a_sign dap_sign_t sign object + * @param a_pub_key_out [option] output pointer to a_sign->header.sign_pkey_size + * @return uint8_t* */ uint8_t* dap_sign_get_pkey(dap_sign_t *a_sign, size_t *a_pub_key_out) { @@ -296,10 +312,12 @@ uint8_t* dap_sign_get_pkey(dap_sign_t *a_sign, size_t *a_pub_key_out) } /** - * @brief dap_sign_get_pkey_hash - * @param a_sign - * @param a_sign_hash - * @return + * @brief get SHA3 hash of buffer (a_sign), storing in output buffer a_sign_hash + * + * @param a_sign input buffer + * @param a_sign_hash output buffer + * @return true + * @return false */ bool dap_sign_get_pkey_hash(dap_sign_t *a_sign, dap_chain_hash_fast_t * a_sign_hash) { @@ -314,7 +332,14 @@ bool dap_sign_get_pkey_hash(dap_sign_t *a_sign, dap_chain_hash_fast_t * a_sign_h return dap_hash_fast( a_sign->pkey_n_sign,a_sign->header.sign_pkey_size,a_sign_hash ); } - +/** + * @brief verify, if a_sign->header.sign_pkey_size and a_sign->header.sign_size bigger, then a_max_key_size + * + * @param a_sign signed data object + * @param a_max_key_size max size of key + * @return true + * @return false + */ bool dap_sign_verify_size(dap_sign_t *a_sign, size_t a_max_key_size) { if (a_sign->header.sign_pkey_size > a_max_key_size) @@ -325,9 +350,10 @@ bool dap_sign_verify_size(dap_sign_t *a_sign, size_t a_max_key_size) } /** - * @brief dap_sign_to_enc_key - * @param a_chain_sign - * @return + * @brief get deserealized pub key from dap_sign_t + * + * @param a_chain_sign dap_sign_t object + * @return dap_enc_key_t* */ dap_enc_key_t *dap_sign_to_enc_key(dap_sign_t * a_chain_sign) { @@ -343,10 +369,10 @@ dap_enc_key_t *dap_sign_to_enc_key(dap_sign_t * a_chain_sign) } /** - * @brief dap_sign_verify - * @param a_chain_sign - * @param a_data - * @param a_data_size + * @brief dap_sign_verify data signature + * @param a_chain_sign dap_sign_t a_chain_sign object + * @param a_data const void * buffer with data + * @param a_data_size const size_t buffer size * @return 1 valid signature, 0 invalid signature, -1 unsupported sign type */ int dap_sign_verify(dap_sign_t * a_chain_sign, const void * a_data, const size_t a_data_size) @@ -403,8 +429,12 @@ int dap_sign_verify(dap_sign_t * a_chain_sign, const void * a_data, const size_t return l_ret; } + /** - * Get size of struct dap_sign_t + * @brief Get size of struct dap_sign_t + * + * @param a_chain_sign dap_sign_t object + * @return size_t */ size_t dap_sign_get_size(dap_sign_t * a_chain_sign) {