diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user index 19852f589e3c12356ab326ad73dd3a21d7178a31..d1ad6664b6cc9507c4e397109eb62f1646ea7811 100644 --- a/CMakeLists.txt.user +++ b/CMakeLists.txt.user @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> -<!-- Written by QtCreator 4.11.2, 2020-04-26T20:38:51. --> +<!-- Written by QtCreator 4.11.2, 2020-04-26T22:56:12. --> <qtcreator> <data> <variable>EnvironmentId</variable> diff --git a/src/iaes/iaes256_cbc_cernal.c b/src/iaes/iaes256_cbc_cernal.c index a61de19b7b267133d7f69ad71bee7f95655f0589..82abb79440f0f40b916bf9aeb985ce9a2651f17a 100755 --- a/src/iaes/iaes256_cbc_cernal.c +++ b/src/iaes/iaes256_cbc_cernal.c @@ -7,14 +7,10 @@ size_t iaes_calc_block128_size(size_t length_data) { - if(length_data < IAES_BLOCK_SIZE) { - return IAES_BLOCK_SIZE; - } else if((length_data % IAES_BLOCK_SIZE) == 0) { - return length_data; - } - - size_t padding = 16 - length_data % 16; - return length_data + padding; + size_t new_length_data = length_data + 1; + size_t padding = IAES_BLOCK_SIZE - new_length_data % IAES_BLOCK_SIZE; + new_length_data += padding; + return new_length_data; } size_t iaes_block128_padding(const void *data, uint8_t **data_new, size_t length_data) diff --git a/test/crypto/dap_enc_base58_test.c b/test/crypto/dap_enc_base58_test.c index a11ae9de3d6fbb9b83d7a40877b5dae01099eb78..33dd6e7f1fd72fb6e574444e38b2ecdb4b5ea108 100755 --- a/test/crypto/dap_enc_base58_test.c +++ b/test/crypto/dap_enc_base58_test.c @@ -3,18 +3,18 @@ #include <string.h> #include "dap_common.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_base58.h" #include "dap_enc_base58_test.h" static void test_encode_decode_base58(void) { static size_t source_size = 0; - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); //source[0] = 0; //source[1] = 0; size_t encode_result_size = DAP_ENC_BASE58_ENCODE_SIZE(source_size); diff --git a/test/crypto/dap_enc_base64_test.c b/test/crypto/dap_enc_base64_test.c index 8a172361f3c4b5c1af3b341319c358d688822e3b..0c4d2789e01ff8e856c8bab6c21779354670150e 100755 --- a/test/crypto/dap_enc_base64_test.c +++ b/test/crypto/dap_enc_base64_test.c @@ -6,12 +6,12 @@ void test_encode_decode_base64(int count_steps, dap_enc_data_type_t standard) size_t source_size = 0; for (int i = 1; i <= count_steps; i++) { - int step = 1 + (rand() % 20 ); + int step = 1 + random_uint32_t( 20 ); source_size += (size_t)step; uint8_t source[source_size]; char encode_result[DAP_ENC_BASE64_ENCODE_SIZE(source_size)]; uint8_t decode_result[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t encrypted_size = dap_enc_base64_encode(source, source_size, encode_result, standard); size_t out_size = dap_enc_base64_decode(encode_result, encrypted_size, decode_result, standard); diff --git a/test/crypto/dap_enc_base64_test.h b/test/crypto/dap_enc_base64_test.h index 9d1361d2c3474b4d2dfc24446a4ec0898dc7d38c..587bd94d2e72ec3d32a19350dfde0e547835dd8e 100755 --- a/test/crypto/dap_enc_base64_test.h +++ b/test/crypto/dap_enc_base64_test.h @@ -3,7 +3,7 @@ #include "dap_enc_key.h" #include "dap_test.h" #include "stdint.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" extern void dap_enc_base64_tests_run(void); diff --git a/test/crypto/dap_enc_defeo_test.h b/test/crypto/dap_enc_defeo_test.h index afed963762fbbce7f42de320c82ab6e622deb4ce..67cb35e576f07b9b41a4ce8a2200cb5f20a41a40 100755 --- a/test/crypto/dap_enc_defeo_test.h +++ b/test/crypto/dap_enc_defeo_test.h @@ -2,6 +2,6 @@ #include "dap_enc_defeo.h" #include "dap_enc_key.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" void dap_enc_defeo_tests_run(void); diff --git a/test/crypto/dap_enc_dilithium_test.c b/test/crypto/dap_enc_dilithium_test.c index 50436f7ac5961b8427de268a55390a2e4b2b38a6..1e39e1ece3d8aa7746ad43145448c58e015091b8 100755 --- a/test/crypto/dap_enc_dilithium_test.c +++ b/test/crypto/dap_enc_dilithium_test.c @@ -1,4 +1,4 @@ -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_dilithium_test.h" #include "dap_enc_dilithium.h" #include "../sig_dilithium/dilithium_params.h" @@ -9,18 +9,18 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_DILITHIUM, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_dilithium_calc_signature_unserialized_size(); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); diff --git a/test/crypto/dap_enc_picnic_test.c b/test/crypto/dap_enc_picnic_test.c index 146372471cdb94f92f5fbb35bec281f99013c267..909b4da58e2dde0040e72d9741253b7359cde26a 100755 --- a/test/crypto/dap_enc_picnic_test.c +++ b/test/crypto/dap_enc_picnic_test.c @@ -1,4 +1,4 @@ -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_picnic_test.h" #include "../sig_picnic/picnic.h" @@ -8,18 +8,18 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(int); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_PICNIC, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_picnic_calc_signature_size(key); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); diff --git a/test/crypto/dap_enc_picnic_test.h b/test/crypto/dap_enc_picnic_test.h index fa4cff2aab167864969e7f76353dd6dc116fba78..0e69eb1d0ace0aafa43463dac7890e0dc0b4c5b7 100755 --- a/test/crypto/dap_enc_picnic_test.h +++ b/test/crypto/dap_enc_picnic_test.h @@ -2,6 +2,6 @@ #include "dap_enc_picnic.h" #include "dap_enc_key.h" #include "dap_test.h" -//#include "dap_test_generator.h" +//#include "rand/dap_rand.h" void dap_enc_picnic_tests_run(void); diff --git a/test/crypto/dap_enc_ringct20_test.c b/test/crypto/dap_enc_ringct20_test.c index 60e13fe859287b4fb9b210873ef5c1618c06d27d..ba0fdaa5ff80ae8001afcc0626f90b3e8f65ad33 100644 --- a/test/crypto/dap_enc_ringct20_test.c +++ b/test/crypto/dap_enc_ringct20_test.c @@ -1,26 +1,24 @@ -#include "dap_test_generator.h" #include "dap_enc_ringct20_test.h" #include "dap_enc_ringct20.h" #include "ringct20/ringct20_params.h" +#include "rand/dap_rand.h" static void test_signing_verifying(void) { - static size_t source_size = 0; + size_t source_size = 1 + random_uint32_t(20); + uint8_t * source = DAP_NEW_SIZE(uint8_t, source_size); + randombytes(source, source_size); size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_RINGCT20, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_ringct20_calc_signature_size(); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); - source_size += (size_t) step; - uint8_t source[source_size]; - generate_random_byte_array(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); @@ -30,6 +28,7 @@ static void test_signing_verifying(void) dap_assert_PIF(!verify, "Verifying signature"); ringct20_signature_delete((ringct20_signature_t*)sig); + DAP_DELETE(source); free(sig); dap_enc_key_delete(key); } diff --git a/test/crypto/dap_enc_sig_bliss_test.h b/test/crypto/dap_enc_sig_bliss_test.h index 09841df83a2c0dddd0cd8b9684c4233e1cd772d8..85223f46f9cb601fe950ed4cc1c0114802fe1941 100755 --- a/test/crypto/dap_enc_sig_bliss_test.h +++ b/test/crypto/dap_enc_sig_bliss_test.h @@ -2,6 +2,6 @@ #include "dap_enc_bliss.h" #include "dap_enc_key.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" void dap_enc_sig_bliss_tests_run(void); diff --git a/test/crypto/dap_enc_sign_multi_test.c b/test/crypto/dap_enc_sign_multi_test.c index 706c52629aec0bf65f014f7da7cc896690b0f879..9d1f238a0ae993640842fcc6600976d58a2eae85 100755 --- a/test/crypto/dap_enc_sign_multi_test.c +++ b/test/crypto/dap_enc_sign_multi_test.c @@ -1,6 +1,6 @@ #include "dap_enc_sign_multi_test.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_sign.h" #define SIGNATURE_TYPE_COUNT 4 @@ -11,7 +11,7 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_type_t key_type_arr[SIGNATURE_TYPE_COUNT] = {\ DAP_ENC_KEY_TYPE_SIG_TESLA,\ @@ -21,14 +21,14 @@ static void test_signing_verifying(void) int step; dap_enc_key_t* key[KEYS_TOTAL_COUNT]; for (int i = 0; i < KEYS_TOTAL_COUNT; i++) { - step = (rand() % SIGNATURE_TYPE_COUNT); + step = random_uint32_t( SIGNATURE_TYPE_COUNT); key[i] = dap_enc_key_new_generate(key_type_arr[step], NULL, 0, seed, seed_size, 0); } - step = 1 + (rand() % 2000); + step = 1 + random_uint32_t( 2000); size_t source_size = (size_t) step; uint8_t *source = DAP_NEW_SIZE(uint8_t, source_size); - generate_random_byte_array(source, source_size); + randombytes(source, source_size); dap_multi_sign_params_t *params = dap_multi_sign_params_make(SIG_TYPE_MULTI_CHAINED, KEYS_TOTAL_COUNT, 5,\ key[0], key[1], key[2], key[3], key[4], key[5],\ diff --git a/test/crypto/dap_enc_tesla_test.c b/test/crypto/dap_enc_tesla_test.c index 60c7c33483d605bfc9f5f02d0acc44b8d5eda37c..fd43039663ffe42347eb13e147a117728e1e2305 100755 --- a/test/crypto/dap_enc_tesla_test.c +++ b/test/crypto/dap_enc_tesla_test.c @@ -1,4 +1,4 @@ -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_tesla_test.h" //#include "../sig_tesla/tesla_params.h" @@ -8,18 +8,18 @@ static void test_signing_verifying(void) size_t seed_size = sizeof(uint8_t); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); dap_enc_key_t* key = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_TESLA, NULL, 0, seed, seed_size, 0); size_t max_signature_size = dap_enc_tesla_calc_signature_size(); uint8_t* sig = calloc(max_signature_size, 1); - int step = 1 + (rand() % 20); + int step = 1 + random_uint32_t( 20); source_size += (size_t) step; uint8_t source[source_size]; - generate_random_byte_array(source, source_size); + randombytes(source, source_size); size_t siglen = key->enc_na(key, source, source_size, sig, max_signature_size); dap_assert_PIF(siglen > 0, "Signing message"); diff --git a/test/crypto/dap_enc_test.c b/test/crypto/dap_enc_test.c index 408dd57a4f072c10e699227c029045ae27564bde..6cb74b1622871bb0fdc6c8aad8695dc0552cd6d8 100755 --- a/test/crypto/dap_enc_test.c +++ b/test/crypto/dap_enc_test.c @@ -2,7 +2,7 @@ #include "dap_common.h" #include "dap_enc_test.h" #include "dap_test.h" -#include "dap_test_generator.h" +#include "rand/dap_rand.h" #include "dap_enc_key.h" #include "dap_enc_base64.h" #include "dap_enc_bliss.h" @@ -125,47 +125,65 @@ static void _encrypt_decrypt(enum dap_enc_key_type key_type, size_t count_steps) { size_t source_size = 1; - + const int MAX_SEED_SIZE = 14; + uint8_t seed[MAX_SEED_SIZE]; for (size_t i = 0; i < count_steps; i++) { - int step = 1 + (rand() % 20); - source_size += (size_t)step; + int step = 2;// + random_uint32_t( 20); + source_size = (size_t)step; const char *kex_data = "123"; size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); - uint8_t seed[seed_size]; - - generate_random_byte_array(seed, seed_size); + const size_t seed_size = 2;// + random_uint32_t(MAX_SEED_SIZE-1); + randombytes(seed, seed_size); + printf("i = %d ss = %d, ss=%d\n",i, source_size,seed_size );fflush(stdout); + uint8_t *source = DAP_NEW_SIZE(uint8_t, source_size); + printf(".");fflush(stdout); + randombytes(source, source_size); + printf(".");fflush(stdout); dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex_data, kex_size, seed, seed_size, 0); + printf(".");fflush(stdout); - - uint8_t source[source_size]; size_t encrypt_buff_size = dap_enc_code_out_size(key, source_size, data_type); - uint8_t encrypt_result[encrypt_buff_size]; - - generate_random_byte_array(source, source_size); - + uint8_t *encrypt_result = DAP_NEW_SIZE(uint8_t, encrypt_buff_size); + printf(".");fflush(stdout); size_t encrypted_size = dap_enc_code(key, source, source_size, encrypt_result, encrypt_buff_size, data_type); - + printf(".");fflush(stdout); size_t min_decode_buff_size = dap_enc_decode_out_size(key, encrypt_buff_size, data_type); - uint8_t decode_result[min_decode_buff_size]; + printf(".");fflush(stdout); + uint8_t *decode_result = DAP_NEW_SIZE(uint8_t, min_decode_buff_size); + printf(".");fflush(stdout); size_t out_size = dap_enc_decode(key, encrypt_result, encrypted_size, decode_result, min_decode_buff_size, data_type); + printf("source_size = %d, out_size = %d, min_decode_buff_size = %d, encrypt_buff_size = %d, encrypted_size = %d\n", + source_size, out_size,min_decode_buff_size, encrypt_buff_size, encrypted_size); + printf("%.2x%.2x\n", source[0], source[1]); + printf(".");fflush(stdout); dap_assert_PIF(source_size == out_size, "Check result decode size"); + printf(".");fflush(stdout); dap_assert_PIF(memcmp(source, decode_result, source_size) == 0, "Check source and encode->decode data"); + printf(".");fflush(stdout); +#ifdef xxxxx + + +#endif + DAP_DELETE(decode_result); + DAP_DELETE(encrypt_result); + DAP_DELETE(source); + printf(".");fflush(stdout); dap_enc_key_delete(key); + printf(".\n");fflush(stdout); } } @@ -256,10 +274,10 @@ static void test_serealize_deserealize(dap_enc_key_type_t key_type) { const char *kex_data = "1234567890123456789012345678901234567890";//"123"; size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); + const size_t seed_size = 1 + random_uint32_t( 1000); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); // for key_type==DAP_ENC_KEY_TYPE_OAES must be: key_size=[16|24|32] and kex_size>=key_size dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex_data, kex_size, seed, seed_size, 32); @@ -331,9 +349,9 @@ static void test_serealize_deserealize_pub_priv(dap_enc_key_type_t key_type) { const char *kex_data = "1234567890123456789012345678901234567890"; //"123"; size_t kex_size = strlen(kex_data); - const size_t seed_size = 1 + (rand() % 1000); + const size_t seed_size = 1 + random_uint32_t( 1000); uint8_t seed[seed_size]; - generate_random_byte_array(seed, seed_size); + randombytes(seed, seed_size); // Generate key dap_enc_key_t* key = dap_enc_key_new_generate(key_type, kex_data, kex_size, seed, seed_size, 32); @@ -364,11 +382,11 @@ static void test_serealize_deserealize_pub_priv(dap_enc_key_type_t key_type) dap_assert(key->pub_key_data_size == key2->pub_key_data_size, "Pub key data size"); dap_pass_msg("Key serealize->deserealize"); - size_t source_size = 10 + (rand() % 20); + size_t source_size = 10 + random_uint32_t( 20); uint8_t source_buf[source_size]; size_t sig_buf_size = 0; uint8_t *sig_buf = NULL; - generate_random_byte_array(source_buf, source_size); + randombytes(source_buf, source_size); // encode by key int is_sig = 0, is_vefify = 0; @@ -448,7 +466,7 @@ static void test_serealize_deserealize_pub_priv(dap_enc_key_type_t key_type) void dap_enc_tests_run() { dap_print_module_name("dap_enc"); init_test_case(); - test_encode_decode_raw(50); + test_encode_decode_raw(500);return; test_encode_decode_raw_b64(50); test_encode_decode_raw_b64_url_safe(50); test_key_transfer_msrln(); diff --git a/test/crypto/main.c b/test/crypto/main.c index 3618e074142fe39d9a2d9b68aadc97c3a706bef0..6d833774cf5943dfae30e7434441d9f56e3ed04e 100755 --- a/test/crypto/main.c +++ b/test/crypto/main.c @@ -19,6 +19,9 @@ int main(void) // switch off debug info from library dap_log_level_set(L_CRITICAL); + dap_enc_tests_run();return 0; + + dap_enc_ringct20_tests_run(100); test_encode_decode (100, DAP_ENC_KEY_TYPE_BF_CBC,0); test_encode_decode_fast (100, DAP_ENC_KEY_TYPE_BF_CBC,0); test_encode_decode (100, DAP_ENC_KEY_TYPE_BF_OFB,0); @@ -30,7 +33,6 @@ int main(void) test_encode_decode (100, DAP_ENC_KEY_TYPE_OAES,32); test_encode_decode_fast (100, DAP_ENC_KEY_TYPE_OAES,32); - dap_enc_ringct20_tests_run(100); dap_enc_picnic_tests_run(); dap_enc_sig_bliss_tests_run(); dap_enc_dilithium_tests_run(); @@ -38,7 +40,6 @@ int main(void) dap_enc_base64_tests_run(); dap_enc_base58_tests_run(); dap_enc_msrln_tests_run(); - dap_enc_tests_run(); dap_enc_defeo_tests_run(); dap_enc_tesla_tests_run(); dap_enc_multi_sign_tests_run();