Add speed test for prime trial division.
This commit is contained in:
parent
e46a059ebf
commit
b5419b81ac
64
apps/speed.c
64
apps/speed.c
@ -191,6 +191,8 @@
|
||||
#endif
|
||||
#include <openssl/modes.h>
|
||||
|
||||
#include "../crypto/bn/bn_lcl.h"
|
||||
|
||||
#ifndef HAVE_FORK
|
||||
# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE)
|
||||
# define HAVE_FORK 0
|
||||
@ -214,6 +216,7 @@ static int usertime=1;
|
||||
|
||||
static double Time_F(int s);
|
||||
static void print_message(const char *s,long num,int length);
|
||||
static void prime_print_message(const char *s, long num);
|
||||
static void pkey_print_message(const char *str, const char *str2,
|
||||
long num, int bits, int sec);
|
||||
static void print_result(int alg,int run_no,int count,double time_used);
|
||||
@ -223,6 +226,7 @@ static int do_multi(int multi);
|
||||
|
||||
#define ALGOR_NUM 30
|
||||
#define SIZE_NUM 5
|
||||
#define PRIME_NUM 2
|
||||
#define RSA_NUM 4
|
||||
#define DSA_NUM 3
|
||||
|
||||
@ -239,6 +243,8 @@ static const char *names[ALGOR_NUM]={
|
||||
"aes-128 ige","aes-192 ige","aes-256 ige","ghash" };
|
||||
static double results[ALGOR_NUM][SIZE_NUM];
|
||||
static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
|
||||
static const char *prime_names[PRIME_NUM]={
|
||||
"prime trial division", "prime coprime" };
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
static double rsa_results[RSA_NUM][2];
|
||||
#endif
|
||||
@ -492,6 +498,11 @@ int MAIN(int argc, char **argv)
|
||||
#define D_GHASH 29
|
||||
double d=0.0;
|
||||
long c[ALGOR_NUM][SIZE_NUM];
|
||||
|
||||
#define D_PRIME_TRIAL_DIVISION 0
|
||||
#define D_PRIME_COPRIME 1
|
||||
long prime_c[PRIME_NUM];
|
||||
|
||||
#define R_DSA_512 0
|
||||
#define R_DSA_1024 1
|
||||
#define R_DSA_2048 2
|
||||
@ -605,6 +616,7 @@ int MAIN(int argc, char **argv)
|
||||
long ecdh_c[EC_NUM][2];
|
||||
#endif
|
||||
|
||||
int prime_doit[PRIME_NUM];
|
||||
int rsa_doit[RSA_NUM];
|
||||
int dsa_doit[DSA_NUM];
|
||||
#ifndef OPENSSL_NO_ECDSA
|
||||
@ -997,6 +1009,9 @@ int MAIN(int argc, char **argv)
|
||||
}
|
||||
else
|
||||
#endif
|
||||
if (strcmp(*argv,"prime-trial-division") == 0) prime_doit[D_PRIME_TRIAL_DIVISION]=1;
|
||||
else if (strcmp(*argv,"prime-coprime") == 0) prime_doit[D_PRIME_COPRIME]=1;
|
||||
else
|
||||
{
|
||||
BIO_printf(bio_err,"Error: bad option or value\n");
|
||||
BIO_printf(bio_err,"\n");
|
||||
@ -1123,6 +1138,7 @@ int MAIN(int argc, char **argv)
|
||||
!defined(OPENSSL_NO_AES) || !defined(OPENSSL_NO_CAMELLIA)
|
||||
BIO_printf(bio_err,"\n");
|
||||
#endif
|
||||
BIO_printf(bio_err,"prime-trial-division prime-coprime\n");
|
||||
|
||||
BIO_printf(bio_err,"\n");
|
||||
BIO_printf(bio_err,"Available options:\n");
|
||||
@ -1329,6 +1345,10 @@ int MAIN(int argc, char **argv)
|
||||
c[D_IGE_192_AES][i]=c[D_IGE_192_AES][i-1]*l0/l1;
|
||||
c[D_IGE_256_AES][i]=c[D_IGE_256_AES][i-1]*l0/l1;
|
||||
}
|
||||
|
||||
prime_c[D_PRIME_TRIAL_DIVISION]=count;
|
||||
prime_c[D_PRIME_COPRIME]=count;
|
||||
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
rsa_c[R_RSA_512][0]=count/2000;
|
||||
rsa_c[R_RSA_512][1]=count/400;
|
||||
@ -1995,6 +2015,33 @@ int MAIN(int argc, char **argv)
|
||||
print_result(D_EVP,j,count,d);
|
||||
}
|
||||
}
|
||||
|
||||
for (j=0; j<PRIME_NUM; j++)
|
||||
{
|
||||
BIGNUM *rnd = BN_new();
|
||||
BIGNUM *add = BN_new();
|
||||
BN_CTX *ctx = BN_CTX_new();
|
||||
|
||||
if(prime_doit[j])
|
||||
{
|
||||
BN_set_word(add, 2);
|
||||
|
||||
prime_print_message(prime_names[j], prime_c[j]);
|
||||
|
||||
Time_F(START);
|
||||
for (count=0, run=1; COND(prime_c[j]); count++)
|
||||
bn_probable_prime_dh(rnd,1024,add,NULL,ctx);
|
||||
|
||||
d=Time_F(STOP);
|
||||
BIO_printf(bio_err,
|
||||
mr ? "+R:%ld:%s:%f\n" : "%ld %s's in %.2fs\n",
|
||||
count, prime_names[j], d);
|
||||
}
|
||||
|
||||
BN_CTX_free(ctx);
|
||||
BN_free(add);
|
||||
BN_free(rnd);
|
||||
}
|
||||
|
||||
RAND_pseudo_bytes(buf,36);
|
||||
#ifndef OPENSSL_NO_RSA
|
||||
@ -2586,6 +2633,23 @@ static void print_message(const char *s, long num, int length)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void prime_print_message(const char *s, long num)
|
||||
{
|
||||
#ifdef SIGALRM
|
||||
BIO_printf(bio_err,mr ? "+DT:%s:%d\n"
|
||||
: "Doing %s for %ds: ", s, SECONDS);
|
||||
(void)BIO_flush(bio_err);
|
||||
alarm(SECONDS);
|
||||
#else
|
||||
BIO_printf(bio_err,mr ? "+DN:%s:%ld\n"
|
||||
: "Doing %s %ld times: ", s, num);
|
||||
(void)BIO_flush(bio_err);
|
||||
#endif
|
||||
#ifdef LINT
|
||||
num=num;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void pkey_print_message(const char *str, const char *str2, long num,
|
||||
int bits, int tm)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user