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 11 main(argc,argv) 12 int argc; 13 char *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 { 33 BN_rand(&a,size,0,0); 34 BN_rand(&b,size,1,0); 35 BN_rand(&c,size,0,1); 36 37 BN_mod(&a,&a,&c,&ctx); 38 39 ms_time_get(start); 40 for (i=0; i<10; i++) 41 BN_MONT_CTX_set(&mont,&c,&ctx); 42 ms_time_get(end); 43 md=ms_time_diff(start,end); 44 45 ms_time_get(start); 46 for (i=0; i<num; i++) 47 { 48 /* bn_mull(&r,&a,&b,&ctx); */ 49 /* BN_sqr(&r,&a,&ctx); */ 50 BN_mod_exp_mont(&r,&a,&b,&c,&ctx,&mont); 51 } 52 ms_time_get(end); 53 d=ms_time_diff(start,end)/* *50/33 */; 54 printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n",size, 55 d,num,d/num,(int)((d/num)*mod),md/10.0); 56 num/=8; 57 mod/=8; 58 if (num <= 0) num=1; 59 size*=2; 60 } 61 62 } 63