diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ff545b7395b80f98212d562e74f2b0e762ccd49..3e0af01c28027db875c2b7403ff673d354ee1529 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 3.0) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.8-20") +set(CELLFRAME_SDK_NATIVE_VERSION "2.8-21") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") diff --git a/dap-sdk/crypto/CMakeLists.txt b/dap-sdk/crypto/CMakeLists.txt index 1896bd9b0cc761639b00564fe2b710050f52b593..0aa772704dde0a443c34cae77a926f11a21769c8 100755 --- a/dap-sdk/crypto/CMakeLists.txt +++ b/dap-sdk/crypto/CMakeLists.txt @@ -65,11 +65,13 @@ endif() if(UNIX) if (LINUX) - if(BUILD_64) - file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64/KeccakP-1600-x86-64-gas.s ) - else() - file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/Inplace32BI/KeccakP-1600-inplace32BI.c ) - endif() + if(DAP_DEBUG) + if(BUILD_64) + file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/Compact64/KeccakP-1600-compact64.c ) + else() + file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/Inplace32BI/KeccakP-1600-inplace32BI.c ) + endif() + endif() elseif(APPLE) if(BUILD_64) file( GLOB XKCP_SRCS2 src/XKCP/lib/low/KeccakP-1600/OptimizedAsmX86-64/KeccakP-1600-x86-64-gas_Apple.s ) diff --git a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c index 4bdc73fb0e7d927d02771e974cc719553b30a194..5e810d4c8282ef41ae54e0553f32270a938d9e43 100644 --- a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c +++ b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c @@ -236,6 +236,19 @@ static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_ log_it(L_WARNING, "Event is NOT signed with anything: sig pos %zd, event size %zd", a_dag_event_size); return -4; } + size_t l_dag_event_size_without_sign = dap_chain_cs_dag_event_calc_size_excl_signs(a_dag_event,a_dag_event_size); + + int l_sign_verify_ret = dap_sign_verify(l_sign,a_dag_event,l_dag_event_size_without_sign); + if ( l_sign_verify_ret != 0){ + log_it(L_WARNING, "Event's sign is incorrect: code %d", l_sign_verify_ret); + return -41; + + } + + if (!l_dag_event_size_without_sign){ + log_it(L_WARNING,"Event has nothing except sign, nothing to verify so I pass it (who knows why we have it?)"); + return 0; + } dap_chain_hash_fast_t l_pkey_hash; if (!dap_sign_get_pkey_hash(l_sign, &l_pkey_hash)) { @@ -244,6 +257,8 @@ static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_ } dap_chain_addr_fill(&l_addr, l_sign->header.type, &l_pkey_hash, a_dag->chain->net_id); + + if (l_sig_pos == 0) { dap_chain_datum_t *l_datum = (dap_chain_datum_t *)dap_chain_cs_dag_event_get_datum(a_dag_event,a_dag_event_size); if (l_datum->header.type_id == DAP_CHAIN_DATUM_TX) {