diff options
Diffstat (limited to 'src/lib/libcrypto/bn/exp.c')
-rw-r--r-- | src/lib/libcrypto/bn/exp.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/lib/libcrypto/bn/exp.c b/src/lib/libcrypto/bn/exp.c new file mode 100644 index 0000000000..4865b0ef74 --- /dev/null +++ b/src/lib/libcrypto/bn/exp.c | |||
@@ -0,0 +1,62 @@ | |||
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 | } | ||