diff --git a/dap_chain_sign.c b/dap_chain_sign.c index 1d075f795a28ab83e3d23e2be3566ebbbd12d98a..cf225a52258521065d62adbabfb4fd2addab2ee2 100755 --- a/dap_chain_sign.c +++ b/dap_chain_sign.c @@ -25,6 +25,7 @@ #include <string.h> #include "dap_common.h" +#include "dap_hash.h" #include "dap_chain_sign.h" #include "dap_enc_bliss.h" #include "dap_enc_tesla.h" @@ -242,6 +243,26 @@ uint8_t* dap_chain_sign_get_pkey(dap_chain_sign_t *a_sign, size_t *a_pub_key_out return a_sign->pkey_n_sign; } +/** + * @brief dap_chain_sign_get_pkey_hash + * @param a_sign + * @param a_sign_hash + * @return + */ +bool dap_chain_sign_get_pkey_hash(dap_chain_sign_t *a_sign, dap_chain_hash_fast_t * a_sign_hash) +{ + if(!a_sign){ + log_it( L_WARNING, "Sign is NULL on enter"); + return false; + } + if( ! a_sign->header.sign_pkey_size ){ + log_it( L_WARNING, "Sign public key's size is 0"); + return false; + } + return dap_hash_fast( a_sign->pkey_n_sign,a_sign->header.sign_pkey_size,a_sign_hash ); +} + + /** * @brief dap_chain_sign_to_enc_key * @param a_chain_sign diff --git a/dap_chain_sign.h b/dap_chain_sign.h index 812e0da00cc278a5c7498b8d0a0d2bf5774e34ec..b4a867c3c05c3e57d82ccf9ea1ad00cfe46bb389 100755 --- a/dap_chain_sign.h +++ b/dap_chain_sign.h @@ -66,6 +66,7 @@ dap_enc_key_type_t dap_chain_sign_type_to_key_type(dap_chain_sign_type_t a_cha uint8_t* dap_chain_sign_get_sign(dap_chain_sign_t *a_sign, size_t *a_sign_out); uint8_t* dap_chain_sign_get_pkey(dap_chain_sign_t *a_sign, size_t *a_pub_key_out); +bool dap_chain_sign_get_pkey_hash(dap_chain_sign_t *a_sign, dap_chain_hash_fast_t * a_sign_hash); dap_enc_key_t *dap_chain_sign_to_enc_key(dap_chain_sign_t * a_chain_sign); const char * dap_chain_sign_type_to_str(dap_chain_sign_type_t a_chain_sign_type);