From b2d5381763e13834166b06e0a208aafbf1bfa394 Mon Sep 17 00:00:00 2001
From: "pavel.uhanov" <pavel.uhanov@demlabs.net>
Date: Thu, 2 Nov 2023 12:11:44 +0000
Subject: [PATCH] feature-9513_9640

---
 CMakeLists.txt                                       | 2 ++
 dap-sdk                                              | 2 +-
 modules/chain/dap_chain_ledger.c                     | 2 +-
 modules/consensus/block-pos/dap_chain_cs_block_pos.c | 2 +-
 modules/consensus/dag-poa/dap_chain_cs_dag_poa.c     | 4 ++--
 modules/consensus/dag-pos/dap_chain_cs_dag_pos.c     | 2 +-
 modules/consensus/esbocs/dap_chain_cs_esbocs.c       | 8 ++++----
 modules/net/dap_chain_node_cli_cmd.c                 | 2 +-
 8 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9f7200e25d..3d1db0661c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,6 +6,7 @@ set(CELLFRAME_SDK_NATIVE_VERSION "3.3-0")
 
 add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"")
 
+
 set(DAPSDK_MODULES "")
 
 if(NOT DEFINED CELLFRAME_MODULES)
@@ -42,6 +43,7 @@ endif(NOT DAP_INT128_SUPPORT)
 
 if (BUILD_CELLFRAME_SDK_TESTS)
     enable_testing()
+    set(SPHINCSPLUS_FLEX ON)
     add_definitions("-DDAP_CHAIN_LEDGER_TEST")
     set(CELLFRAME_MODULES ${CELLFRAME_MODULES} "test-framework")
     if (NOT OFF_CORE_CELLFRAME_SDK_TESTS_OFF MATCHES "all")
diff --git a/dap-sdk b/dap-sdk
index 365d039874..96ba735518 160000
--- a/dap-sdk
+++ b/dap-sdk
@@ -1 +1 @@
-Subproject commit 365d039874eae7f51510db294000f5f6b05537a2
+Subproject commit 96ba735518d1557f60dedbf46846b2fcd0834eb0
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index 18ffdfc4dc..10253754e5 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -2630,7 +2630,7 @@ int dap_chain_ledger_token_emission_add_check(dap_ledger_t *a_ledger, byte_t *a_
                         for (uint16_t k=0; k< l_token_item->auth_signs_total; k++) {
                             if (dap_hash_fast_compare(&l_sign_pkey_hash, &l_token_item->auth_pkeys_hash[k])) {
                                 // Verify if its token emission header signed
-                                if (dap_sign_verify(l_sign, l_emi_ptr_check_size, l_sign_data_check_size) == 1) {
+                                if (!dap_sign_verify(l_sign, l_emi_ptr_check_size, l_sign_data_check_size)) {
                                     l_aproves++;
                                     break;
                                 }
diff --git a/modules/consensus/block-pos/dap_chain_cs_block_pos.c b/modules/consensus/block-pos/dap_chain_cs_block_pos.c
index dc2e90d76b..b6e279d165 100644
--- a/modules/consensus/block-pos/dap_chain_cs_block_pos.c
+++ b/modules/consensus/block-pos/dap_chain_cs_block_pos.c
@@ -262,7 +262,7 @@ static int s_callback_block_verify(dap_chain_cs_blocks_t *a_blocks, dap_chain_bl
         }
 
         int l_sign_verified = dap_sign_verify(l_sign, a_block, l_block_data_size);
-        if (l_sign_verified != 1) {
+        if (l_sign_verified) {
             log_it(L_WARNING, "Block's sign is incorrect: code %d", l_sign_verified);
             return -41;
         }
diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
index cf0749d941..70c4b64b26 100644
--- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
+++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c
@@ -908,8 +908,8 @@ static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_
             // Compare signature with auth_certs
             a_event->header.signs_count = i;
             for (uint16_t j = 0; j < l_poa_pvt->auth_certs_count; j++) {
-                if (dap_cert_compare_with_sign( l_poa_pvt->auth_certs[j], l_sign) == 0
-                            && dap_sign_verify(l_sign, a_event, l_offset_from_beginning) == 1 ){
+                if (!dap_cert_compare_with_sign( l_poa_pvt->auth_certs[j], l_sign)
+                            && !dap_sign_verify(l_sign, a_event, l_offset_from_beginning)){
                     l_signs_verified_count++;
                     break;
                 }
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 440b2fa978..0222e24928 100644
--- a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c
+++ b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c
@@ -269,7 +269,7 @@ static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_
             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_verified = dap_sign_verify(l_sign, a_dag_event, l_dag_event_size_without_sign);
             a_dag_event->header.signs_count = l_signs_total;
-            if (l_sign_verified != 1) {
+            if (l_sign_verified) {
                 log_it(L_WARNING, "Event's sign is incorrect: code %d", l_sign_verified);
                 return -41;
             }
diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
index 83a2d70ea5..abe85906fa 100644
--- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c
+++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c
@@ -2226,10 +2226,10 @@ static void s_session_packet_in(void *a_arg, dap_chain_node_addr_t *a_sender_nod
         }
 
         size_t l_offset = dap_chain_block_get_sign_offset(l_store->candidate, l_store->candidate_size);
-        bool l_sign_verified = dap_sign_verify(l_candidate_sign, l_store->candidate,
-                                                l_offset + sizeof(l_store->candidate->hdr)) == 1;
+        int l_sign_verified = dap_sign_verify(l_candidate_sign, l_store->candidate,
+                                                l_offset + sizeof(l_store->candidate->hdr));
         // check candidate's sign
-        if (l_sign_verified) {
+        if (!l_sign_verified) {
             l_store->candidate_signs = dap_list_append(l_store->candidate_signs,
                                                        DAP_DUP_SIZE(l_candidate_sign, l_candidate_sign_size));
             if (dap_list_length(l_store->candidate_signs) == l_round->validators_synced_count) {
@@ -2469,7 +2469,7 @@ static int s_callback_block_verify(dap_chain_cs_blocks_t *a_blocks, dap_chain_bl
                 continue;
             }
         }
-        if (dap_sign_verify(l_sign, a_block, l_block_excl_sign_size) == 1)
+        if (!dap_sign_verify(l_sign, a_block, l_block_excl_sign_size))
             l_signs_verified_count++;
     }
     DAP_DELETE(l_signs);
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index b48ae81e5d..0ae4f5cf7e 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -2473,7 +2473,7 @@ int com_token_decl_sign(int a_argc, char **a_argv, char ** a_str_reply)
                 size_t l_signs_size = 0, i = 1;
                 for (i = 1; i <= l_datum_token->signs_total; i++){
                     dap_sign_t *l_sign = (dap_sign_t *)(l_datum_token->data_n_tsd + l_tsd_size + l_signs_size);
-                    if( dap_sign_verify(l_sign, l_datum_token, sizeof(*l_datum_token) - sizeof(uint16_t)) != 1) {
+                    if(dap_sign_verify(l_sign, l_datum_token, sizeof(*l_datum_token) - sizeof(uint16_t))) {
                         log_it(L_WARNING, "Wrong signature %zu for datum_token with key %s in mempool!", i, l_datum_hash_out_str);
                         dap_cli_server_cmd_set_reply_text(a_str_reply,
                                 "Datum %s with datum token has wrong signature %zu, break process and exit",
-- 
GitLab