diff options
author | Joachim StroĢmbergson <joachim@secworks.se> | 2015-05-22 15:00:24 +0200 |
---|---|---|
committer | Joachim StroĢmbergson <joachim@secworks.se> | 2015-05-22 15:00:24 +0200 |
commit | 7bb2e93583ad67c1f9beb37742116c4903d32677 (patch) | |
tree | 69bc0ec9e0c41ca85337ad03e85096a55fb14d74 /src/model/c/src/simple_tests.c | |
parent | 28f6859c5dbaf7da1dc3bcccb831dc64f2046606 (diff) |
Updated the C model with version of modexp that supports explicit, separate lengths for exponent and modulus. Also added new test cases, cleaned up code etc.
Diffstat (limited to 'src/model/c/src/simple_tests.c')
-rw-r--r-- | src/model/c/src/simple_tests.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/model/c/src/simple_tests.c b/src/model/c/src/simple_tests.c index 402a8ac..54f7a67 100644 --- a/src/model/c/src/simple_tests.c +++ b/src/model/c/src/simple_tests.c @@ -62,9 +62,61 @@ void simple_251_251_257(void) { assertArrayEquals(1, expected, Z); } + +void small_e_256_mod(void) { + printf("=== Simple test with small, implicit e ===\n"); + uint32_t X[] = {0x00000000, 0xbd589a51, 0x2ba97013, + 0xc4736649, 0xe233fd5c, 0x39fcc5e5, + 0x2d60b324, 0x1112f2d0, 0x1177c62b}; + uint32_t E[] = {0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 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_array(9, X, E, M, Z); + 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 simple_tests(void) { simple_3_7_11(); simple_251_251_257(); + small_e_256_mod(); + small_e_256_mod2(); } //====================================================================== |