1 #include <stdio.h> 2 3 #include <bi.h> 4 5 // use standard C definition to avoid .h test_exp_multi(void)6int test_exp_multi(void) { 7 bi_t result; 8 bi_t g[3]; 9 unsigned long e[3]; 10 11 bi_new( result); 12 bi_new( g[0]); 13 bi_new( g[1]); 14 bi_new( g[2]); 15 // result = (2^2 * 5^4 * 7^7) mod 56 -> should give 28 16 bi_set_as_dec( g[0], "2"); 17 bi_set_as_dec( g[1], "5"); 18 bi_set_as_dec( g[2], "7"); 19 e[0] = 2L; 20 e[1] = 4L; 21 e[2] = 7L; 22 bi_multi_mod_exp( result, 3, g, e, 56); 23 printf("multi-exponentiation <result>=%s\n", bi_2_dec_char(result)); 24 bi_free( g[0]); 25 bi_free( g[1]); 26 bi_free( g[2]); 27 bi_free( result); 28 return 0; 29 } 30