159191Skris/* unused */ 259191Skris 355714Skris#include <stdio.h> 455714Skris#include <openssl/tmdiff.h> 555714Skris#include "bn_lcl.h" 655714Skris 7280304Sjkim#define SIZE 256 8280304Sjkim#define NUM (8*8*8) 9280304Sjkim#define MOD (8*8*8*8*8) 1055714Skris 11280304Sjkimmain(argc, argv) 1255714Skrisint argc; 1355714Skrischar *argv[]; 14280304Sjkim{ 15280304Sjkim BN_CTX ctx; 16280304Sjkim BIGNUM a, b, c, r, rr, t, l; 17280304Sjkim int j, i, size = SIZE, num = NUM, mod = MOD; 18280304Sjkim char *start, *end; 19280304Sjkim BN_MONT_CTX mont; 20280304Sjkim double d, md; 2155714Skris 22280304Sjkim BN_MONT_CTX_init(&mont); 23280304Sjkim BN_CTX_init(&ctx); 24280304Sjkim BN_init(&a); 25280304Sjkim BN_init(&b); 26280304Sjkim BN_init(&c); 27280304Sjkim BN_init(&r); 2855714Skris 29280304Sjkim start = ms_time_new(); 30280304Sjkim end = ms_time_new(); 31280304Sjkim while (size <= 1024 * 8) { 32280304Sjkim BN_rand(&a, size, 0, 0); 33280304Sjkim BN_rand(&b, size, 1, 0); 34280304Sjkim BN_rand(&c, size, 0, 1); 3555714Skris 36280304Sjkim BN_mod(&a, &a, &c, &ctx); 3755714Skris 38280304Sjkim ms_time_get(start); 39280304Sjkim for (i = 0; i < 10; i++) 40280304Sjkim BN_MONT_CTX_set(&mont, &c, &ctx); 41280304Sjkim ms_time_get(end); 42280304Sjkim md = ms_time_diff(start, end); 4355714Skris 44280304Sjkim ms_time_get(start); 45280304Sjkim for (i = 0; i < num; i++) { 46280304Sjkim /* bn_mull(&r,&a,&b,&ctx); */ 47280304Sjkim /* BN_sqr(&r,&a,&ctx); */ 48280304Sjkim BN_mod_exp_mont(&r, &a, &b, &c, &ctx, &mont); 49280304Sjkim } 50280304Sjkim ms_time_get(end); 51280304Sjkim d = ms_time_diff(start, end) /* *50/33 */ ; 52280304Sjkim printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n", size, 53280304Sjkim d, num, d / num, (int)((d / num) * mod), md / 10.0); 54280304Sjkim num /= 8; 55280304Sjkim mod /= 8; 56280304Sjkim if (num <= 0) 57280304Sjkim num = 1; 58280304Sjkim size *= 2; 59280304Sjkim } 6055714Skris 61280304Sjkim} 62