exp.c revision 296341
1/* unused */ 2 3#include <stdio.h> 4#include <openssl/tmdiff.h> 5#include "bn_lcl.h" 6 7#define SIZE 256 8#define NUM (8*8*8) 9#define MOD (8*8*8*8*8) 10 11main(argc, argv) 12int argc; 13char *argv[]; 14{ 15 BN_CTX ctx; 16 BIGNUM a, b, c, r, rr, t, l; 17 int j, i, size = SIZE, num = NUM, mod = MOD; 18 char *start, *end; 19 BN_MONT_CTX mont; 20 double d, md; 21 22 BN_MONT_CTX_init(&mont); 23 BN_CTX_init(&ctx); 24 BN_init(&a); 25 BN_init(&b); 26 BN_init(&c); 27 BN_init(&r); 28 29 start = ms_time_new(); 30 end = ms_time_new(); 31 while (size <= 1024 * 8) { 32 BN_rand(&a, size, 0, 0); 33 BN_rand(&b, size, 1, 0); 34 BN_rand(&c, size, 0, 1); 35 36 BN_mod(&a, &a, &c, &ctx); 37 38 ms_time_get(start); 39 for (i = 0; i < 10; i++) 40 BN_MONT_CTX_set(&mont, &c, &ctx); 41 ms_time_get(end); 42 md = ms_time_diff(start, end); 43 44 ms_time_get(start); 45 for (i = 0; i < num; i++) { 46 /* bn_mull(&r,&a,&b,&ctx); */ 47 /* BN_sqr(&r,&a,&ctx); */ 48 BN_mod_exp_mont(&r, &a, &b, &c, &ctx, &mont); 49 } 50 ms_time_get(end); 51 d = ms_time_diff(start, end) /* *50/33 */ ; 52 printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n", size, 53 d, num, d / num, (int)((d / num) * mod), md / 10.0); 54 num /= 8; 55 mod /= 8; 56 if (num <= 0) 57 num = 1; 58 size *= 2; 59 } 60 61} 62