4 #include <openssl/tmdiff.h>
9 #define MOD (8*8*8*8*8)
16 BIGNUM a
, b
, c
, r
, rr
, t
, l
;
17 int j
, i
, size
= SIZE
, num
= NUM
, mod
= MOD
;
22 BN_MONT_CTX_init(&mont
);
29 start
= 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);
36 BN_mod(&a
, &a
, &c
, &ctx
);
39 for (i
= 0; i
< 10; i
++)
40 BN_MONT_CTX_set(&mont
, &c
, &ctx
);
42 md
= ms_time_diff(start
, end
);
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
);
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);