SHA-256/-512 test and benchmark.
[openssl.git] / apps / speed.c
index 4008930454ace278ed4fb058a9b0f236eb40c590..b3c4e70951d2e4da62f7fc33d9ed99fc7641c9d8 100644 (file)
@@ -268,7 +268,7 @@ static void print_result(int alg,int run_no,int count,double time_used);
 static int do_multi(int multi);
 #endif
 
-#define ALGOR_NUM      19
+#define ALGOR_NUM      21
 #define SIZE_NUM       5
 #define RSA_NUM                4
 #define DSA_NUM                3
@@ -280,7 +280,7 @@ static const char *names[ALGOR_NUM]={
   "md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4",
   "des cbc","des ede3","idea cbc",
   "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
-  "aes-128 cbc","aes-192 cbc","aes-256 cbc"};
+  "aes-128 cbc","aes-192 cbc","aes-256 cbc","evp","sha-256","sha-512"};
 static double results[ALGOR_NUM][SIZE_NUM];
 static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
 static double rsa_results[RSA_NUM][2];
@@ -493,6 +493,8 @@ int MAIN(int argc, char **argv)
 #endif
 #ifndef OPENSSL_NO_SHA
        unsigned char sha[SHA_DIGEST_LENGTH];
+       unsigned char sha256[SHA256_DIGEST_LENGTH];
+       unsigned char sha512[SHA512_DIGEST_LENGTH];
 #endif
 #ifndef OPENSSL_NO_RIPEMD
        unsigned char rmd160[RIPEMD160_DIGEST_LENGTH];
@@ -565,6 +567,8 @@ int MAIN(int argc, char **argv)
 #define D_CBC_192_AES  16
 #define D_CBC_256_AES  17
 #define D_EVP          18
+#define D_SHA256       19
+#define D_SHA512       20
        double d=0.0;
        long c[ALGOR_NUM][SIZE_NUM];
 #define        R_DSA_512       0
@@ -867,7 +871,13 @@ int MAIN(int argc, char **argv)
 #ifndef OPENSSL_NO_SHA
                        if (strcmp(*argv,"sha1") == 0) doit[D_SHA1]=1;
                else
-                       if (strcmp(*argv,"sha") == 0) doit[D_SHA1]=1;
+                       if (strcmp(*argv,"sha") == 0)   doit[D_SHA1]=1,
+                                                       doit[D_SHA256]=1,
+                                                       doit[D_SHA512]=1;
+               else
+                       if (strcmp(*argv,"sha-256") == 0) doit[D_SHA256]=1;
+               else
+                       if (strcmp(*argv,"sha-512") == 0) doit[D_SHA512]=1;
                else
 #endif
 #ifndef OPENSSL_NO_RIPEMD
@@ -1049,6 +1059,8 @@ int MAIN(int argc, char **argv)
 #endif
 #ifndef OPENSSL_NO_SHA1
                        BIO_printf(bio_err,"sha1     ");
+                       BIO_printf(bio_err,"sha-256  ");
+                       BIO_printf(bio_err,"sha-512  ");
 #endif
 #ifndef OPENSSL_NO_RIPEMD160
                        BIO_printf(bio_err,"rmd160");
@@ -1273,6 +1285,8 @@ int MAIN(int argc, char **argv)
        c[D_CBC_128_AES][0]=count;
        c[D_CBC_192_AES][0]=count;
        c[D_CBC_256_AES][0]=count;
+       c[D_SHA256][0]=count;
+       c[D_SHA512][0]=count;
 
        for (i=1; i<SIZE_NUM; i++)
                {
@@ -1283,6 +1297,8 @@ int MAIN(int argc, char **argv)
                c[D_HMAC][i]=c[D_HMAC][0]*4*lengths[0]/lengths[i];
                c[D_SHA1][i]=c[D_SHA1][0]*4*lengths[0]/lengths[i];
                c[D_RMD160][i]=c[D_RMD160][0]*4*lengths[0]/lengths[i];
+               c[D_SHA256][i]=c[D_SHA256][0]*4*lengths[0]/lengths[i];
+               c[D_SHA512][i]=c[D_SHA512][0]*4*lengths[0]/lengths[i];
                }
        for (i=1; i<SIZE_NUM; i++)
                {
@@ -1559,6 +1575,32 @@ int MAIN(int argc, char **argv)
                        print_result(D_SHA1,j,count,d);
                        }
                }
+
+       if (doit[D_SHA256])
+               {
+               for (j=0; j<SIZE_NUM; j++)
+                       {
+                       print_message(names[D_SHA256],c[D_SHA256][j],lengths[j]);
+                       Time_F(START);
+                       for (count=0,run=1; COND(c[D_SHA256][j]); count++)
+                               SHA256(buf,lengths[j],sha256);
+                       d=Time_F(STOP);
+                       print_result(D_SHA256,j,count,d);
+                       }
+               }
+
+       if (doit[D_SHA512])
+               {
+               for (j=0; j<SIZE_NUM; j++)
+                       {
+                       print_message(names[D_SHA512],c[D_SHA512][j],lengths[j]);
+                       Time_F(START);
+                       for (count=0,run=1; COND(c[D_SHA512][j]); count++)
+                               SHA512(buf,lengths[j],sha512);
+                       d=Time_F(STOP);
+                       print_result(D_SHA512,j,count,d);
+                       }
+               }
 #endif
 #ifndef OPENSSL_NO_RIPEMD
        if (doit[D_RMD160])