diff options
author | Rich Salz <rsalz@akamai.com> | 2014-07-14 00:41:38 -0400 |
---|---|---|
committer | Rich Salz <rsalz@akamai.com> | 2014-07-14 18:03:33 -0400 |
commit | b4edb810a3db0374d8f39b8abf6c5a162547c74d (patch) | |
tree | 673382417486dc46fba8c9a2beaddd147e18a894 | |
parent | b4994cd71e68a79d2ce0bb6fa598278b3a5f9cda (diff) | |
download | openssl-new-b4edb810a3db0374d8f39b8abf6c5a162547c74d.tar.gz |
Converted to new pargs parsing.
-rw-r--r-- | apps/speed.c | 1237 |
1 files changed, 591 insertions, 646 deletions
diff --git a/apps/speed.c b/apps/speed.c index e7df080f1b..f13fb54e36 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -232,144 +232,23 @@ static int do_multi(int multi); #define EC_NUM 16 #define MAX_ECDH_SIZE 256 -const char* speed_help[] = { -#if defined(TIMES) || defined(USE_TOD) - "-elapsed measure time in real time instead of CPU user time", -#endif -#ifndef OPENSSL_NO_ENGINE - "-engine e use engine e, possibly a hardware device", -#endif - "-evp e use EVP e", - "-decrypt time decryption instead of encryption (only EVP)", - "-mr produce machine readable output", -#ifndef NO_FORK - "-multi n run n benchmarks in parallel.", -#endif -#ifndef OPENSSL_NO_MD2 - "md2 " -#endif -#ifndef OPENSSL_NO_MDC2 - "mdc2 " -#endif -#ifndef OPENSSL_NO_MD4 - "md4 " -#endif -#ifndef OPENSSL_NO_MD5 - "md5 " -#ifndef OPENSSL_NO_HMAC - "hmac " -#endif -#endif -#ifndef OPENSSL_NO_SHA1 - "sha1 " -#endif -#ifndef OPENSSL_NO_SHA256 - "sha256 " -#endif -#ifndef OPENSSL_NO_SHA512 - "sha512 " -#endif -#ifndef OPENSSL_NO_WHIRLPOOL - "whirlpool " -#endif -#ifndef OPENSSL_NO_RIPEMD160 - "rmd160" -#endif - , -#ifndef OPENSSL_NO_IDEA - "idea-cbc " -#endif -#ifndef OPENSSL_NO_SEED - "seed-cbc " -#endif -#ifndef OPENSSL_NO_RC2 - "rc2-cbc " -#endif -#ifndef OPENSSL_NO_RC5 - "rc5-cbc " -#endif -#ifndef OPENSSL_NO_BF - "bf-cbc" -#endif - , - -#ifndef OPENSSL_NO_DES - "des-cbc des-ede3 ", -#endif -#ifndef OPENSSL_NO_AES - "aes-128-cbc aes-192-cbc aes-256-cbc ", - "aes-128-ige aes-192-ige aes-256-ige ", -#endif -#ifndef OPENSSL_NO_CAMELLIA - "camellia-128-cbc camellia-192-cbc camellia-256-cbc ", -#endif -#ifndef OPENSSL_NO_RC4 - "rc4", -#endif - -#ifndef OPENSSL_NO_RSA - "rsa512 rsa1024 rsa2048 rsa3072 rsa4096", - "rsa7680 rsa15360", -#endif - -#ifndef OPENSSL_NO_DSA - "dsa512 dsa1024 dsa2048", -#endif -#ifndef OPENSSL_NO_ECDSA - "ecdsap160 ecdsap192 ecdsap224 ecdsap256 ecdsap384 ecdsap521", - "ecdsak163 ecdsak233 ecdsak283 ecdsak409 ecdsak571", - "ecdsab163 ecdsab233 ecdsab283 ecdsab409 ecdsab571", - "ecdsa", -#endif -#ifndef OPENSSL_NO_ECDH - "ecdhp160 ecdhp192 ecdhp224 ecdhp256 ecdhp384 ecdhp521", - "ecdhk163 ecdhk233 ecdhk283 ecdhk409 ecdhk571", - "ecdhb163 ecdhb233 ecdhb283 ecdhb409 ecdhb571", - "ecdh\n" -#endif - -#ifndef OPENSSL_NO_IDEA - "idea " -#endif -#ifndef OPENSSL_NO_SEED - "seed " -#endif -#ifndef OPENSSL_NO_RC2 - "rc2 " -#endif -#ifndef OPENSSL_NO_DES - "des " -#endif -#ifndef OPENSSL_NO_AES - "aes " -#endif -#ifndef OPENSSL_NO_CAMELLIA - "camellia " -#endif -#ifndef OPENSSL_NO_RSA - "rsa " -#endif -#ifndef OPENSSL_NO_BF - "blowfish " -#endif - , - "prime-trial-division prime-coprime", - NULL -}; - -static const char *names[ALGOR_NUM]={ +static const char *names[ALGOR_NUM] = { "md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4", "des cbc","des ede3","idea cbc","seed cbc", "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc", "aes-128 cbc","aes-192 cbc","aes-256 cbc", "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc", "evp","sha256","sha512","whirlpool", - "aes-128 ige","aes-192 ige","aes-256 ige","ghash" }; + "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" }; +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 @@ -482,114 +361,161 @@ static void *KDF1_SHA1(const void *in, size_t inlen, void *out, size_t *outlen) static void multiblock_speed(const EVP_CIPHER *evp_cipher); -int speed_main(int argc, char **argv) - { - unsigned char *buf=NULL,*buf2=NULL; - int mret=1; - long count=0,save_count=0; - int i,j,k; -#if !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_DSA) - long rsa_count; +const char* speed_help[] = { +#if defined(TIMES) || defined(USE_TOD) + "-elapsed measure time in real time instead of CPU user time", #endif -#ifndef OPENSSL_NO_RSA - unsigned rsa_num; +#ifndef OPENSSL_NO_ENGINE + "-engine e use engine e, possibly a hardware device", +#endif + "-evp e use EVP e", + "-decrypt time decryption instead of encryption (only EVP)", + "-mr produce machine readable output", +#ifndef NO_FORK + "-multi n run n benchmarks in parallel.", #endif - unsigned char md[EVP_MAX_MD_SIZE]; #ifndef OPENSSL_NO_MD2 - unsigned char md2[MD2_DIGEST_LENGTH]; + "md2 " #endif #ifndef OPENSSL_NO_MDC2 - unsigned char mdc2[MDC2_DIGEST_LENGTH]; + "mdc2 " #endif #ifndef OPENSSL_NO_MD4 - unsigned char md4[MD4_DIGEST_LENGTH]; + "md4 " #endif #ifndef OPENSSL_NO_MD5 - unsigned char md5[MD5_DIGEST_LENGTH]; - unsigned char hmac[MD5_DIGEST_LENGTH]; + "md5 " +#ifndef OPENSSL_NO_HMAC + "hmac " +#endif +#endif +#ifndef OPENSSL_NO_SHA1 + "sha1 " #endif -#ifndef OPENSSL_NO_SHA - unsigned char sha[SHA_DIGEST_LENGTH]; #ifndef OPENSSL_NO_SHA256 - unsigned char sha256[SHA256_DIGEST_LENGTH]; + "sha256 " #endif #ifndef OPENSSL_NO_SHA512 - unsigned char sha512[SHA512_DIGEST_LENGTH]; -#endif + "sha512 " #endif #ifndef OPENSSL_NO_WHIRLPOOL - unsigned char whirlpool[WHIRLPOOL_DIGEST_LENGTH]; + "whirlpool " #endif -#ifndef OPENSSL_NO_RIPEMD - unsigned char rmd160[RIPEMD160_DIGEST_LENGTH]; +#ifndef OPENSSL_NO_RIPEMD160 + "rmd160" #endif -#ifndef OPENSSL_NO_RC4 - RC4_KEY rc4_ks; + , + +#ifndef OPENSSL_NO_IDEA + "idea-cbc " #endif -#ifndef OPENSSL_NO_RC5 - RC5_32_KEY rc5_ks; +#ifndef OPENSSL_NO_SEED + "seed-cbc " #endif #ifndef OPENSSL_NO_RC2 - RC2_KEY rc2_ks; -#endif -#ifndef OPENSSL_NO_IDEA - IDEA_KEY_SCHEDULE idea_ks; + "rc2-cbc " #endif -#ifndef OPENSSL_NO_SEED - SEED_KEY_SCHEDULE seed_ks; +#ifndef OPENSSL_NO_RC5 + "rc5-cbc " #endif #ifndef OPENSSL_NO_BF - BF_KEY bf_ks; + "bf-cbc" #endif -#ifndef OPENSSL_NO_CAST - CAST_KEY cast_ks; + , + +#ifndef OPENSSL_NO_DES + "des-cbc des-ede3 ", #endif - static const unsigned char key16[16]= - {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, - 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12}; #ifndef OPENSSL_NO_AES - static const unsigned char key24[24]= - {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, - 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, - 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; - static const unsigned char key32[32]= - {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, - 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, - 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34, - 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56}; + "aes-128-cbc aes-192-cbc aes-256-cbc ", + "aes-128-ige aes-192-ige aes-256-ige ", #endif #ifndef OPENSSL_NO_CAMELLIA - static const unsigned char ckey24[24]= - {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, - 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, - 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; - static const unsigned char ckey32[32]= - {0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, - 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, - 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34, - 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56}; + "camellia-128-cbc camellia-192-cbc camellia-256-cbc ", #endif -#ifndef OPENSSL_NO_AES -#define MAX_BLOCK_SIZE 128 -#else -#define MAX_BLOCK_SIZE 64 +#ifndef OPENSSL_NO_RC4 + "rc4", +#endif + +#ifndef OPENSSL_NO_RSA + "rsa512 rsa1024 rsa2048 rsa3072 rsa4096", + "rsa7680 rsa15360", +#endif + +#ifndef OPENSSL_NO_DSA + "dsa512 dsa1024 dsa2048", +#endif +#ifndef OPENSSL_NO_ECDSA + "ecdsap160 ecdsap192 ecdsap224 ecdsap256 ecdsap384 ecdsap521", + "ecdsak163 ecdsak233 ecdsak283 ecdsak409 ecdsak571", + "ecdsab163 ecdsab233 ecdsab283 ecdsab409 ecdsab571", + "ecdsa", +#endif +#ifndef OPENSSL_NO_ECDH + "ecdhp160 ecdhp192 ecdhp224 ecdhp256 ecdhp384 ecdhp521", + "ecdhk163 ecdhk233 ecdhk283 ecdhk409 ecdhk571", + "ecdhb163 ecdhb233 ecdhb283 ecdhb409 ecdhb571", + "ecdh\n" +#endif + +#ifndef OPENSSL_NO_IDEA + "idea " +#endif +#ifndef OPENSSL_NO_SEED + "seed " +#endif +#ifndef OPENSSL_NO_RC2 + "rc2 " #endif - unsigned char DES_iv[8]; - unsigned char iv[2*MAX_BLOCK_SIZE/8]; #ifndef OPENSSL_NO_DES - static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0}; - static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12}; - static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34}; - DES_key_schedule sch; - DES_key_schedule sch2; - DES_key_schedule sch3; + "des " #endif #ifndef OPENSSL_NO_AES - AES_KEY aes_ks1, aes_ks2, aes_ks3; + "aes " #endif #ifndef OPENSSL_NO_CAMELLIA - CAMELLIA_KEY camellia_ks1, camellia_ks2, camellia_ks3; + "camellia " #endif +#ifndef OPENSSL_NO_RSA + "rsa " +#endif +#ifndef OPENSSL_NO_BF + "blowfish " +#endif + , + "prime-trial-division prime-coprime", + NULL +}; + +static int found(const char* name, const OPT_PAIR* pairs, int *result) +{ + for ( ; pairs->name; pairs++) + if (strcmp(name, pairs->name) == 0) { + *result = pairs->retval; + return 1; + } + return 0; +} + +enum options { + OPT_ERR = -1, OPT_EOF = 0, + OPT_ELAPSED, OPT_EVP, OPT_DECRYPT, OPT_ENGINE, OPT_MULTI, + OPT_MR, OPT_MB, +}; +static OPTIONS options[] = { + { "elapsed", OPT_ELAPSED, '-' }, + { "evp", OPT_EVP, 's' }, + { "decrypt", OPT_DECRYPT, '-' }, +#ifndef OPENSSL_NO_ENGINE + { "engine", OPT_ENGINE, 's' }, +#endif + { "multi", OPT_MULTI, 'p' }, + { "mr", OPT_MR, '-' }, + { "mb", OPT_MB, '-' }, + + { NULL } +}; + #define D_MD2 0 #define D_MDC2 1 #define D_MD4 2 @@ -620,17 +546,94 @@ int speed_main(int argc, char **argv) #define D_IGE_192_AES 27 #define D_IGE_256_AES 28 #define D_GHASH 29 - 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] = {0, 0, 0}; +OPT_PAIR doit_choices[] = { +#ifndef OPENSSL_NO_MD2 + { "md2", D_MD2 }, +#endif +#ifndef OPENSSL_NO_MDC2 + { "mdc2", D_MDC2 }, +#endif +#ifndef OPENSSL_NO_MD4 + { "md4", D_MD4 }, +#endif +#ifndef OPENSSL_NO_MD5 + { "md5", D_MD5 }, +#endif +#ifndef OPENSSL_NO_MD5 + { "hmac", D_HMAC }, +#endif +#ifndef OPENSSL_NO_SHA + { "sha1", D_SHA1 }, +# ifndef OPENSSL_NO_SHA256 + { "sha256", D_SHA256 }, +# endif +# ifndef OPENSSL_NO_SHA512 + { "sha512", D_SHA512 }, +# endif +#endif +#ifndef OPENSSL_NO_WHIRLPOOL + { "whirlpool", D_WHIRLPOOL }, +#endif +#ifndef OPENSSL_NO_RIPEMD + { "ripemd", D_RMD160 }, + { "rmd160", D_RMD160 }, + { "ripemd160", D_RMD160 }, +#endif +#ifndef OPENSSL_NO_RC4 + { "rc4", D_RC4 }, +#endif +#ifndef OPENSSL_NO_DES + { "des-cbc", D_CBC_DES }, + { "des-ede3", D_EDE3_DES }, +#endif +#ifndef OPENSSL_NO_AES + { "aes-128-cbc", D_CBC_128_AES }, + { "aes-192-cbc", D_CBC_192_AES }, + { "aes-256-cbc", D_CBC_256_AES }, + { "aes-128-ige", D_IGE_128_AES }, + { "aes-192-ige", D_IGE_192_AES }, + { "aes-256-ige", D_IGE_256_AES }, +#endif +#ifndef OPENSSL_NO_RC2 + { "rc2-cbc", D_CBC_RC2 }, + { "rc2", D_CBC_RC2 }, +#endif +#ifndef OPENSSL_NO_RC5 + { "rc5-cbc", D_CBC_RC5 }, + { "rc5", D_CBC_RC5 }, +#endif +#ifndef OPENSSL_NO_IDEA + { "idea-cbc", D_CBC_IDEA }, + { "idea", D_CBC_IDEA }, +#endif +#ifndef OPENSSL_NO_SEED + { "seed-cbc", D_CBC_SEED }, + { "seed", D_CBC_SEED }, +#endif +#ifndef OPENSSL_NO_BF + { "bf-cbc", D_CBC_BF }, + { "blowfish", D_CBC_BF }, + { "bf", D_CBC_BF }, +#endif +#ifndef OPENSSL_NO_CAST + { "cast-cbc", D_CBC_CAST }, + { "cast", D_CBC_CAST }, + { "cast5", D_CBC_CAST }, +#endif + { "ghash", D_GHASH }, + { NULL } +}; #define R_DSA_512 0 #define R_DSA_1024 1 #define R_DSA_2048 2 +static OPT_PAIR dsa_choices[] = { + { "dsa512", R_DSA_512 }, + { "dsa1024", R_DSA_1024 }, + { "dsa2048", R_DSA_2048 }, + { NULL }, +}; + #define R_RSA_512 0 #define R_RSA_1024 1 #define R_RSA_2048 2 @@ -638,6 +641,16 @@ int speed_main(int argc, char **argv) #define R_RSA_4096 4 #define R_RSA_7680 5 #define R_RSA_15360 6 +static OPT_PAIR rsa_choices[] = { + { "rsa512", R_RSA_512 }, + { "rsa1024", R_RSA_1024 }, + { "rsa2048", R_RSA_2048 }, + { "rsa3072", R_RSA_3072 }, + { "rsa4096", R_RSA_4096 }, + { "rsa7680", R_RSA_7680 }, + { "rsa15360", R_RSA_15360 }, + { NULL } +}; #define R_EC_P160 0 #define R_EC_P192 1 @@ -655,13 +668,193 @@ int speed_main(int argc, char **argv) #define R_EC_B283 13 #define R_EC_B409 14 #define R_EC_B571 15 +#ifndef OPENSSL_NO_ECDSA +static OPT_PAIR ecdsa_choices[] = { + { "ecdsap160", R_EC_P160 }, + { "ecdsap192", R_EC_P192 }, + { "ecdsap224", R_EC_P224 }, + { "ecdsap256", R_EC_P256 }, + { "ecdsap384", R_EC_P384 }, + { "ecdsap521", R_EC_P521 }, + { "ecdsak163", R_EC_K163 }, + { "ecdsak233", R_EC_K233 }, + { "ecdsak283", R_EC_K283 }, + { "ecdsak409", R_EC_K409 }, + { "ecdsak571", R_EC_K571 }, + { "ecdsab163", R_EC_B163 }, + { "ecdsab233", R_EC_B233 }, + { "ecdsab283", R_EC_B283 }, + { "ecdsab409", R_EC_B409 }, + { "ecdsab571", R_EC_B571 }, + { NULL } +}; +#endif +#ifndef OPENSSL_NO_ECDH +static OPT_PAIR ecdh_choices[] = { + { "ecdhp160", R_EC_P160 }, + { "ecdhp192", R_EC_P192 }, + { "ecdhp224", R_EC_P224 }, + { "ecdhp256", R_EC_P256 }, + { "ecdhp384", R_EC_P384 }, + { "ecdhp521", R_EC_P521 }, + { "ecdhk163", R_EC_K163 }, + { "ecdhk233", R_EC_K233 }, + { "ecdhk283", R_EC_K283 }, + { "ecdhk409", R_EC_K409 }, + { "ecdhk571", R_EC_K571 }, + { "ecdhb163", R_EC_B163 }, + { "ecdhb233", R_EC_B233 }, + { "ecdhb283", R_EC_B283 }, + { "ecdhb409", R_EC_B409 }, + { "ecdhb571", R_EC_B571 }, + { NULL } +}; +#endif +#define D_PRIME_TRIAL_DIVISION 0 +#define D_PRIME_TRIAL_DIVISION_RETRY 1 +#define D_PRIME_COPRIME 2 +static OPT_PAIR prime_choices[] = { + { "prime-trial-division", D_PRIME_TRIAL_DIVISION }, + { "prime-trial-division-retry", D_PRIME_TRIAL_DIVISION_RETRY }, + { "prime-coprime", D_PRIME_COPRIME }, + { NULL } +}; + +int speed_main(int argc, char **argv) + { + char* prog; + const EVP_CIPHER *evp_cipher=NULL; + const EVP_MD *evp_md=NULL; + double d=0.0; + enum options o; + int decrypt=0, multiblock=0, doit[ALGOR_NUM], pr_header=0; + int dsa_doit[DSA_NUM], prime_doit[PRIME_NUM], rsa_doit[RSA_NUM]; + int mret=1,i,j,k; + long c[ALGOR_NUM][SIZE_NUM], count=0,save_count=0, prime_c[PRIME_NUM]; + unsigned char *buf=NULL,*buf2=NULL; + unsigned char md[EVP_MAX_MD_SIZE]; +#ifndef NO_FORK + int multi=0; +#endif + /* What follows are the buffers and key material. */ +#if !defined(OPENSSL_NO_RSA) || !defined(OPENSSL_NO_DSA) + long rsa_count; +#endif +#ifndef OPENSSL_NO_MD2 + unsigned char md2[MD2_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_MDC2 + unsigned char mdc2[MDC2_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_MD4 + unsigned char md4[MD4_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_MD5 + unsigned char md5[MD5_DIGEST_LENGTH]; + unsigned char hmac[MD5_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_SHA + unsigned char sha[SHA_DIGEST_LENGTH]; +#ifndef OPENSSL_NO_SHA256 + unsigned char sha256[SHA256_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_SHA512 + unsigned char sha512[SHA512_DIGEST_LENGTH]; +#endif +#endif +#ifndef OPENSSL_NO_WHIRLPOOL + unsigned char whirlpool[WHIRLPOOL_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_RIPEMD + unsigned char rmd160[RIPEMD160_DIGEST_LENGTH]; +#endif +#ifndef OPENSSL_NO_RC4 + RC4_KEY rc4_ks; +#endif +#ifndef OPENSSL_NO_RC5 + RC5_32_KEY rc5_ks; +#endif +#ifndef OPENSSL_NO_RC2 + RC2_KEY rc2_ks; +#endif +#ifndef OPENSSL_NO_IDEA + IDEA_KEY_SCHEDULE idea_ks; +#endif +#ifndef OPENSSL_NO_SEED + SEED_KEY_SCHEDULE seed_ks; +#endif +#ifndef OPENSSL_NO_BF + BF_KEY bf_ks; +#endif +#ifndef OPENSSL_NO_CAST + CAST_KEY cast_ks; +#endif + static const unsigned char key16[16] = { + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, + 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12 + }; +#ifndef OPENSSL_NO_AES + static const unsigned char key24[24] = { + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, + 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, + 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34 + }; + static const unsigned char key32[32] = { + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, + 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, + 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34, + 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56 + }; +#endif +#ifndef OPENSSL_NO_CAMELLIA + static const unsigned char ckey24[24] = { + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, + 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, + 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34 + }; + static const unsigned char ckey32[32] = { + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0, + 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12, + 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34, + 0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34,0x56 + }; + CAMELLIA_KEY camellia_ks1, camellia_ks2, camellia_ks3; +#endif +#ifndef OPENSSL_NO_AES +#define MAX_BLOCK_SIZE 128 +#else +#define MAX_BLOCK_SIZE 64 +#endif + unsigned char DES_iv[8]; + unsigned char iv[2*MAX_BLOCK_SIZE/8]; +#ifndef OPENSSL_NO_DES + static DES_cblock key = { + 0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0 + }; + static DES_cblock key2= { + 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12 + }; + static DES_cblock key3= { + 0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34 + }; + DES_key_schedule sch; + DES_key_schedule sch2; + DES_key_schedule sch3; +#endif +#ifndef OPENSSL_NO_AES + AES_KEY aes_ks1, aes_ks2, aes_ks3; +#endif #ifndef OPENSSL_NO_RSA + unsigned rsa_num; RSA *rsa_key[RSA_NUM]; long rsa_c[RSA_NUM][2]; - static unsigned int rsa_bits[RSA_NUM]={512,1024,2048,3072,4096,7680,15360}; - static unsigned char *rsa_data[RSA_NUM]= - {test512,test1024,test2048,test3072,test4096,test7680,test15360}; + static unsigned int rsa_bits[RSA_NUM] = { + 512,1024,2048,3072,4096,7680,15360 + }; + static unsigned char *rsa_data[RSA_NUM]= { + test512,test1024,test2048,test3072,test4096,test7680,test15360 + }; static int rsa_data_length[RSA_NUM]={ sizeof(test512),sizeof(test1024), sizeof(test2048),sizeof(test3072), @@ -679,64 +872,42 @@ int speed_main(int argc, char **argv) * and curve name to the following arrays and increase the * EC_NUM value accordingly. */ - static unsigned int test_curves[EC_NUM] = - { - /* Prime Curves */ - NID_secp160r1, - NID_X9_62_prime192v1, - NID_secp224r1, - NID_X9_62_prime256v1, - NID_secp384r1, - NID_secp521r1, - /* Binary Curves */ - NID_sect163k1, - NID_sect233k1, - NID_sect283k1, - NID_sect409k1, - NID_sect571k1, - NID_sect163r2, - NID_sect233r1, - NID_sect283r1, - NID_sect409r1, - NID_sect571r1 + static unsigned int test_curves[EC_NUM] = { + /* Prime Curves */ + NID_secp160r1, NID_X9_62_prime192v1, NID_secp224r1, + NID_X9_62_prime256v1, NID_secp384r1, NID_secp521r1, + /* Binary Curves */ + NID_sect163k1, NID_sect233k1, NID_sect283k1, + NID_sect409k1, NID_sect571k1, NID_sect163r2, + NID_sect233r1, NID_sect283r1, NID_sect409r1, + NID_sect571r1 }; - static const char * test_curves_names[EC_NUM] = - { - /* Prime Curves */ - "secp160r1", - "nistp192", - "nistp224", - "nistp256", - "nistp384", - "nistp521", - /* Binary Curves */ - "nistk163", - "nistk233", - "nistk283", - "nistk409", - "nistk571", - "nistb163", - "nistb233", - "nistb283", - "nistb409", - "nistb571" + static const char * test_curves_names[EC_NUM] = { + /* Prime Curves */ + "secp160r1", "nistp192", "nistp224", + "nistp256", "nistp384", "nistp521", + /* Binary Curves */ + "nistk163", "nistk233", "nistk283", + "nistk409", "nistk571", "nistb163", + "nistb233", "nistb283", "nistb409", + "nistb571" }; - static int test_curves_bits[EC_NUM] = - { - 160, 192, 224, 256, 384, 521, - 163, 233, 283, 409, 571, - 163, 233, 283, 409, 571 + static int test_curves_bits[EC_NUM] = { + 160, 192, 224, + 256, 384, 521, + 163, 233, 283, + 409, 571, 163, + 233, 283, 409, + 571 }; - #endif - #ifndef OPENSSL_NO_ECDSA unsigned char ecdsasig[256]; unsigned int ecdsasiglen; EC_KEY *ecdsa[EC_NUM]; long ecdsa_c[EC_NUM][2]; + int ecdsa_doit[EC_NUM]; #endif - #ifndef OPENSSL_NO_ECDH EC_KEY *ecdh_a[EC_NUM], *ecdh_b[EC_NUM]; unsigned char secret_a[MAX_ECDH_SIZE], secret_b[MAX_ECDH_SIZE]; @@ -744,456 +915,230 @@ int speed_main(int argc, char **argv) int ecdh_checks = 0; int secret_idx = 0; 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 - int ecdsa_doit[EC_NUM]; -#endif -#ifndef OPENSSL_NO_ECDH int ecdh_doit[EC_NUM]; #endif - int doit[ALGOR_NUM]; - int pr_header=0; - const EVP_CIPHER *evp_cipher=NULL; - const EVP_MD *evp_md=NULL; - int decrypt=0; -#ifndef NO_FORK - int multi=0; -#endif - int multiblock=0; #ifndef TIMES usertime=-1; #endif - for (i=0; i<PRIME_NUM; i++) prime_c[i] = 0; + for (i = 0; i < PRIME_NUM; i++) + prime_c[i] = 0; memset(results, 0, sizeof(results)); #ifndef OPENSSL_NO_DSA memset(dsa_key,0,sizeof(dsa_key)); #endif #ifndef OPENSSL_NO_ECDSA - for (i=0; i<EC_NUM; i++) ecdsa[i] = NULL; + for (i = 0; i < EC_NUM; i++) + ecdsa[i] = NULL; #endif #ifndef OPENSSL_NO_ECDH - for (i=0; i<EC_NUM; i++) - { - ecdh_a[i] = NULL; - ecdh_b[i] = NULL; - } + for (i = 0; i < EC_NUM; i++) + ecdh_a[i] = ecdh_b[i] = NULL; #endif #ifndef OPENSSL_NO_RSA memset(rsa_key,0,sizeof(rsa_key)); - for (i=0; i<RSA_NUM; i++) - rsa_key[i]=NULL; + for (i = 0; i < RSA_NUM; i++) + rsa_key[i] = NULL; #endif - if ((buf=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) - { - BIO_printf(bio_err,"out of memory\n"); - goto end; - } - if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) - { - BIO_printf(bio_err,"out of memory\n"); - goto end; - } - memset(c,0,sizeof(c)); memset(DES_iv,0,sizeof(DES_iv)); memset(iv,0,sizeof(iv)); - for (i=0; i<ALGOR_NUM; i++) - doit[i]=0; - for (i=0; i<RSA_NUM; i++) - rsa_doit[i]=0; - for (i=0; i<DSA_NUM; i++) - dsa_doit[i]=0; + for (i = 0; i < ALGOR_NUM; i++) + doit[i] = 0; + for (i = 0; i < RSA_NUM; i++) + rsa_doit[i] = 0; + for (i = 0; i < DSA_NUM; i++) + dsa_doit[i] = 0; #ifndef OPENSSL_NO_ECDSA - for (i=0; i<EC_NUM; i++) - ecdsa_doit[i]=0; + for (i = 0; i<EC_NUM; i++) + ecdsa_doit[i] = 0; #endif #ifndef OPENSSL_NO_ECDH - for (i=0; i<EC_NUM; i++) - ecdh_doit[i]=0; + for (i = 0; i < EC_NUM; i++) + ecdh_doit[i] = 0; #endif - for (i=0; i<PRIME_NUM; i++) - prime_doit[i]=0; + for (i = 0; i < PRIME_NUM; i++) + prime_doit[i] = 0; - - j=0; - argc--; - argv++; - while (argc) - { - if ((argc > 0) && (strcmp(*argv,"-elapsed") == 0)) - { + if ((buf=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) { + BIO_printf(bio_err,"out of memory\n"); + goto end; + } + if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL) { + BIO_printf(bio_err,"out of memory\n"); + goto end; + } + + prog = opt_init(argc, argv, options); + while ((o = opt_next()) != OPT_EOF) { + switch (o) { + case OPT_EOF: + case OPT_ERR: + BIO_printf(bio_err,"Valid options are:\n"); + printhelp(speed_help); + goto end; + case OPT_ELAPSED: usertime = 0; - j--; /* Otherwise, -elapsed gets confused with - an algorithm. */ - } - else if ((argc > 0) && (strcmp(*argv,"-evp") == 0)) - { - argc--; - argv++; - if(argc == 0) - { - BIO_printf(bio_err,"no EVP given\n"); - goto end; - } - evp_cipher=EVP_get_cipherbyname(*argv); - if(!evp_cipher) - { - evp_md=EVP_get_digestbyname(*argv); - } - if(!evp_cipher && !evp_md) - { - BIO_printf(bio_err,"%s is an unknown cipher or digest\n",*argv); + break; + case OPT_EVP: + evp_cipher=EVP_get_cipherbyname(opt_arg()); + if (evp_cipher == NULL) + evp_md = EVP_get_digestbyname(opt_arg()); + if (evp_cipher == NULL && evp_md == NULL) { + BIO_printf(bio_err, + "%s: %s an unknown cipher or digest\n", + prog, opt_arg()); goto end; - } - doit[D_EVP]=1; - } - else if (argc > 0 && !strcmp(*argv,"-decrypt")) - { - decrypt=1; - j--; /* Otherwise, -elapsed gets confused with - an algorithm. */ } + doit[D_EVP] = 1; + break; + case OPT_DECRYPT: + decrypt = 1; + break; #ifndef OPENSSL_NO_ENGINE - else if ((argc > 0) && (strcmp(*argv,"-engine") == 0)) - { - argc--; - argv++; - if(argc == 0) - { - BIO_printf(bio_err,"no engine given\n"); - goto end; - } + case OPT_ENGINE: setup_engine(bio_err, *argv, 0); - /* j will be increased again further down. We just - don't want speed to confuse an engine with an - algorithm, especially when none is given (which - means all of them should be run) */ - j--; - } + break; #endif #ifndef NO_FORK - else if ((argc > 0) && (strcmp(*argv,"-multi") == 0)) - { - argc--; - argv++; - if(argc == 0) - { - BIO_printf(bio_err,"no multi count given\n"); - goto end; - } - multi=atoi(argv[0]); - if(multi <= 0) - { - BIO_printf(bio_err,"bad multi count\n"); - goto end; - } - j--; /* Otherwise, -mr gets confused with - an algorithm. */ - } -#endif - else if (argc > 0 && !strcmp(*argv,"-mr")) - { - mr=1; - j--; /* Otherwise, -mr gets confused with - an algorithm. */ - } - else if (argc > 0 && !strcmp(*argv,"-mb")) - { + case OPT_MULTI: + multi = atoi(opt_arg()); + break; +#endif + case OPT_MR: + mr = 1; + break; + case OPT_MB: multiblock=1; - j--; - } - else -#ifndef OPENSSL_NO_MD2 - if (strcmp(*argv,"md2") == 0) doit[D_MD2]=1; - else -#endif -#ifndef OPENSSL_NO_MDC2 - if (strcmp(*argv,"mdc2") == 0) doit[D_MDC2]=1; - else -#endif -#ifndef OPENSSL_NO_MD4 - if (strcmp(*argv,"md4") == 0) doit[D_MD4]=1; - else -#endif -#ifndef OPENSSL_NO_MD5 - if (strcmp(*argv,"md5") == 0) doit[D_MD5]=1; - else -#endif -#ifndef OPENSSL_NO_MD5 - if (strcmp(*argv,"hmac") == 0) doit[D_HMAC]=1; - else -#endif -#ifndef OPENSSL_NO_SHA - if (strcmp(*argv,"sha1") == 0) doit[D_SHA1]=1; - else - if (strcmp(*argv,"sha") == 0) doit[D_SHA1]=1, - doit[D_SHA256]=1, - doit[D_SHA512]=1; - else -#ifndef OPENSSL_NO_SHA256 - if (strcmp(*argv,"sha256") == 0) doit[D_SHA256]=1; - else -#endif -#ifndef OPENSSL_NO_SHA512 - if (strcmp(*argv,"sha512") == 0) doit[D_SHA512]=1; - else -#endif -#endif -#ifndef OPENSSL_NO_WHIRLPOOL - if (strcmp(*argv,"whirlpool") == 0) doit[D_WHIRLPOOL]=1; - else -#endif -#ifndef OPENSSL_NO_RIPEMD - if (strcmp(*argv,"ripemd") == 0) doit[D_RMD160]=1; - else - if (strcmp(*argv,"rmd160") == 0) doit[D_RMD160]=1; - else - if (strcmp(*argv,"ripemd160") == 0) doit[D_RMD160]=1; - else -#endif -#ifndef OPENSSL_NO_RC4 - if (strcmp(*argv,"rc4") == 0) doit[D_RC4]=1; - else -#endif + break; + } + } + + argc = opt_num_rest(); + for (argv = opt_rest(); *argv; argv++) { + if (strcmp(*argv, "prime") == 0) { + for (i = 0; i < PRIME_NUM; i++) + prime_doit[i] = 1; + continue; + } + if (found(*argv, prime_choices, &i)) { + prime_doit[i] = 1; + continue; + } + if (found(*argv, doit_choices, &i)) { + doit[i] = 1; + continue; + } #ifndef OPENSSL_NO_DES - if (strcmp(*argv,"des-cbc") == 0) doit[D_CBC_DES]=1; - else if (strcmp(*argv,"des-ede3") == 0) doit[D_EDE3_DES]=1; - else -#endif -#ifndef OPENSSL_NO_AES - if (strcmp(*argv,"aes-128-cbc") == 0) doit[D_CBC_128_AES]=1; - else if (strcmp(*argv,"aes-192-cbc") == 0) doit[D_CBC_192_AES]=1; - else if (strcmp(*argv,"aes-256-cbc") == 0) doit[D_CBC_256_AES]=1; - else if (strcmp(*argv,"aes-128-ige") == 0) doit[D_IGE_128_AES]=1; - else if (strcmp(*argv,"aes-192-ige") == 0) doit[D_IGE_192_AES]=1; - else if (strcmp(*argv,"aes-256-ige") == 0) doit[D_IGE_256_AES]=1; - else + if (strcmp(*argv, "des") == 0) { + doit[D_CBC_DES] = doit[D_EDE3_DES] = 1; + continue; + } #endif -#ifndef OPENSSL_NO_CAMELLIA - if (strcmp(*argv,"camellia-128-cbc") == 0) doit[D_CBC_128_CML]=1; - else if (strcmp(*argv,"camellia-192-cbc") == 0) doit[D_CBC_192_CML]=1; - else if (strcmp(*argv,"camellia-256-cbc") == 0) doit[D_CBC_256_CML]=1; - else +#ifndef OPENSSL_NO_SHA + if (strcmp(*argv,"sha") == 0) { + doit[D_SHA1] = doit[D_SHA256] = doit[D_SHA512] = 1; + continue; + } #endif #ifndef OPENSSL_NO_RSA -#if 0 /* was: #ifdef RSAref */ - if (strcmp(*argv,"rsaref") == 0) - { - RSA_set_default_openssl_method(RSA_PKCS1_RSAref()); - j--; - } - else -#endif #ifndef RSA_NULL - if (strcmp(*argv,"openssl") == 0) - { + if (strcmp(*argv, "openssl") == 0) { RSA_set_default_method(RSA_PKCS1_SSLeay()); - j--; - } - else -#endif -#endif /* !OPENSSL_NO_RSA */ - if (strcmp(*argv,"dsa512") == 0) dsa_doit[R_DSA_512]=2; - else if (strcmp(*argv,"dsa1024") == 0) dsa_doit[R_DSA_1024]=2; - else if (strcmp(*argv,"dsa2048") == 0) dsa_doit[R_DSA_2048]=2; - else if (strcmp(*argv,"rsa512") == 0) rsa_doit[R_RSA_512]=2; - else if (strcmp(*argv,"rsa1024") == 0) rsa_doit[R_RSA_1024]=2; - else if (strcmp(*argv,"rsa2048") == 0) rsa_doit[R_RSA_2048]=2; - else if (strcmp(*argv,"rsa3072") == 0) rsa_doit[R_RSA_3072]=2; - else if (strcmp(*argv,"rsa4096") == 0) rsa_doit[R_RSA_4096]=2; - else if (strcmp(*argv,"rsa7680") == 0) rsa_doit[R_RSA_7680]=2; - else if (strcmp(*argv,"rsa15360") == 0) rsa_doit[R_RSA_15360]=2; - else -#ifndef OPENSSL_NO_RC2 - if (strcmp(*argv,"rc2-cbc") == 0) doit[D_CBC_RC2]=1; - else if (strcmp(*argv,"rc2") == 0) doit[D_CBC_RC2]=1; - else -#endif -#ifndef OPENSSL_NO_RC5 - if (strcmp(*argv,"rc5-cbc") == 0) doit[D_CBC_RC5]=1; - else if (strcmp(*argv,"rc5") == 0) doit[D_CBC_RC5]=1; - else -#endif -#ifndef OPENSSL_NO_IDEA - if (strcmp(*argv,"idea-cbc") == 0) doit[D_CBC_IDEA]=1; - else if (strcmp(*argv,"idea") == 0) doit[D_CBC_IDEA]=1; - else -#endif -#ifndef OPENSSL_NO_SEED - if (strcmp(*argv,"seed-cbc") == 0) doit[D_CBC_SEED]=1; - else if (strcmp(*argv,"seed") == 0) doit[D_CBC_SEED]=1; - else -#endif -#ifndef OPENSSL_NO_BF - if (strcmp(*argv,"bf-cbc") == 0) doit[D_CBC_BF]=1; - else if (strcmp(*argv,"blowfish") == 0) doit[D_CBC_BF]=1; - else if (strcmp(*argv,"bf") == 0) doit[D_CBC_BF]=1; - else + continue; + } #endif -#ifndef OPENSSL_NO_CAST - if (strcmp(*argv,"cast-cbc") == 0) doit[D_CBC_CAST]=1; - else if (strcmp(*argv,"cast") == 0) doit[D_CBC_CAST]=1; - else if (strcmp(*argv,"cast5") == 0) doit[D_CBC_CAST]=1; - else + if (strcmp(*argv, "rsa") == 0) { + rsa_doit[R_RSA_512] = rsa_doit[R_RSA_1024] = + rsa_doit[R_RSA_2048] = rsa_doit[R_RSA_3072] = + rsa_doit[R_RSA_4096] = rsa_doit[R_RSA_7680] = + rsa_doit[R_RSA_15360] = 1; + continue; + } + if (found(*argv, rsa_choices, &i)) { + rsa_doit[i] = 1; + continue; + } #endif -#ifndef OPENSSL_NO_DES - if (strcmp(*argv,"des") == 0) - { - doit[D_CBC_DES]=1; - doit[D_EDE3_DES]=1; - } - else +#ifndef OPENSSL_NO_DSA + if (strcmp(*argv, "dsa") == 0) { + dsa_doit[R_DSA_512] = dsa_doit[R_DSA_1024] = + dsa_doit[R_DSA_2048] = 1; + continue; + } + if (found(*argv, dsa_choices, &i)) { + dsa_doit[i] = 2; + continue; + } #endif #ifndef OPENSSL_NO_AES - if (strcmp(*argv,"aes") == 0) - { - doit[D_CBC_128_AES]=1; - doit[D_CBC_192_AES]=1; - doit[D_CBC_256_AES]=1; - } - else if (strcmp(*argv,"ghash") == 0) - { - doit[D_GHASH]=1; - } - else + if (strcmp(*argv, "aes") == 0) { + doit[D_CBC_128_AES] = doit[D_CBC_192_AES] = + doit[D_CBC_256_AES] = 1; + continue; + } #endif #ifndef OPENSSL_NO_CAMELLIA - if (strcmp(*argv,"camellia") == 0) - { - doit[D_CBC_128_CML]=1; - doit[D_CBC_192_CML]=1; - doit[D_CBC_256_CML]=1; - } - else -#endif -#ifndef OPENSSL_NO_RSA - if (strcmp(*argv,"rsa") == 0) - { - rsa_doit[R_RSA_512]=1; - rsa_doit[R_RSA_1024]=1; - rsa_doit[R_RSA_2048]=1; - rsa_doit[R_RSA_3072]=1; - rsa_doit[R_RSA_4096]=1; - rsa_doit[R_RSA_7680]=1; - rsa_doit[R_RSA_15360]=1; - } - else -#endif -#ifndef OPENSSL_NO_DSA - if (strcmp(*argv,"dsa") == 0) - { - dsa_doit[R_DSA_512]=1; - dsa_doit[R_DSA_1024]=1; - dsa_doit[R_DSA_2048]=1; - } - else + if (strcmp(*argv, "camellia") == 0) { + doit[D_CBC_128_CML] = doit[D_CBC_192_CML] = + doit[D_CBC_256_CML] = 1; + continue; + } #endif #ifndef OPENSSL_NO_ECDSA - if (strcmp(*argv,"ecdsap160") == 0) ecdsa_doit[R_EC_P160]=2; - else if (strcmp(*argv,"ecdsap192") == 0) ecdsa_doit[R_EC_P192]=2; - else if (strcmp(*argv,"ecdsap224") == 0) ecdsa_doit[R_EC_P224]=2; - else if (strcmp(*argv,"ecdsap256") == 0) ecdsa_doit[R_EC_P256]=2; - else if (strcmp(*argv,"ecdsap384") == 0) ecdsa_doit[R_EC_P384]=2; - else if (strcmp(*argv,"ecdsap521") == 0) ecdsa_doit[R_EC_P521]=2; - else if (strcmp(*argv,"ecdsak163") == 0) ecdsa_doit[R_EC_K163]=2; - else if (strcmp(*argv,"ecdsak233") == 0) ecdsa_doit[R_EC_K233]=2; - else if (strcmp(*argv,"ecdsak283") == 0) ecdsa_doit[R_EC_K283]=2; - else if (strcmp(*argv,"ecdsak409") == 0) ecdsa_doit[R_EC_K409]=2; - else if (strcmp(*argv,"ecdsak571") == 0) ecdsa_doit[R_EC_K571]=2; - else if (strcmp(*argv,"ecdsab163") == 0) ecdsa_doit[R_EC_B163]=2; - else if (strcmp(*argv,"ecdsab233") == 0) ecdsa_doit[R_EC_B233]=2; - else if (strcmp(*argv,"ecdsab283") == 0) ecdsa_doit[R_EC_B283]=2; - else if (strcmp(*argv,"ecdsab409") == 0) ecdsa_doit[R_EC_B409]=2; - else if (strcmp(*argv,"ecdsab571") == 0) ecdsa_doit[R_EC_B571]=2; - else if (strcmp(*argv,"ecdsa") == 0) - { - for (i=0; i < EC_NUM; i++) - ecdsa_doit[i]=1; - } - else + if (found(*argv, ecdsa_choices, &i)) { + ecdsa_doit[i] = 2; + continue; + } + if (strcmp(*argv, "ecdsa") == 0) { + for (i = 0; i < EC_NUM; i++) + ecdsa_doit[i] = 1; + continue; + } #endif #ifndef OPENSSL_NO_ECDH - if (strcmp(*argv,"ecdhp160") == 0) ecdh_doit[R_EC_P160]=2; - else if (strcmp(*argv,"ecdhp192") == 0) ecdh_doit[R_EC_P192]=2; - else if (strcmp(*argv,"ecdhp224") == 0) ecdh_doit[R_EC_P224]=2; - else if (strcmp(*argv,"ecdhp256") == 0) ecdh_doit[R_EC_P256]=2; - else if (strcmp(*argv,"ecdhp384") == 0) ecdh_doit[R_EC_P384]=2; - else if (strcmp(*argv,"ecdhp521") == 0) ecdh_doit[R_EC_P521]=2; - else if (strcmp(*argv,"ecdhk163") == 0) ecdh_doit[R_EC_K163]=2; - else if (strcmp(*argv,"ecdhk233") == 0) ecdh_doit[R_EC_K233]=2; - else if (strcmp(*argv,"ecdhk283") == 0) ecdh_doit[R_EC_K283]=2; - else if (strcmp(*argv,"ecdhk409") == 0) ecdh_doit[R_EC_K409]=2; - else if (strcmp(*argv,"ecdhk571") == 0) ecdh_doit[R_EC_K571]=2; - else if (strcmp(*argv,"ecdhb163") == 0) ecdh_doit[R_EC_B163]=2; - else if (strcmp(*argv,"ecdhb233") == 0) ecdh_doit[R_EC_B233]=2; - else if (strcmp(*argv,"ecdhb283") == 0) ecdh_doit[R_EC_B283]=2; - else if (strcmp(*argv,"ecdhb409") == 0) ecdh_doit[R_EC_B409]=2; - else if (strcmp(*argv,"ecdhb571") == 0) ecdh_doit[R_EC_B571]=2; - else if (strcmp(*argv,"ecdh") == 0) - { - for (i=0; i < EC_NUM; i++) - ecdh_doit[i]=1; - } - 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"); - printhelp(speed_help); - goto end; - } - argc--; - argv++; - j++; + if (found(*argv, ecdh_choices, &i)) { + ecdh_doit[i] = 2; + continue; + } + if (strcmp(*argv,"ecdh") == 0) { + for (i = 0; i < EC_NUM; i++) + ecdh_doit[i] = 1; + continue; } +#endif + } #ifndef NO_FORK - if(multi && do_multi(multi)) + if (multi && do_multi(multi)) goto show_res; #endif - if (j == 0) - { - for (i=0; i<ALGOR_NUM; i++) - { + /* No parameters; turn on everything. */ + if (argc == 0) { + for (i = 0; i < ALGOR_NUM; i++) if (i != D_EVP) - doit[i]=1; - } - for (i=0; i<RSA_NUM; i++) - rsa_doit[i]=1; - for (i=0; i<DSA_NUM; i++) - dsa_doit[i]=1; + doit[i] = 1; + for (i = 0; i < RSA_NUM; i++) + rsa_doit[i] = 1; + for (i = 0; i < DSA_NUM; i++) + dsa_doit[i] = 1; #ifndef OPENSSL_NO_ECDSA - for (i=0; i<EC_NUM; i++) - ecdsa_doit[i]=1; + for (i = 0; i < EC_NUM; i++) + ecdsa_doit[i] = 1; #endif #ifndef OPENSSL_NO_ECDH - for (i=0; i<EC_NUM; i++) - ecdh_doit[i]=1; + for (i = 0; i < EC_NUM; i++) + ecdh_doit[i] = 1; #endif - } - for (i=0; i<ALGOR_NUM; i++) - if (doit[i]) pr_header++; + } + for (i = 0; i < ALGOR_NUM; i++) + if (doit[i]) + pr_header++; if (usertime == 0 && !mr) BIO_printf(bio_err,"You have chosen to measure elapsed time instead of user CPU time.\n"); |