Run util/openssl-format-source -v -c .
[openssl.git] / crypto / bn / exp.c
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         BN_rand(&a, size, 0, 0);
33         BN_rand(&b, size, 1, 0);
34         BN_rand(&c, size, 0, 1);
35
36         BN_mod(&a, &a, &c, &ctx);
37
38         ms_time_get(start);
39         for (i = 0; i < 10; i++)
40             BN_MONT_CTX_set(&mont, &c, &ctx);
41         ms_time_get(end);
42         md = ms_time_diff(start, end);
43
44         ms_time_get(start);
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);
49         }
50         ms_time_get(end);
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);
54         num /= 8;
55         mod /= 8;
56         if (num <= 0)
57             num = 1;
58         size *= 2;
59     }
60
61 }