X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fspeed.c;h=e5742e624bfa42a46ae42eb725abab3c0e0d00e8;hb=5ad4fdce41bb1ce7762b70fb50f732f70e3772cf;hp=ac320eadee3107ef5a858f7cdd2858d3e3af8854;hpb=c4f8efab34af95a5319bbc5b954b62614604298a;p=oweals%2Fopenssl.git diff --git a/apps/speed.c b/apps/speed.c index ac320eadee..e5742e624b 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -93,9 +93,6 @@ #include #include #include "apps.h" -#ifdef OPENSSL_NO_STDIO -#define APPS_WIN16 -#endif #include #include #include @@ -192,10 +189,10 @@ #endif #include -#include "../crypto/bn/bn_lcl.h" +#include #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) +# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE) # define HAVE_FORK 0 # else # define HAVE_FORK 1 @@ -209,7 +206,9 @@ #endif #undef BUFSIZE -#define BUFSIZE ((long)1024*8+1) +#define BUFSIZE (1024*8+1) +#define MAX_MISALIGNMENT 63 + int run=0; static int mr=0; @@ -217,11 +216,9 @@ 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); -static void prime_print_result(int alg, int count, double time_used); #ifndef NO_FORK static int do_multi(int multi); #endif @@ -245,8 +242,6 @@ 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 trial division retry", "prime coprime" }; #ifndef OPENSSL_NO_RSA static double rsa_results[RSA_NUM][2]; #endif @@ -277,9 +272,6 @@ static SIGRETTYPE sig_done(int sig) { signal(SIGALRM,sig_done); run=0; -#ifdef LINT - sig=sig; -#endif } #endif @@ -363,6 +355,7 @@ int MAIN(int, char **); int MAIN(int argc, char **argv) { + unsigned char *buf_malloc=NULL, *buf2_malloc=NULL; unsigned char *buf=NULL,*buf2=NULL; int mret=1; long count=0,save_count=0; @@ -502,11 +495,8 @@ int MAIN(int argc, char **argv) double d=0.0; long c[ALGOR_NUM][SIZE_NUM]; -#define D_PRIME_TRIAL_DIVISION 0 -#define D_PRIME_TRIAL_DIVISION_RETRY 1 -#define D_PRIME_COPRIME 2 - long prime_c[PRIME_NUM]; - +#ifndef OPENSSL_SYS_WIN32 +#endif #define R_DSA_512 0 #define R_DSA_1024 1 #define R_DSA_2048 2 @@ -625,7 +615,6 @@ 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 @@ -643,6 +632,7 @@ int MAIN(int argc, char **argv) int multi=0; #endif int multiblock=0; + int misalign=MAX_MISALIGNMENT+1; #ifndef TIMES usertime=-1; @@ -678,17 +668,21 @@ int MAIN(int argc, char **argv) rsa_key[i]=NULL; #endif - if ((buf=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) + if ((buf_malloc=(unsigned char *)OPENSSL_malloc(BUFSIZE+misalign)) == NULL) { BIO_printf(bio_err,"out of memory\n"); goto end; } - if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) + if ((buf2_malloc=(unsigned char *)OPENSSL_malloc(BUFSIZE+misalign)) == NULL) { BIO_printf(bio_err,"out of memory\n"); goto end; } + misalign = 0; /* set later and buf/buf2 are adjusted accordingly */ + buf=buf_malloc; + buf2=buf2_malloc; + memset(c,0,sizeof(c)); memset(DES_iv,0,sizeof(DES_iv)); memset(iv,0,sizeof(iv)); @@ -707,9 +701,6 @@ int MAIN(int argc, char **argv) for (i=0; i 0 && !strcmp(*argv,"-misalign")) + { + argc--; + argv++; + if (argc == 0) + { + BIO_printf(bio_err,"no misalignment given\n"); + goto end; + } + misalign=atoi(argv[0]); + if (misalign<0 || misalign>MAX_MISALIGNMENT) + { + BIO_printf(bio_err,"misalignment is outsize permitted range 0-%d\n",MAX_MISALIGNMENT); + goto end; + } + buf=buf_malloc+misalign; + buf2=buf2_malloc+misalign; + j--; + } else #ifndef OPENSSL_NO_MD2 if (strcmp(*argv,"md2") == 0) doit[D_MD2]=1; @@ -1032,18 +1042,6 @@ 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-trial-division-retry") == 0) - prime_doit[D_PRIME_TRIAL_DIVISION_RETRY] = 1; - else if (strcmp(*argv,"prime-coprime") == 0) - prime_doit[D_PRIME_COPRIME] = 1; - else if (strcmp(*argv,"prime") == 0) - { - for (i=0; i < PRIME_NUM; i++) - prime_doit[i]=1; - } - else { BIO_printf(bio_err,"Error: bad option or value\n"); BIO_printf(bio_err,"\n"); @@ -1171,7 +1169,6 @@ 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"); @@ -1184,6 +1181,8 @@ int MAIN(int argc, char **argv) BIO_printf(bio_err,"-evp e use EVP e.\n"); BIO_printf(bio_err,"-decrypt time decryption instead of encryption (only EVP).\n"); BIO_printf(bio_err,"-mr produce machine readable output.\n"); + BIO_printf(bio_err,"-mb perform multi-block benchmark (for specific ciphers)\n"); + BIO_printf(bio_err,"-misalign n perform benchmark with misaligned data\n"); #ifndef NO_FORK BIO_printf(bio_err,"-multi n run n benchmarks in parallel.\n"); #endif @@ -1379,10 +1378,7 @@ 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_TRIAL_DIVISION_RETRY]=count; - prime_c[D_PRIME_COPRIME]=count; + #ifndef OPENSSL_NO_RSA rsa_c[R_RSA_512][0]=count/2000; @@ -2063,67 +2059,8 @@ int MAIN(int argc, char **argv) print_result(D_EVP,j,count,d); } } - - if (prime_doit[D_PRIME_TRIAL_DIVISION]) - { - BIGNUM *rnd = BN_new(); - BIGNUM *add = BN_new(); - BN_CTX *ctx = BN_CTX_new(); - - BN_set_word(add, 2); - prime_print_message(prime_names[D_PRIME_TRIAL_DIVISION], - prime_c[D_PRIME_TRIAL_DIVISION]); - - Time_F(START); - for (count=0, run=1; COND(prime_c[D_PRIME_TRIAL_DIVISION]); count++) - if (!bn_probable_prime_dh(rnd, 1024, add, NULL, ctx)) count--; - - d=Time_F(STOP); - prime_print_result(D_PRIME_TRIAL_DIVISION, count, d); - - BN_CTX_free(ctx); - BN_free(add); - BN_free(rnd); - } - - if (prime_doit[D_PRIME_TRIAL_DIVISION_RETRY]) - { - BIGNUM *rnd = BN_new(); - BN_CTX *ctx = BN_CTX_new(); - - prime_print_message(prime_names[D_PRIME_TRIAL_DIVISION_RETRY], - prime_c[D_PRIME_TRIAL_DIVISION_RETRY]); - - Time_F(START); - for (count=0, run=1; COND(prime_c[D_PRIME_TRIAL_DIVISION_RETRY]); count++) - if (!bn_probable_prime_dh_retry(rnd, 1024, ctx)) count--; - - d=Time_F(STOP); - prime_print_result(D_PRIME_TRIAL_DIVISION_RETRY, count, d); - - BN_CTX_free(ctx); - BN_free(rnd); - } - - if (prime_doit[D_PRIME_COPRIME]) - { - BIGNUM *rnd = BN_new(); - BN_CTX *ctx = BN_CTX_new(); - - prime_print_message(prime_names[D_PRIME_COPRIME], - prime_c[D_PRIME_COPRIME]); - - Time_F(START); - for (count=0, run=1; COND(prime_c[D_PRIME_COPRIME]); count++) - if (!bn_probable_prime_dh_coprime(rnd, 1024, ctx)) count--; - - d=Time_F(STOP); - prime_print_result(D_PRIME_COPRIME, count, d); - - BN_CTX_free(ctx); - BN_free(rnd); - } - +#ifndef OPENSSL_SYS_WIN32 +#endif RAND_pseudo_bytes(buf,36); #ifndef OPENSSL_NO_RSA for (j=0; j