summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Salz <rsalz@akamai.com>2014-07-14 00:41:38 -0400
committerRich Salz <rsalz@akamai.com>2014-07-14 18:03:33 -0400
commitb4edb810a3db0374d8f39b8abf6c5a162547c74d (patch)
tree673382417486dc46fba8c9a2beaddd147e18a894
parentb4994cd71e68a79d2ce0bb6fa598278b3a5f9cda (diff)
downloadopenssl-new-b4edb810a3db0374d8f39b8abf6c5a162547c74d.tar.gz
Converted to new pargs parsing.
-rw-r--r--apps/speed.c1237
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");