X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=apps%2Fspeed.c;h=363ec65b0cd2a1647c8b6296d2be0c3e2ce5d952;hp=a7842cecd042fe1111305834c23bfc3983d26263;hb=cecd263878368268b4c0c8f3309af9eb0c7144f8;hpb=c04f8cf44a3b204b82f5f1f5d1ad9dbc738459f1 diff --git a/apps/speed.c b/apps/speed.c index a7842cecd0..363ec65b0c 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -1,4 +1,4 @@ -/* apps/speed.c */ +/* apps/speed.c -*- mode:C; c-file-style: "eay" -*- */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -81,9 +81,9 @@ #include #include #include -#include #include #include +#include OPENSSL_UNISTD #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX) # define USE_TOD @@ -182,14 +182,18 @@ /* The following if from times(3) man page. It may need to be changed */ #ifndef HZ -# ifndef CLK_TCK -# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ -# define HZ 100.0 -# else /* _BSD_CLK_TCK_ */ -# define HZ ((double)_BSD_CLK_TCK_) +# ifdef _SC_CLK_TCK +# define HZ ((double)sysconf(_SC_CLK_TCK)) +# else +# ifndef CLK_TCK +# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ +# define HZ 100.0 +# else /* _BSD_CLK_TCK_ */ +# define HZ ((double)_BSD_CLK_TCK_) +# endif +# else /* CLK_TCK */ +# define HZ ((double)CLK_TCK) # endif -# else /* CLK_TCK */ -# define HZ ((double)CLK_TCK) # endif #endif @@ -197,6 +201,8 @@ #define BUFSIZE ((long)1024*8+1) int run=0; +static char ftime_used = 0, times_used = 0, gettimeofday_used = 0, getrusage_used = 0; + static double Time_F(int s, int usertime); static void print_message(const char *s,long num,int length); static void pkey_print_message(char *str,char *str2,long num,int bits,int sec); @@ -230,6 +236,7 @@ static double Time_F(int s, int usertime) { static struct rusage tstart,tend; + getrusage_used = 1; if (s == START) { getrusage(RUSAGE_SELF,&tstart); @@ -251,6 +258,7 @@ static double Time_F(int s, int usertime) static struct timeval tstart,tend; long i; + gettimeofday_used = 1; if (s == START) { gettimeofday(&tstart,NULL); @@ -271,6 +279,7 @@ static double Time_F(int s, int usertime) { static struct tms tstart,tend; + times_used = 1; if (s == START) { times(&tstart); @@ -292,6 +301,7 @@ static double Time_F(int s, int usertime) static struct timeb tstart,tend; long i; + ftime_used = 1; if (s == START) { ftime(&tstart); @@ -426,6 +436,7 @@ int MAIN(int argc, char **argv) int pr_header=0; int usertime=1; const EVP_CIPHER *evp=NULL; + int decrypt=0; #ifndef TIMES usertime=-1; @@ -477,7 +488,11 @@ int MAIN(int argc, char **argv) while (argc) { if ((argc > 0) && (strcmp(*argv,"-elapsed") == 0)) + { usertime = 0; + j--; /* Otherwise, -elapsed gets confused with + an algorithm. */ + } else if ((argc > 0) && (strcmp(*argv,"-evp") == 0)) { argc--; @@ -495,8 +510,13 @@ int MAIN(int argc, char **argv) } doit[D_EVP]=1; } - else - if ((argc > 0) && (strcmp(*argv,"-engine") == 0)) + else if (argc > 0 && !strcmp(*argv,"-decrypt")) + { + decrypt=1; + j--; /* Otherwise, -elapsed gets confused with + an algorithm. */ + } + else if ((argc > 0) && (strcmp(*argv,"-engine") == 0)) { argc--; argv++; @@ -568,7 +588,7 @@ int MAIN(int argc, char **argv) #ifndef RSA_NULL if (strcmp(*argv,"openssl") == 0) { - RSA_set_default_openssl_method(RSA_PKCS1_SSLeay()); + RSA_set_default_method(RSA_PKCS1_SSLeay()); j--; } else @@ -784,9 +804,9 @@ int MAIN(int argc, char **argv) #endif #ifndef OPENSSL_NO_DES - des_set_key_unchecked(&key,sch); - des_set_key_unchecked(&key2,sch2); - des_set_key_unchecked(&key3,sch3); + des_set_key_unchecked(&key,&sch); + des_set_key_unchecked(&key2,&sch2); + des_set_key_unchecked(&key3,&sch3); #endif #ifndef OPENSSL_NO_IDEA idea_set_encrypt_key(key16,&idea_ks); @@ -819,7 +839,7 @@ int MAIN(int argc, char **argv) Time_F(START,usertime); for (i=count; i; i--) des_ecb_encrypt(buf_as_des_cblock,buf_as_des_cblock, - &(sch[0]),DES_ENCRYPT); + &sch,DES_ENCRYPT); d=Time_F(STOP,usertime); } while (d <3); save_count=count; @@ -924,7 +944,7 @@ int MAIN(int argc, char **argv) print_message(names[D_MD2],c[D_MD2][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_MD2][j]); count++) - EVP_Digest(buf,(unsigned long)lengths[j],&(md2[0]),NULL,EVP_md2()); + EVP_Digest(buf,(unsigned long)lengths[j],&(md2[0]),NULL,EVP_md2(), NULL); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_MD2],d); @@ -940,7 +960,7 @@ int MAIN(int argc, char **argv) print_message(names[D_MDC2],c[D_MDC2][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_MDC2][j]); count++) - EVP_Digest(buf,(unsigned long)lengths[j],&(mdc2[0]),NULL,EVP_mdc2()); + EVP_Digest(buf,(unsigned long)lengths[j],&(mdc2[0]),NULL,EVP_mdc2(), NULL); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_MDC2],d); @@ -957,7 +977,7 @@ int MAIN(int argc, char **argv) print_message(names[D_MD4],c[D_MD4][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_MD4][j]); count++) - EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md4[0]),NULL,EVP_md4()); + EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md4[0]),NULL,EVP_md4(), NULL); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_MD4],d); @@ -974,7 +994,8 @@ int MAIN(int argc, char **argv) print_message(names[D_MD5],c[D_MD5][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_MD5][j]); count++) - EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md5[0]),NULL,EVP_md5()); + EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md5[0]),NULL, + EVP_get_digestbyname("md5"), NULL); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_MD5],d); @@ -987,6 +1008,8 @@ int MAIN(int argc, char **argv) if (doit[D_HMAC]) { HMAC_CTX hctx; + + HMAC_CTX_init(&hctx); HMAC_Init(&hctx,(unsigned char *)"This is a key...", 16,EVP_md5()); @@ -1005,7 +1028,7 @@ int MAIN(int argc, char **argv) count,names[D_HMAC],d); results[D_HMAC][j]=((double)count)/d*lengths[j]; } - HMAC_cleanup(&hctx); + HMAC_CTX_cleanup(&hctx); } #endif #ifndef OPENSSL_NO_SHA @@ -1016,7 +1039,7 @@ int MAIN(int argc, char **argv) print_message(names[D_SHA1],c[D_SHA1][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_SHA1][j]); count++) - EVP_Digest(buf,(unsigned long)lengths[j],&(sha[0]),NULL,EVP_sha1()); + EVP_Digest(buf,(unsigned long)lengths[j],&(sha[0]),NULL,EVP_sha1(), NULL); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_SHA1],d); @@ -1032,7 +1055,7 @@ int MAIN(int argc, char **argv) print_message(names[D_RMD160],c[D_RMD160][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_RMD160][j]); count++) - EVP_Digest(buf,(unsigned long)lengths[j],&(rmd160[0]),NULL,EVP_ripemd160()); + EVP_Digest(buf,(unsigned long)lengths[j],&(rmd160[0]),NULL,EVP_ripemd160(), NULL); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_RMD160],d); @@ -1065,11 +1088,11 @@ int MAIN(int argc, char **argv) print_message(names[D_CBC_DES],c[D_CBC_DES][j],lengths[j]); Time_F(START,usertime); for (count=0,run=1; COND(c[D_CBC_DES][j]); count++) - des_ncbc_encrypt(buf,buf,lengths[j],sch, + des_ncbc_encrypt(buf,buf,lengths[j],&sch, &iv,DES_ENCRYPT); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", - count,names[D_CBC_DES],d); + count,names[D_CBC_DES],d); results[D_CBC_DES][j]=((double)count)/d*lengths[j]; } } @@ -1082,7 +1105,7 @@ int MAIN(int argc, char **argv) Time_F(START,usertime); for (count=0,run=1; COND(c[D_EDE3_DES][j]); count++) des_ede3_cbc_encrypt(buf,buf,lengths[j], - sch,sch2,sch3, + &sch,&sch2,&sch3, &iv,DES_ENCRYPT); d=Time_F(STOP,usertime); BIO_printf(bio_err,"%ld %s's in %.2fs\n", @@ -1192,12 +1215,25 @@ int MAIN(int argc, char **argv) names[D_EVP]=OBJ_nid2ln(evp->nid); print_message(names[D_EVP],save_count, lengths[j]); - EVP_EncryptInit(&ctx,evp,key16,iv); + EVP_CIPHER_CTX_init(&ctx); + if(decrypt) + EVP_DecryptInit_ex(&ctx,evp,NULL,key16,iv); + else + EVP_EncryptInit_ex(&ctx,evp,NULL,key16,iv); + Time_F(START,usertime); - for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++) - EVP_EncryptUpdate(&ctx,buf,&outl,buf,lengths[j]); - EVP_EncryptFinal(&ctx,buf,&outl); + if(decrypt) + for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++) + EVP_DecryptUpdate(&ctx,buf,&outl,buf,lengths[j]); + else + for (count=0,run=1; COND(save_count*4*lengths[0]/lengths[j]); count++) + EVP_EncryptUpdate(&ctx,buf,&outl,buf,lengths[j]); + if(decrypt) + EVP_DecryptFinal_ex(&ctx,buf,&outl); + else + EVP_EncryptFinal_ex(&ctx,buf,&outl); d=Time_F(STOP,usertime); + EVP_CIPHER_CTX_cleanup(&ctx); BIO_printf(bio_err,"%ld %s's in %.2fs\n", count,names[D_EVP],d); results[D_EVP][j]=((double)count)/d*lengths[j]; @@ -1302,7 +1338,7 @@ int MAIN(int argc, char **argv) int ret; if (!dsa_doit[j]) continue; - DSA_generate_key(dsa_key[j]); +/* DSA_generate_key(dsa_key[j]); */ /* DSA_sign_setup(dsa_key[j],NULL); */ ret=DSA_sign(EVP_PKEY_DSA,buf,20,buf2, &kk,dsa_key[j]); @@ -1401,6 +1437,33 @@ int MAIN(int argc, char **argv) printf("%s ",BF_options()); #endif fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS)); + printf("available timing options: "); +#ifdef TIMES + printf("TIMES "); +#endif +#ifdef TIMEB + printf("TIMEB "); +#endif +#ifdef USE_TOD + printf("USE_TOD "); +#endif +#ifdef HZ +#define as_string(s) (#s) + printf("HZ=%g", HZ); +# ifdef _SC_CLK_TCK + printf(" [sysconf value]"); +# endif +#endif + printf("\n"); + printf("timing function used: %s%s%s%s%s%s%s\n", + (ftime_used ? "ftime" : ""), + (ftime_used + times_used > 1 ? "," : ""), + (times_used ? "times" : ""), + (ftime_used + times_used + gettimeofday_used > 1 ? "," : ""), + (gettimeofday_used ? "gettimeofday" : ""), + (ftime_used + times_used + gettimeofday_used + getrusage_used > 1 ? "," : ""), + (getrusage_used ? "getrusage" : "")); + if (pr_header) {