diff options
author | Joachim StroĢmbergson <joachim@secworks.se> | 2015-06-02 09:32:40 +0200 |
---|---|---|
committer | Joachim StroĢmbergson <joachim@secworks.se> | 2015-06-02 09:32:40 +0200 |
commit | fdc354a34d715d8087ad68e25e182bbff513074b (patch) | |
tree | dfe013dc9aed6e1a4b393e3b500bfcc0866e4f20 /src/model | |
parent | dc0249ac5bea597cec09ba36966b43c5e84f017f (diff) |
Adding 1024 bit test case from Rob to verify that it works in the model.
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/c/src/simple_tests.c | 115 |
1 files changed, 88 insertions, 27 deletions
diff --git a/src/model/c/src/simple_tests.c b/src/model/c/src/simple_tests.c index 54f7a67..1b2b258 100644 --- a/src/model/c/src/simple_tests.c +++ b/src/model/c/src/simple_tests.c @@ -63,8 +63,34 @@ void simple_251_251_257(void) { } +void bigger_test(void) +{ + printf("=== Bigger test with 128 bit operands.\n"); + uint32_t exponent[] = {0x3285c343, 0x2acbcb0f, 0x4d023228, 0x2ecc73db}; + uint32_t modulus[] = {0x267d2f2e, 0x51c216a7, 0xda752ead, 0x48d22d89}; + uint32_t message[] = {0x29462882, 0x12caa2d5, 0xb80e1c66, 0x1006807f}; + uint32_t expected[] = {0x0ddc404d, 0x91600596, 0x7425a8d8, 0xa066ca56}; + uint32_t result[] = {0x00000000, 0x00000000, 0x00000000, 0x00000000}; + + mod_exp_array(4, message, exponent, modulus, result); + assertArrayEquals(4, expected, result); +} + + +void small_e_64_mod(void) +{ + printf("=== Simple test with small e and 64 bit modulus ===\n"); + uint32_t X[] = { 0x00000000, 0xdb5a7e09, 0x86b98bfb }; + uint32_t E[] = { 0x00000000, 0x00000000, 0x00010001 }; + uint32_t M[] = { 0x00000000, 0xb3164743, 0xe1de267d }; + uint32_t expected[] = { 0x00000000, 0x9fc7f328, 0x3ba0ae18 }; + uint32_t Z[] = { 0x00000000, 0x00000000, 0x00000000 }; + mod_exp_array(3, X, E, M, Z); + assertArrayEquals(3, expected, Z); +} + void small_e_256_mod(void) { - printf("=== Simple test with small, implicit e ===\n"); + printf("=== Simple test with small e and 256 bit modulus ===\n"); uint32_t X[] = {0x00000000, 0xbd589a51, 0x2ba97013, 0xc4736649, 0xe233fd5c, 0x39fcc5e5, 0x2d60b324, 0x1112f2d0, 0x1177c62b}; @@ -88,37 +114,72 @@ void small_e_256_mod(void) { assertArrayEquals(9, expected, Z); } -void small_e_256_mod2(void) { - printf("=== Simple test with explicit e ===\n"); - uint32_t X[] = {0x00000000, 0xbd589a51, 0x2ba97013, - 0xc4736649, 0xe233fd5c, 0x39fcc5e5, - 0x2d60b324, 0x1112f2d0, 0x1177c62b}; - uint32_t E[] = {0x00010001}; - - uint32_t M[] = {0x00000000, 0xf169d36e, 0xbe2ce61d, - 0xc2e87809, 0x4fed15c3, 0x7c70eac5, - 0xa123e643, 0x299b36d2, 0x788e583b }; - - uint32_t expected[] = {0x00000000, 0x7c5f0fee, 0x73028fc5, - 0xc4fe57c4, 0x91a6f5be, 0x33a5c174, - 0x2d2c2bcd, 0xda80e7d6, 0xfb4c889f}; - - uint32_t Z[] = {0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000}; - - mod_exp_array2(1, 9, X, E, M, Z); - assertArrayEquals(9, expected, Z); +void rob_1024(void) +{ + uint32_t exponent = {0x3ff26c9e, 0x32685b93, 0x66570228, 0xf0603c4e, + 0x04a717c1, 0x8038b116, 0xeb48325e, 0xcada992a, + 0x920bb241, 0x5aee4afe, 0xe2a37e87, 0xb35b9519, + 0xb335775d, 0x989553e9, 0x1326f46e, 0x2cdf6b7b, + 0x84aabfa9, 0xef24c600, 0xb56872ad, 0x5edb9041, + 0xe8ecd7f8, 0x535133fb, 0xdefc92c7, 0x42384226, + 0x7d40e5f5, 0xc91bd745, 0x9578e460, 0xfc858374, + 0x3172bed3, 0x73b6957c, 0xc0d6a68e, 0x33156a61}; + + + uint32_t modulus = {0xd075ec0a, 0x95048ef8, 0xcaa69073, 0x8d9d58e9, + 0x1764b437, 0x50b58cad, 0x8a6e3199, 0x135f80ee, + 0x84eb2bde, 0x58d38ee3, 0x5825e91e, 0xafdeb1ba, + 0xa15a160b, 0x0057c47c, 0xc7765e31, 0x868a3e15, + 0x5ee57cef, 0xb008c4dd, 0x6a0a89ee, 0x98a4ee9c, + 0x971a07de, 0x61e5b0d3, 0xcf70e1cd, 0xc6a0de5b, + 0x451f2fb9, 0xdb995196, 0x9f2f884b, 0x4b09749a, + 0xe6c4ddbe, 0x7ee61f79, 0x265c6adf, 0xb16b3015}; + + + uint32_t message = {0x0001ffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, + 0xffffffff, 0xffffffff, 0xffffffff, 0x00303130, + 0x0d060960, 0x86480165, 0x03040201, 0x05000420, + 0x8e36fc9a, 0xa31724c3, 0x2416263c, 0x0366a175, + 0xfabbb92b, 0x741ca649, 0x6107074d, 0x0343b597}; + + + uint32_t expected = {0x06339a64, 0x367db02a, 0xf41158cc, 0x95e76049, + 0x4519c165, 0x111184be, 0xe41d8ee2, 0x2ae5f5d1, + 0x1da7f962, 0xac93ac88, 0x915eee13, 0xa3350c22, + 0xf0dfa62e, 0xfdfc2b62, 0x29f26e27, 0xbebdc84e, + 0x4746df79, 0x7b387ad2, 0x13423c9f, 0x98e8a146, + 0xff486b6c, 0x1a85414e, 0x73117121, 0xb700e547, + 0xab4e07b2, 0x21b988b8, 0x24dd77c2, 0x046b0a20, + 0xcddb986a, 0xac75c2f2, 0xb044ed59, 0xea565879}; + + + uint32_t target[] = {0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000}; + + mod_exp_array(128, message, exponent, modulus, target); + assertArrayEquals(128, expected, target); } void simple_tests(void) { - simple_3_7_11(); - simple_251_251_257(); - small_e_256_mod(); - small_e_256_mod2(); +// simple_3_7_11(); +// simple_251_251_257(); +// bigger_test(); +// small_e_256_mod(); +// small_e_64_mod(); + rob_1024(); + // small_e_256_mod2(); } //====================================================================== -// EOF simple_tests.h +// EOF simple_tests.c //====================================================================== |