diff --git a/CMakeLists.txt b/CMakeLists.txt index 00389be8568ad39156f40db432a8b54d2b8779d5..50ff36c0cd802f1abd1151760393884b94c3604a 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-106") +set(CELLFRAME_SDK_NATIVE_VERSION "2.6-107") 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 cf8ce98887b5becdef979d3e75c3c0f0178e2ebb..43e39cba2902e6ffa9585d1a8b3e29a6bd261430 100755 --- a/dap-sdk/crypto/src/dap_enc_dilithium.c +++ b/dap-sdk/crypto/src/dap_enc_dilithium.c @@ -274,6 +274,7 @@ uint8_t* dap_enc_dilithium_write_public_key(const dilithium_public_key_t* a_publ uint64_t l_buflen = sizeof(uint64_t) + sizeof(dilithium_kind_t) + p.CRYPTO_PUBLICKEYBYTES; uint8_t *l_buf = DAP_NEW_Z_SIZE(byte_t, l_buflen); memcpy(l_buf, &l_buflen, sizeof(uint64_t)); + memcpy(l_buf + sizeof(uint64_t), &a_public_key->kind, sizeof(dilithium_kind_t)); memcpy(l_buf + sizeof(uint64_t) + sizeof(dilithium_kind_t), a_public_key->data, p.CRYPTO_PUBLICKEYBYTES); if(a_buflen_out) @@ -368,9 +369,12 @@ dilithium_public_key_t* dap_enc_dilithium_read_public_key(const uint8_t *a_buf, memcpy(&kind, a_buf + sizeof(uint64_t), sizeof(dilithium_kind_t)); if(l_buflen != (uint64_t) a_buflen){ - log_it(L_ERROR,"::read_public_key() Buflen field inside buffer is %"DAP_UINT64_FORMAT_u" when expected to be %" DAP_UINT64_FORMAT_u, - l_buflen,(uint64_t) a_buflen); - return NULL; + if (l_buflen <<32 >>32 != (uint64_t) a_buflen ){ + log_it(L_ERROR,"::read_public_key() Buflen field inside buffer is %"DAP_UINT64_FORMAT_u" when expected to be %" DAP_UINT64_FORMAT_u, + l_buflen,(uint64_t) a_buflen); + return NULL; + }else + l_buflen = l_buflen<<32 >>32; } dilithium_param_t p; if(!dilithium_params_init(&p, kind)){ @@ -443,7 +447,7 @@ dilithium_public_key_t* dap_enc_dilithium_read_public_key_old(const uint8_t *a_b } dilithium_public_key_t* l_public_key = DAP_NEW_Z(dilithium_public_key_t); - l_public_key->kind = kind; + l_public_key->kind = kind ; l_public_key->data = DAP_NEW_Z_SIZE(unsigned char, p.CRYPTO_PUBLICKEYBYTES); memcpy(l_public_key->data, a_buf + sizeof(uint32_t) + sizeof(dilithium_kind_t), p.CRYPTO_PUBLICKEYBYTES);