From 081db4b2609fc046e566df3c0ccef12ebebc0b38 Mon Sep 17 00:00:00 2001
From: "ivan.fedorov" <ivan.fedorov@demlabs.net>
Date: Sun, 10 May 2020 20:03:21 +0300
Subject: [PATCH] multi_sign bug resolved

---
 dap-sdk/crypto/src/dap_sign.c                 | 20 +++++++++----------
 dap-sdk/crypto/src/newhope/newhope.pri        |  2 +-
 .../test/crypto/dap_enc_sign_multi_test.c     |  2 +-
 dap-sdk/crypto/test/crypto/main.c             |  2 +-
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/dap-sdk/crypto/src/dap_sign.c b/dap-sdk/crypto/src/dap_sign.c
index b27c2c2c57..fea8f12eb6 100755
--- a/dap-sdk/crypto/src/dap_sign.c
+++ b/dap-sdk/crypto/src/dap_sign.c
@@ -479,14 +479,14 @@ dap_multi_sign_t *dap_multi_sign_deserialize(dap_sign_type_enum_t a_type, uint8_
     l_mem_shift++;
     memcpy(&l_sign->sign_count, &a_sign[l_mem_shift], 1);
     l_mem_shift++;
-    l_sign->key_seq = DAP_NEW_SIZE(dap_multi_sign_keys_t, l_sign->sign_count * sizeof(dap_multi_sign_keys_t));
+    l_sign->key_seq = DAP_NEW_Z_SIZE(dap_multi_sign_keys_t, l_sign->sign_count * sizeof(dap_multi_sign_keys_t));
     for (int i = 0; i < l_sign->sign_count; i++) {
         memcpy(&l_sign->key_seq[i].num, &a_sign[l_mem_shift], 1);
         l_mem_shift++;
         memcpy(&l_sign->key_seq[i].type, &a_sign[l_mem_shift], sizeof(dap_sign_type_t));
         l_mem_shift += sizeof(dap_sign_type_t);
     }
-    l_sign->meta = DAP_NEW_SIZE(dap_multi_sign_meta_t, l_sign->sign_count * sizeof(dap_multi_sign_meta_t));
+    l_sign->meta = DAP_NEW_Z_SIZE(dap_multi_sign_meta_t, l_sign->sign_count * sizeof(dap_multi_sign_meta_t));
     size_t l_pkeys_size = 0, l_signes_size = 0;
     for (int i = 0; i < l_sign->sign_count; i++) {
         memcpy(&l_sign->meta[i].pkey_size, &a_sign[l_mem_shift], sizeof(uint32_t));
@@ -496,13 +496,13 @@ dap_multi_sign_t *dap_multi_sign_deserialize(dap_sign_type_enum_t a_type, uint8_
         l_mem_shift += sizeof(uint32_t);
         l_signes_size += l_sign->meta[i].sign_size;
     }
-    l_sign->key_hashes = DAP_NEW_SIZE(dap_chain_hash_fast_t, l_sign->total_count * sizeof(dap_chain_hash_fast_t));
+    l_sign->key_hashes = DAP_NEW_Z_SIZE(dap_chain_hash_fast_t, l_sign->total_count * sizeof(dap_chain_hash_fast_t));
     for (int i = 0; i < l_sign->total_count; i++) {
         memcpy(&l_sign->key_hashes[i], &a_sign[l_mem_shift], sizeof(dap_chain_hash_fast_t));
         l_mem_shift += sizeof(dap_chain_hash_fast_t);
     }
     uint32_t l_data_shift = 0, l_data_size = 0;
-    l_sign->pub_keys = DAP_NEW_SIZE(uint8_t, l_pkeys_size);
+    l_sign->pub_keys = DAP_NEW_Z_SIZE(uint8_t, l_pkeys_size);
     for (int i = 0; i < l_sign->sign_count; i++) {
         l_data_size = l_sign->meta[i].pkey_size;
         memcpy( &l_sign->pub_keys[l_data_shift], &a_sign[l_mem_shift],l_data_size);
@@ -510,7 +510,7 @@ dap_multi_sign_t *dap_multi_sign_deserialize(dap_sign_type_enum_t a_type, uint8_
         l_data_shift += l_data_size;
     }
     l_data_shift = l_data_size = 0;
-    l_sign->sign_data = DAP_NEW_SIZE(uint8_t, l_signes_size);
+    l_sign->sign_data = DAP_NEW_Z_SIZE(uint8_t, l_signes_size);
     for (int i = 0; i < l_sign->sign_count; i++) {
         l_data_size = l_sign->meta[i].sign_size;
         memcpy(&l_sign->sign_data[l_data_shift], &a_sign[l_mem_shift], l_data_size);
@@ -632,7 +632,7 @@ dap_multi_sign_t *dap_multi_sign_create(dap_multi_sign_params_t *a_params, const
     dap_multi_sign_t *l_sign = DAP_NEW_Z(dap_multi_sign_t);
     l_sign->type = a_params->type;
     l_sign->total_count = a_params->total_count;
-    l_sign->key_hashes = DAP_NEW_SIZE(dap_chain_hash_fast_t, a_params->total_count * sizeof(dap_chain_hash_fast_t));
+    l_sign->key_hashes = DAP_NEW_Z_SIZE(dap_chain_hash_fast_t, a_params->total_count * sizeof(dap_chain_hash_fast_t));
     for (int i = 0; i < a_params->total_count; i++) {
         if (!dap_hash_fast(a_params->keys[i]->pub_key_data, a_params->keys[i]->pub_key_data_size, &l_sign->key_hashes[i])) {
             log_it (L_ERROR, "Can't create multi-signature hash");
@@ -641,8 +641,8 @@ dap_multi_sign_t *dap_multi_sign_create(dap_multi_sign_params_t *a_params, const
         }
     }
     l_sign->sign_count = a_params->sign_count;
-    l_sign->key_seq = DAP_NEW_SIZE(dap_multi_sign_keys_t, a_params->sign_count * sizeof(dap_multi_sign_keys_t));
-    l_sign->meta = DAP_NEW_SIZE(dap_multi_sign_meta_t, a_params->sign_count * sizeof(dap_multi_sign_meta_t));
+    l_sign->key_seq = DAP_NEW_Z_SIZE(dap_multi_sign_keys_t, a_params->sign_count * sizeof(dap_multi_sign_keys_t));
+    l_sign->meta = DAP_NEW_Z_SIZE(dap_multi_sign_meta_t, a_params->sign_count * sizeof(dap_multi_sign_meta_t));
     for (int i = 0; i < l_sign->sign_count; i++) {
         uint8_t l_num = a_params->key_seq[i];
         l_sign->key_seq[i].num = l_num;
@@ -674,7 +674,7 @@ dap_multi_sign_t *dap_multi_sign_create(dap_multi_sign_params_t *a_params, const
         uint8_t *l_pkey = dap_sign_get_pkey(l_dap_sign_step, &l_pkey_size);
         l_sign->meta[i].pkey_size = l_pkey_size;
         if (l_pkeys_mem_shift == 0) {
-            l_sign->pub_keys = DAP_NEW_SIZE(uint8_t, l_pkey_size);
+            l_sign->pub_keys = DAP_NEW_Z_SIZE(uint8_t, l_pkey_size);
         } else {
             l_sign->pub_keys = DAP_REALLOC(l_sign->pub_keys, l_pkeys_mem_shift + l_pkey_size);
         }
@@ -683,7 +683,7 @@ dap_multi_sign_t *dap_multi_sign_create(dap_multi_sign_params_t *a_params, const
         uint8_t *l_sign_step = dap_sign_get_sign(l_dap_sign_step, &l_sign_size);
         l_sign->meta[i].sign_size = l_sign_size;
         if (l_signs_mem_shift == 0) {
-            l_sign->sign_data = DAP_NEW_SIZE(uint8_t, l_sign_size);
+            l_sign->sign_data = DAP_NEW_Z_SIZE(uint8_t, l_sign_size);
         } else {
             l_sign->sign_data = DAP_REALLOC(l_sign->sign_data, l_signs_mem_shift + l_sign_size);
         }
diff --git a/dap-sdk/crypto/src/newhope/newhope.pri b/dap-sdk/crypto/src/newhope/newhope.pri
index 7f618fd998..19a232bca1 100755
--- a/dap-sdk/crypto/src/newhope/newhope.pri
+++ b/dap-sdk/crypto/src/newhope/newhope.pri
@@ -1,3 +1,3 @@
-INCLUDEPATH += $$PW
+INCLUDEPATH += $$PWD
 HEADERS += $$PWD/newhope_api.h  $$PWD/newhope_cpakem.h  $$PWD/newhope_cpapke.h  $$PWD/newhope_ntt.h  $$PWD/newhope_params.h  $$PWD/newhope_poly.h  $$PWD/newhope_reduce.h
 SOURCES += $$PWD/newhope_cpakem.c  $$PWD/newhope_cpapke.c  $$PWD/newhope_ntt.c  $$PWD/newhope_poly.c  $$PWD/newhope_precomp.c  $$PWD/newhope_reduce.c
diff --git a/dap-sdk/crypto/test/crypto/dap_enc_sign_multi_test.c b/dap-sdk/crypto/test/crypto/dap_enc_sign_multi_test.c
index 2a7a47bb0b..ffb2c87b5c 100755
--- a/dap-sdk/crypto/test/crypto/dap_enc_sign_multi_test.c
+++ b/dap-sdk/crypto/test/crypto/dap_enc_sign_multi_test.c
@@ -69,5 +69,5 @@ void dap_enc_multi_sign_tests_run()
     dap_print_module_name("dap_enc_sign_multi");
     init_test_case();
 
-    benchmark_mgs_time("Signing and verifying message 1 time", benchmark_test_time(test_signing_verifying, 1));
+    benchmark_mgs_time("Signing and verifying message 1 time", benchmark_test_time(test_signing_verifying, 10));
 }
diff --git a/dap-sdk/crypto/test/crypto/main.c b/dap-sdk/crypto/test/crypto/main.c
index fe0887d99f..e1073d6860 100755
--- a/dap-sdk/crypto/test/crypto/main.c
+++ b/dap-sdk/crypto/test/crypto/main.c
@@ -20,7 +20,7 @@ int main(void)
  // switch off debug info from library
     dap_log_level_set(L_CRITICAL);
     const int  test_numbers = 100;
-    //dap_enc_multi_sign_tests_run();return 0;
+    dap_enc_multi_sign_tests_run();
     dap_enc_newhope_tests_run(test_numbers);
     test_encypt_decrypt      (test_numbers, DAP_ENC_KEY_TYPE_SEED_OFB,  32);
     test_encypt_decrypt_fast (test_numbers, DAP_ENC_KEY_TYPE_SEED_OFB,  32);
-- 
GitLab