exp.c revision 296465
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
11main(argc, argv)
12int argc;
13char *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}
62