diff --git a/CMakeLists.txt b/CMakeLists.txt index 3647fddac7a8823b5aff814188eb472b27def48c..7fe9666277785e2fd9e2c0f1d02c47ae6c6c0b83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 2.8) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.6-100") +set(CELLFRAME_SDK_NATIVE_VERSION "2.6-101") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") diff --git a/dap-sdk/crypto/src/dap_enc_dilithium.c b/dap-sdk/crypto/src/dap_enc_dilithium.c index bbcabca77825fae38eda7a4c9046fc78bc9ee92c..9c2660db3f22fab45b8701a71e94b25dbc30112e 100755 --- a/dap-sdk/crypto/src/dap_enc_dilithium.c +++ b/dap-sdk/crypto/src/dap_enc_dilithium.c @@ -84,8 +84,9 @@ size_t dap_enc_sig_dilithium_verify_sign(struct dap_enc_key * key, const void * log_it(L_ERROR, "bad signature size"); return 0; } - - return (dilithium_crypto_sign_open( (unsigned char *) msg, msg_size, (dilithium_signature_t *) signature, key->pub_key_data)); + int l_ret = dilithium_crypto_sign_open( (unsigned char *) msg, msg_size, (dilithium_signature_t *) signature, key->pub_key_data); + log_it(L_WARNING,"Wrong signature, can't open with code %d", l_ret); + return l_ret>0? l_ret : 0; } void dap_enc_sig_dilithium_key_delete(struct dap_enc_key * key) diff --git a/dap-sdk/crypto/src/sig_dilithium/dilithium_sign.c b/dap-sdk/crypto/src/sig_dilithium/dilithium_sign.c index 47942fa5ec7986bbccc589ee802960da3ebb6ec5..74d0c5be377bee7cda040a2a3fd4464adff1791a 100755 --- a/dap-sdk/crypto/src/sig_dilithium/dilithium_sign.c +++ b/dap-sdk/crypto/src/sig_dilithium/dilithium_sign.c @@ -318,17 +318,18 @@ int dilithium_crypto_sign( dilithium_signature_t *sig, const unsigned char *m, u /*************************************************/ int dilithium_crypto_sign_open( unsigned char *m, unsigned long long mlen, dilithium_signature_t *sig, const dilithium_public_key_t * public_key) { - assert(public_key->kind == sig->kind); + if(public_key->kind != sig->kind) + return -1; dilithium_param_t *p = malloc(sizeof(dilithium_param_t)); if (! dilithium_params_init( p, public_key->kind)) { free(p); - return -1; + return -2; } if (sig->sig_len < p->CRYPTO_BYTES ) { free(p); - return -1; + return -3; } unsigned long long i; @@ -340,18 +341,18 @@ int dilithium_crypto_sign_open( unsigned char *m, unsigned long long mlen, dilit if((sig->sig_len - p->CRYPTO_BYTES) != mlen) { free(p); - return -1; + return -4; } dilithium_unpack_pk(rho, &t1, public_key->data, p); if(dilithium_unpack_sig(&z, &h, &c, sig->sig_data, p)) { free(p); - return -1; + return -5; } if(polyvecl_chknorm(&z, GAMMA1 - p->PARAM_BETA, p)) { free(p); - return -1; + return -6; } unsigned char *tmp_m = malloc(CRHBYTES + mlen); @@ -388,7 +389,7 @@ int dilithium_crypto_sign_open( unsigned char *m, unsigned long long mlen, dilit for(i = 0; i < NN; ++i) if(c.coeffs[i] != cp.coeffs[i]) { free(p); - return -1; + return -7; } return 0;