| /* unused */ |
| |
| #include <stdio.h> |
| #include <openssl/tmdiff.h> |
| #include "bn_lcl.h" |
| |
| #define SIZE 256 |
| #define NUM (8*8*8) |
| #define MOD (8*8*8*8*8) |
| |
| main(argc, argv) |
| int argc; |
| char *argv[]; |
| { |
| BN_CTX ctx; |
| BIGNUM a, b, c, r, rr, t, l; |
| int j, i, size = SIZE, num = NUM, mod = MOD; |
| char *start, *end; |
| BN_MONT_CTX mont; |
| double d, md; |
| |
| BN_MONT_CTX_init(&mont); |
| BN_CTX_init(&ctx); |
| BN_init(&a); |
| BN_init(&b); |
| BN_init(&c); |
| BN_init(&r); |
| |
| start = ms_time_new(); |
| end = ms_time_new(); |
| while (size <= 1024 * 8) { |
| BN_rand(&a, size, 0, 0); |
| BN_rand(&b, size, 1, 0); |
| BN_rand(&c, size, 0, 1); |
| |
| BN_mod(&a, &a, &c, &ctx); |
| |
| ms_time_get(start); |
| for (i = 0; i < 10; i++) |
| BN_MONT_CTX_set(&mont, &c, &ctx); |
| ms_time_get(end); |
| md = ms_time_diff(start, end); |
| |
| ms_time_get(start); |
| for (i = 0; i < num; i++) { |
| /* bn_mull(&r,&a,&b,&ctx); */ |
| /* BN_sqr(&r,&a,&ctx); */ |
| BN_mod_exp_mont(&r, &a, &b, &c, &ctx, &mont); |
| } |
| ms_time_get(end); |
| d = ms_time_diff(start, end) /* *50/33 */ ; |
| printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n", size, |
| d, num, d / num, (int)((d / num) * mod), md / 10.0); |
| num /= 8; |
| mod /= 8; |
| if (num <= 0) |
| num = 1; |
| size *= 2; |
| } |
| |
| } |