159191Skris/* unused */ 259191Skris 355714Skris#include <stdio.h> 455714Skris#include <openssl/tmdiff.h> 555714Skris#include "bn_lcl.h" 655714Skris 755714Skris#define SIZE 256 855714Skris#define NUM (8*8*8) 955714Skris#define MOD (8*8*8*8*8) 1055714Skris 1155714Skrismain(argc,argv) 1255714Skrisint argc; 1355714Skrischar *argv[]; 1455714Skris { 1555714Skris BN_CTX ctx; 1655714Skris BIGNUM a,b,c,r,rr,t,l; 1755714Skris int j,i,size=SIZE,num=NUM,mod=MOD; 1855714Skris char *start,*end; 1955714Skris BN_MONT_CTX mont; 2055714Skris double d,md; 2155714Skris 2255714Skris BN_MONT_CTX_init(&mont); 2355714Skris BN_CTX_init(&ctx); 2455714Skris BN_init(&a); 2555714Skris BN_init(&b); 2655714Skris BN_init(&c); 2755714Skris BN_init(&r); 2855714Skris 2955714Skris start=ms_time_new(); 3055714Skris end=ms_time_new(); 3155714Skris while (size <= 1024*8) 3255714Skris { 3355714Skris BN_rand(&a,size,0,0); 3455714Skris BN_rand(&b,size,1,0); 3555714Skris BN_rand(&c,size,0,1); 3655714Skris 3755714Skris BN_mod(&a,&a,&c,&ctx); 3855714Skris 3955714Skris ms_time_get(start); 4055714Skris for (i=0; i<10; i++) 4155714Skris BN_MONT_CTX_set(&mont,&c,&ctx); 4255714Skris ms_time_get(end); 4355714Skris md=ms_time_diff(start,end); 4455714Skris 4555714Skris ms_time_get(start); 4655714Skris for (i=0; i<num; i++) 4755714Skris { 4855714Skris /* bn_mull(&r,&a,&b,&ctx); */ 4955714Skris /* BN_sqr(&r,&a,&ctx); */ 5055714Skris BN_mod_exp_mont(&r,&a,&b,&c,&ctx,&mont); 5155714Skris } 5255714Skris ms_time_get(end); 5355714Skris d=ms_time_diff(start,end)/* *50/33 */; 5455714Skris printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n",size, 5555714Skris d,num,d/num,(int)((d/num)*mod),md/10.0); 5655714Skris num/=8; 5755714Skris mod/=8; 5855714Skris if (num <= 0) num=1; 5955714Skris size*=2; 6055714Skris } 6155714Skris 6255714Skris } 63