From b26be2598694d699adad03cd850dd2a4fca5ffc2 Mon Sep 17 00:00:00 2001 From: Dmitry Gerasimov <dmitriy.gerasimov@demlabs.net> Date: Wed, 31 Aug 2022 16:20:21 +0700 Subject: [PATCH] [+] dap_sign_verify_all() --- dap-sdk/crypto/include/dap_sign.h | 33 ++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/dap-sdk/crypto/include/dap_sign.h b/dap-sdk/crypto/include/dap_sign.h index 4152f63e66..b68c399b21 100755 --- a/dap-sdk/crypto/include/dap_sign.h +++ b/dap-sdk/crypto/include/dap_sign.h @@ -117,6 +117,38 @@ int dap_sign_init(uint8_t a_sign_hash_type_default); size_t dap_sign_get_size(dap_sign_t * a_chain_sign); int dap_sign_verify (dap_sign_t * a_chain_sign, const void * a_data, const size_t a_data_size); +bool dap_sign_verify_size(dap_sign_t *a_sign, size_t a_max_sign_size); + +/** + * @brief dap_sign_verify_data + * @param a_chain_sign + * @param a_data + * @param a_data_size + * @return + */ +static inline bool dap_sign_verify_data (dap_sign_t * a_chain_sign, const void * a_data, const size_t a_data_size){ + return dap_sign_verify(a_chain_sign, a_data, a_data_size) == 1; +} + +/** + * @brief dap_sign_verify_all + * @param a_sign + * @param a_sign_size_max + * @param a_data + * @param a_data_size + * @return + */ +static inline int dap_sign_verify_all(dap_sign_t * a_sign, const size_t a_sign_size_max, const void * a_data, const size_t a_data_size) +{ + if( a_sign_size_max < sizeof(dap_sign_t)){ + return -3; + }else if ( ! dap_sign_verify_size(a_sign,a_sign_size_max) ){ + return -2; + }else if (! dap_sign_verify_data(a_sign,a_data, a_data_size) ){ + return -1; + } + return 0; +} 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 ); @@ -137,7 +169,6 @@ uint8_t* dap_sign_get_pkey(dap_sign_t *a_sign, size_t *a_pub_key_out); bool dap_sign_get_pkey_hash(dap_sign_t *a_sign, dap_chain_hash_fast_t * a_sign_hash); bool dap_sign_match_pkey_signs(dap_sign_t *l_sign1, dap_sign_t *l_sign2); -bool dap_sign_verify_size(dap_sign_t *a_sign, size_t a_max_sign_size); dap_enc_key_t *dap_sign_to_enc_key(dap_sign_t * a_chain_sign); const char * dap_sign_type_to_str(dap_sign_type_t a_chain_sign_type); dap_sign_type_t dap_sign_type_from_str(const char * a_type_str); -- GitLab