This commits the changes to STACK macros forced by recent ENGINE surgery.
[openssl.git] / apps / speed.c
index dd3270f6eb389185f8692a1936dc4e2137fe94af..1dd4e46b36791e4722fc1fc73a010d9fe8c462b2 100644 (file)
@@ -81,7 +81,6 @@
 #include <openssl/crypto.h>
 #include <openssl/rand.h>
 #include <openssl/err.h>
-#include <openssl/engine.h>
 #include <openssl/evp.h>
 #include <openssl/objects.h>
 
@@ -426,6 +425,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;
@@ -495,6 +495,8 @@ int MAIN(int argc, char **argv)
                                }
                        doit[D_EVP]=1;
                        }
+               else if(argc > 0 && !strcmp(*argv,"-decrypt"))
+                       decrypt=1;
                else
                if      ((argc > 0) && (strcmp(*argv,"-engine") == 0))
                        {
@@ -784,9 +786,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);
@@ -924,7 +926,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++)
-                               MD2(buf,(unsigned long)lengths[j],&(md2[0]));
+                               EVP_Digest(buf,(unsigned long)lengths[j],&(md2[0]),NULL,EVP_md2());
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_MD2],d);
@@ -940,7 +942,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++)
-                               MDC2(buf,(unsigned long)lengths[j],&(mdc2[0]));
+                               EVP_Digest(buf,(unsigned long)lengths[j],&(mdc2[0]),NULL,EVP_mdc2());
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_MDC2],d);
@@ -957,7 +959,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++)
-                               MD4(&(buf[0]),(unsigned long)lengths[j],&(md4[0]));
+                               EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md4[0]),NULL,EVP_md4());
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_MD4],d);
@@ -974,7 +976,7 @@ 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++)
-                               MD5(&(buf[0]),(unsigned long)lengths[j],&(md5[0]));
+                               EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md5[0]),NULL,EVP_get_digestbyname("md5"));
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_MD5],d);
@@ -987,6 +989,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,6 +1009,7 @@ int MAIN(int argc, char **argv)
                                count,names[D_HMAC],d);
                        results[D_HMAC][j]=((double)count)/d*lengths[j];
                        }
+               HMAC_CTX_cleanup(&hctx);
                }
 #endif
 #ifndef OPENSSL_NO_SHA
@@ -1015,7 +1020,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++)
-                               SHA1(buf,(unsigned long)lengths[j],&(sha[0]));
+                               EVP_Digest(buf,(unsigned long)lengths[j],&(sha[0]),NULL,EVP_sha1());
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_SHA1],d);
@@ -1031,7 +1036,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++)
-                               RIPEMD160(buf,(unsigned long)lengths[j],&(rmd160[0]));
+                               EVP_Digest(buf,(unsigned long)lengths[j],&(rmd160[0]),NULL,EVP_ripemd160());
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                count,names[D_RMD160],d);
@@ -1064,11 +1069,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];
                        }
                }
@@ -1081,7 +1086,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",
@@ -1191,11 +1196,22 @@ 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);
+                       if(decrypt)
+                               EVP_DecryptInit(&ctx,evp,key16,iv);
+                       else
+                               EVP_EncryptInit(&ctx,evp,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(&ctx,buf,&outl);
+                       else
+                               EVP_EncryptFinal(&ctx,buf,&outl);
                        d=Time_F(STOP,usertime);
                        BIO_printf(bio_err,"%ld %s's in %.2fs\n",
                                           count,names[D_EVP],d);
@@ -1301,7 +1317,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]);
@@ -1469,6 +1485,7 @@ end:
                if (dsa_key[i] != NULL)
                        DSA_free(dsa_key[i]);
 #endif
+       apps_shutdown();
        EXIT(mret);
        }