]> WPIA git - cassiopeia.git/blobdiff - lib/openssl/crypto/bn/exp.c
add: execute openssl fetcher to fetch openssl 1.0.1j
[cassiopeia.git] / lib / openssl / crypto / bn / exp.c
diff --git a/lib/openssl/crypto/bn/exp.c b/lib/openssl/crypto/bn/exp.c
new file mode 100644 (file)
index 0000000..4865b0e
--- /dev/null
@@ -0,0 +1,62 @@
+/* unused */
+
+#include <stdio.h>
+#include <openssl/tmdiff.h>
+#include "bn_lcl.h"
+
+#define SIZE   256
+#define NUM    (8*8*8)
+#define MOD    (8*8*8*8*8)
+
+main(argc,argv)
+int argc;
+char *argv[];
+       {
+       BN_CTX ctx;
+       BIGNUM a,b,c,r,rr,t,l;
+       int j,i,size=SIZE,num=NUM,mod=MOD;
+       char *start,*end;
+       BN_MONT_CTX mont;
+       double d,md;
+
+       BN_MONT_CTX_init(&mont);
+       BN_CTX_init(&ctx);
+       BN_init(&a);
+       BN_init(&b);
+       BN_init(&c);
+       BN_init(&r);
+
+       start=ms_time_new();
+       end=ms_time_new();
+       while (size <= 1024*8)
+               {
+               BN_rand(&a,size,0,0);
+               BN_rand(&b,size,1,0);
+               BN_rand(&c,size,0,1);
+
+               BN_mod(&a,&a,&c,&ctx);
+
+               ms_time_get(start);
+               for (i=0; i<10; i++)
+                       BN_MONT_CTX_set(&mont,&c,&ctx);
+               ms_time_get(end);
+               md=ms_time_diff(start,end);
+
+               ms_time_get(start);
+               for (i=0; i<num; i++)
+                       {
+                       /* bn_mull(&r,&a,&b,&ctx); */
+                       /* BN_sqr(&r,&a,&ctx); */
+                       BN_mod_exp_mont(&r,&a,&b,&c,&ctx,&mont);
+                       }
+               ms_time_get(end);
+               d=ms_time_diff(start,end)/* *50/33 */;
+               printf("%5d bit:%6.2f %6d %6.4f %4d m_set(%5.4f)\n",size,
+                       d,num,d/num,(int)((d/num)*mod),md/10.0);
+               num/=8;
+               mod/=8;
+               if (num <= 0) num=1;
+               size*=2;
+               }
+
+       }