exp.c revision 259065
1249259Sdim/* unused */ 2249259Sdim 3249259Sdim#include <stdio.h> 4249259Sdim#include <openssl/tmdiff.h> 5249259Sdim#include "bn_lcl.h" 6249259Sdim 7249259Sdim#define SIZE 256 8249259Sdim#define NUM (8*8*8) 9249259Sdim#define MOD (8*8*8*8*8) 10249259Sdim 11249259Sdimmain(argc,argv) 12249259Sdimint argc; 13249259Sdimchar *argv[]; 14249259Sdim { 15249259Sdim BN_CTX ctx; 16249259Sdim BIGNUM a,b,c,r,rr,t,l; 17327952Sdim int j,i,size=SIZE,num=NUM,mod=MOD; 18327952Sdim char *start,*end; 19276479Sdim BN_MONT_CTX mont; 20276479Sdim double d,md; 21327952Sdim 22276479Sdim BN_MONT_CTX_init(&mont); 23309124Sdim BN_CTX_init(&ctx); 24309124Sdim BN_init(&a); 25327952Sdim BN_init(&b); 26249259Sdim BN_init(&c); 27327952Sdim BN_init(&r); 28327952Sdim 29249259Sdim start=ms_time_new(); 30249259Sdim end=ms_time_new(); 31327952Sdim while (size <= 1024*8) 32327952Sdim { 33249259Sdim BN_rand(&a,size,0,0); 34249259Sdim BN_rand(&b,size,1,0); 35276479Sdim BN_rand(&c,size,0,1); 36276479Sdim 37249259Sdim BN_mod(&a,&a,&c,&ctx); 38249259Sdim 39249259Sdim ms_time_get(start); 40249259Sdim for (i=0; i<10; i++) 41249259Sdim BN_MONT_CTX_set(&mont,&c,&ctx); 42249259Sdim ms_time_get(end); 43249259Sdim md=ms_time_diff(start,end); 44249259Sdim 45249259Sdim ms_time_get(start); 46249259Sdim for (i=0; i<num; i++) 47327952Sdim { 48249259Sdim /* bn_mull(&r,&a,&b,&ctx); */ 49327952Sdim /* BN_sqr(&r,&a,&ctx); */ 50249259Sdim BN_mod_exp_mont(&r,&a,&b,&c,&ctx,&mont); 51327952Sdim } 52249259Sdim ms_time_get(end); 53249259Sdim d=ms_time_diff(start,end)/* *50/33 */; 54249259Sdim printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n",size, 55249259Sdim d,num,d/num,(int)((d/num)*mod),md/10.0); 56249259Sdim num/=8; 57249259Sdim mod/=8; 58309124Sdim if (num <= 0) num=1; 59309124Sdim size*=2; 60309124Sdim } 61309124Sdim 62249259Sdim } 63276479Sdim