X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=apps%2Fspeed.c;h=8437ab20258dae25b19d0ca1c99f1238291f6a5e;hb=a55b3959374161e33c68542d27c0fe93c6b7fe81;hp=5b3db90cd68e67c152c5c45c97c7f3f334ffc43e;hpb=55b09fe69aebe862777b9797c7334bbf2fc07fba;p=oweals%2Fopenssl.git diff --git a/apps/speed.c b/apps/speed.c index 5b3db90cd6..8437ab2025 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -154,7 +154,7 @@ typedef struct loopargs_st { unsigned char *buf2; unsigned char *buf_malloc; unsigned char *buf2_malloc; - unsigned int *siglen; + unsigned int siglen; #ifndef OPENSSL_NO_RSA RSA *rsa_key[RSA_NUM]; #endif @@ -167,7 +167,7 @@ typedef struct loopargs_st { EC_KEY *ecdh_b[EC_NUM]; unsigned char *secret_a; unsigned char *secret_b; - int outlen; + size_t outlen; kdf_fn kdf; #endif EVP_CIPHER_CTX *ctx; @@ -347,7 +347,7 @@ static double Time_F(int s) static void multiblock_speed(const EVP_CIPHER *evp_cipher); -static int found(const char *name, const OPT_PAIR * pairs, int *result) +static int found(const char *name, const OPT_PAIR *pairs, int *result) { for (; pairs->name; pairs++) if (strcmp(name, pairs->name) == 0) { @@ -371,8 +371,8 @@ OPTIONS speed_options[] = { {"decrypt", OPT_DECRYPT, '-', "Time decryption instead of encryption (only EVP)"}, {"mr", OPT_MR, '-', "Produce machine readable output"}, - {"mb", OPT_MB, '-', - "Enable (tls1.1) multi-block mode on evp_cipher requested with -evp"}, + {"mb", OPT_MB, '-', + "Enable (tls1.1) multi-block mode on evp_cipher requested with -evp"}, {"misalign", OPT_MISALIGN, 'n', "Amount to mis-align buffers"}, {"elapsed", OPT_ELAPSED, '-', "Measure time in real time instead of CPU user time"}, @@ -380,7 +380,8 @@ OPTIONS speed_options[] = { {"multi", OPT_MULTI, 'p', "Run benchmarks in parallel"}, #endif #ifndef OPENSSL_NO_ASYNC - {"async_jobs", OPT_ASYNCJOBS, 'p', "Enable async mode and start pnum jobs"}, + {"async_jobs", OPT_ASYNCJOBS, 'p', + "Enable async mode and start pnum jobs"}, #endif #ifndef OPENSSL_NO_ENGINE {"engine", OPT_ENGINE, 's', "Use engine, possibly a hardware device"}, @@ -430,8 +431,6 @@ static OPT_PAIR doit_choices[] = { #endif #ifndef OPENSSL_NO_MD5 {"md5", D_MD5}, -#endif -#ifndef OPENSSL_NO_MD5 {"hmac", D_HMAC}, #endif {"sha1", D_SHA1}, @@ -555,6 +554,7 @@ static OPT_PAIR ecdsa_choices[] = { {"ecdsab571", R_EC_B571}, {NULL} }; + static OPT_PAIR ecdh_choices[] = { {"ecdhp160", R_EC_P160}, {"ecdhp192", R_EC_P192}, @@ -593,7 +593,7 @@ static long c[ALGOR_NUM][SIZE_NUM]; #ifndef OPENSSL_NO_MD2 static int EVP_Digest_MD2_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char md2[MD2_DIGEST_LENGTH]; int count; @@ -610,7 +610,7 @@ static int EVP_Digest_MD2_loop(void *args) #ifndef OPENSSL_NO_MDC2 static int EVP_Digest_MDC2_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char mdc2[MDC2_DIGEST_LENGTH]; int count; @@ -627,7 +627,7 @@ static int EVP_Digest_MDC2_loop(void *args) #ifndef OPENSSL_NO_MD4 static int EVP_Digest_MD4_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char md4[MD4_DIGEST_LENGTH]; int count; @@ -644,7 +644,7 @@ static int EVP_Digest_MD4_loop(void *args) #ifndef OPENSSL_NO_MD5 static int MD5_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char md5[MD5_DIGEST_LENGTH]; int count; @@ -655,7 +655,7 @@ static int MD5_loop(void *args) static int HMAC_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; HMAC_CTX *hctx = tempargs->hctx; unsigned char hmac[MD5_DIGEST_LENGTH]; @@ -672,7 +672,7 @@ static int HMAC_loop(void *args) static int SHA1_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char sha[SHA_DIGEST_LENGTH]; int count; @@ -683,7 +683,7 @@ static int SHA1_loop(void *args) static int SHA256_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char sha256[SHA256_DIGEST_LENGTH]; int count; @@ -694,7 +694,7 @@ static int SHA256_loop(void *args) static int SHA512_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char sha512[SHA512_DIGEST_LENGTH]; int count; @@ -706,7 +706,7 @@ static int SHA512_loop(void *args) #ifndef OPENSSL_NO_WHIRLPOOL static int WHIRLPOOL_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char whirlpool[WHIRLPOOL_DIGEST_LENGTH]; int count; @@ -719,7 +719,7 @@ static int WHIRLPOOL_loop(void *args) #ifndef OPENSSL_NO_RMD160 static int EVP_Digest_RMD160_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char rmd160[RIPEMD160_DIGEST_LENGTH]; int count; @@ -736,7 +736,7 @@ static int EVP_Digest_RMD160_loop(void *args) static RC4_KEY rc4_ks; static int RC4_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; int count; for (count = 0; COND(c[D_RC4][testnum]); count++) @@ -752,7 +752,7 @@ static DES_key_schedule sch2; static DES_key_schedule sch3; static int DES_ncbc_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; int count; for (count = 0; COND(c[D_CBC_DES][testnum]); count++) @@ -763,7 +763,7 @@ static int DES_ncbc_encrypt_loop(void *args) static int DES_ede3_cbc_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; int count; for (count = 0; COND(c[D_EDE3_DES][testnum]); count++) @@ -780,7 +780,7 @@ static unsigned char iv[2 * MAX_BLOCK_SIZE / 8]; static AES_KEY aes_ks1, aes_ks2, aes_ks3; static int AES_cbc_128_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; int count; for (count = 0; COND(c[D_CBC_128_AES][testnum]); count++) @@ -792,7 +792,7 @@ static int AES_cbc_128_encrypt_loop(void *args) static int AES_cbc_192_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; int count; for (count = 0; COND(c[D_CBC_192_AES][testnum]); count++) @@ -804,7 +804,7 @@ static int AES_cbc_192_encrypt_loop(void *args) static int AES_cbc_256_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; int count; for (count = 0; COND(c[D_CBC_256_AES][testnum]); count++) @@ -816,7 +816,7 @@ static int AES_cbc_256_encrypt_loop(void *args) static int AES_ige_128_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; int count; @@ -829,7 +829,7 @@ static int AES_ige_128_encrypt_loop(void *args) static int AES_ige_192_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; int count; @@ -842,7 +842,7 @@ static int AES_ige_192_encrypt_loop(void *args) static int AES_ige_256_encrypt_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; int count; @@ -855,7 +855,7 @@ static int AES_ige_256_encrypt_loop(void *args) static int CRYPTO_gcm128_aad_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; GCM128_CONTEXT *gcm_ctx = tempargs->gcm_ctx; int count; @@ -868,7 +868,7 @@ static long save_count = 0; static int decrypt = 0; static int EVP_Update_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; EVP_CIPHER_CTX *ctx = tempargs->ctx; int outl, count; @@ -891,7 +891,7 @@ static int EVP_Update_loop(void *args) static const EVP_MD *evp_md = NULL; static int EVP_Digest_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char md[EVP_MAX_MD_SIZE]; int count; @@ -911,10 +911,10 @@ static long rsa_c[RSA_NUM][2]; /* # RSA iteration test */ static int RSA_sign_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; - unsigned int *rsa_num = tempargs->siglen; + unsigned int *rsa_num = &tempargs->siglen; RSA **rsa_key = tempargs->rsa_key; int ret, count; for (count = 0; COND(rsa_c[testnum][0]); count++) { @@ -931,10 +931,10 @@ static int RSA_sign_loop(void *args) static int RSA_verify_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; - unsigned int rsa_num = *(tempargs->siglen); + unsigned int rsa_num = tempargs->siglen; RSA **rsa_key = tempargs->rsa_key; int ret, count; for (count = 0; COND(rsa_c[testnum][1]); count++) { @@ -954,11 +954,11 @@ static int RSA_verify_loop(void *args) static long dsa_c[DSA_NUM][2]; static int DSA_sign_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; DSA **dsa_key = tempargs->dsa_key; - unsigned int *siglen = tempargs->siglen; + unsigned int *siglen = &tempargs->siglen; int ret, count; for (count = 0; COND(dsa_c[testnum][0]); count++) { ret = DSA_sign(0, buf, 20, buf2, siglen, dsa_key[testnum]); @@ -974,11 +974,11 @@ static int DSA_sign_loop(void *args) static int DSA_verify_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; unsigned char *buf2 = tempargs->buf2; DSA **dsa_key = tempargs->dsa_key; - unsigned int siglen = *(tempargs->siglen); + unsigned int siglen = tempargs->siglen; int ret, count; for (count = 0; COND(dsa_c[testnum][1]); count++) { ret = DSA_verify(0, buf, 20, buf2, siglen, dsa_key[testnum]); @@ -997,11 +997,11 @@ static int DSA_verify_loop(void *args) static long ecdsa_c[EC_NUM][2]; static int ECDSA_sign_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; EC_KEY **ecdsa = tempargs->ecdsa; unsigned char *ecdsasig = tempargs->buf2; - unsigned int *ecdsasiglen = tempargs->siglen; + unsigned int *ecdsasiglen = &tempargs->siglen; int ret, count; for (count = 0; COND(ecdsa_c[testnum][0]); count++) { ret = ECDSA_sign(0, buf, 20, @@ -1018,11 +1018,11 @@ static int ECDSA_sign_loop(void *args) static int ECDSA_verify_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; unsigned char *buf = tempargs->buf; EC_KEY **ecdsa = tempargs->ecdsa; unsigned char *ecdsasig = tempargs->buf2; - unsigned int ecdsasiglen = *(tempargs->siglen); + unsigned int ecdsasiglen = tempargs->siglen; int ret, count; for (count = 0; COND(ecdsa_c[testnum][1]); count++) { ret = ECDSA_verify(0, buf, 20, ecdsasig, ecdsasiglen, @@ -1042,11 +1042,12 @@ static long ecdh_c[EC_NUM][1]; static int ECDH_compute_key_loop(void *args) { - loopargs_t *tempargs = (loopargs_t *)args; + loopargs_t *tempargs = *(loopargs_t **)args; EC_KEY **ecdh_a = tempargs->ecdh_a; EC_KEY **ecdh_b = tempargs->ecdh_b; unsigned char *secret_a = tempargs->secret_a; - int count, outlen = tempargs->outlen; + int count; + size_t outlen = tempargs->outlen; kdf_fn kdf = tempargs->kdf; for (count = 0; COND(ecdh_c[testnum][0]); count++) { @@ -1057,7 +1058,7 @@ static int ECDH_compute_key_loop(void *args) return count; } -static const int KDF1_SHA1_len = 20; +static const size_t KDF1_SHA1_len = 20; static void *KDF1_SHA1(const void *in, size_t inlen, void *out, size_t *outlen) { @@ -1066,47 +1067,48 @@ static void *KDF1_SHA1(const void *in, size_t inlen, void *out, *outlen = SHA_DIGEST_LENGTH; return SHA1(in, inlen, out); } +#endif /* OPENSSL_NO_EC */ -#endif /* ndef OPENSSL_NO_EC */ - - -static int run_benchmark(int async_jobs, int (*loop_function)(void *), loopargs_t *loopargs) +static int run_benchmark(int async_jobs, + int (*loop_function)(void *), loopargs_t *loopargs) { int job_op_count = 0; int total_op_count = 0; int num_inprogress = 0; - int error = 0; - int i = 0; + int error = 0, i = 0, ret = 0; OSSL_ASYNC_FD job_fd = 0; size_t num_job_fds = 0; run = 1; if (async_jobs == 0) { - return loop_function((void *)loopargs); + return loop_function((void *)&loopargs); } - for (i = 0; i < async_jobs && !error; i++) { - switch (ASYNC_start_job(&(loopargs[i].inprogress_job), loopargs[i].wait_ctx, - &job_op_count, loop_function, - (void *)(loopargs + i), sizeof(loopargs_t))) { - case ASYNC_PAUSE: - ++num_inprogress; - break; - case ASYNC_FINISH: - if (job_op_count == -1) { - error = 1; - } else { - total_op_count += job_op_count; - } - break; - case ASYNC_NO_JOBS: - case ASYNC_ERR: - BIO_printf(bio_err, "Failure in the job\n"); - ERR_print_errors(bio_err); + loopargs_t *looparg_item = loopargs + i; + + /* Copy pointer content (looparg_t item address) into async context */ + ret = ASYNC_start_job(&loopargs[i].inprogress_job, loopargs[i].wait_ctx, + &job_op_count, loop_function, + (void *)&looparg_item, sizeof(looparg_item)); + switch (ret) { + case ASYNC_PAUSE: + ++num_inprogress; + break; + case ASYNC_FINISH: + if (job_op_count == -1) { error = 1; - break; + } else { + total_op_count += job_op_count; + } + break; + case ASYNC_NO_JOBS: + case ASYNC_ERR: + BIO_printf(bio_err, "Failure in the job\n"); + ERR_print_errors(bio_err); + error = 1; + break; } } @@ -1179,33 +1181,35 @@ static int run_benchmark(int async_jobs, int (*loop_function)(void *), loopargs_ if (num_job_fds == 1 && !FD_ISSET(job_fd, &waitfdset)) continue; #elif defined(OPENSSL_SYS_WINDOWS) - if (num_job_fds == 1 && - !PeekNamedPipe(job_fd, NULL, 0, NULL, &avail, NULL) && avail > 0) + if (num_job_fds == 1 + && !PeekNamedPipe(job_fd, NULL, 0, NULL, &avail, NULL) + && avail > 0) continue; #endif - switch (ASYNC_start_job(&(loopargs[i].inprogress_job), loopargs[i].wait_ctx, - &job_op_count, loop_function, (void *)(loopargs + i), - sizeof(loopargs_t))) { - case ASYNC_PAUSE: - break; - case ASYNC_FINISH: - if (job_op_count == -1) { - error = 1; - } else { - total_op_count += job_op_count; - } - --num_inprogress; - loopargs[i].inprogress_job = NULL; - break; - case ASYNC_NO_JOBS: - case ASYNC_ERR: - --num_inprogress; - loopargs[i].inprogress_job = NULL; - BIO_printf(bio_err, "Failure in the job\n"); - ERR_print_errors(bio_err); + ret = ASYNC_start_job(&loopargs[i].inprogress_job, + loopargs[i].wait_ctx, &job_op_count, loop_function, + (void *)(loopargs + i), sizeof(loopargs_t)); + switch (ret) { + case ASYNC_PAUSE: + break; + case ASYNC_FINISH: + if (job_op_count == -1) { error = 1; - break; + } else { + total_op_count += job_op_count; + } + --num_inprogress; + loopargs[i].inprogress_job = NULL; + break; + case ASYNC_NO_JOBS: + case ASYNC_ERR: + --num_inprogress; + loopargs[i].inprogress_job = NULL; + BIO_printf(bio_err, "Failure in the job\n"); + ERR_print_errors(bio_err); + error = 1; + break; } } } @@ -1215,6 +1219,7 @@ static int run_benchmark(int async_jobs, int (*loop_function)(void *), loopargs_ int speed_main(int argc, char **argv) { + ENGINE *e = NULL; loopargs_t *loopargs = NULL; int async_init = 0; int loopargs_len = 0; @@ -1357,7 +1362,7 @@ int speed_main(int argc, char **argv) int ecdsa_doit[EC_NUM] = { 0 }; int ecdh_doit[EC_NUM] = { 0 }; -#endif /* ndef OPENSSL_NO_EC */ +#endif /* ndef OPENSSL_NO_EC */ prog = opt_init(argc, argv, speed_options); while ((o = opt_next()) != OPT_EOF) { @@ -1429,6 +1434,12 @@ int speed_main(int argc, char **argv) break; case OPT_MB: multiblock = 1; +#ifdef OPENSSL_NO_MULTIBLOCK + BIO_printf(bio_err, + "%s: -mb specified but multi-block support is disabled\n", + prog); + goto end; +#endif break; } } @@ -1544,7 +1555,6 @@ int speed_main(int argc, char **argv) /* Align the start of buffers on a 64 byte boundary */ loopargs[i].buf = loopargs[i].buf_malloc + misalign; loopargs[i].buf2 = loopargs[i].buf2_malloc + misalign; - loopargs[i].siglen = app_malloc(sizeof(unsigned int), "signature length"); #ifndef OPENSSL_NO_EC loopargs[i].secret_a = app_malloc(MAX_ECDH_SIZE, "ECDH secret a"); loopargs[i].secret_b = app_malloc(MAX_ECDH_SIZE, "ECDH secret b"); @@ -1557,15 +1567,17 @@ int speed_main(int argc, char **argv) #endif /* Initialize the engine after the fork */ - (void)setup_engine(engine_id, 0); + e = setup_engine(engine_id, 0); /* No parameters; turn on everything. */ if ((argc == 0) && !doit[D_EVP]) { for (i = 0; i < ALGOR_NUM; i++) if (i != D_EVP) doit[i] = 1; +#ifndef OPENSSL_NO_RSA for (i = 0; i < RSA_NUM; i++) rsa_doit[i] = 1; +#endif #ifndef OPENSSL_NO_DSA for (i = 0; i < DSA_NUM; i++) dsa_doit[i] = 1; @@ -1894,11 +1906,9 @@ int speed_main(int argc, char **argv) print_result(D_MD5, testnum, count, d); } } -#endif -#ifndef OPENSSL_NO_MD5 if (doit[D_HMAC]) { - char hmac_key[] = "This is a key..."; + static const char hmac_key[] = "This is a key..."; int len = strlen(hmac_key); for (i = 0; i < loopargs_len; i++) { @@ -2086,13 +2096,14 @@ int speed_main(int argc, char **argv) #ifndef OPENSSL_NO_CAMELLIA if (doit[D_CBC_128_CML]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_128_CML]); + doit[D_CBC_128_CML] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_128_CML], c[D_CBC_128_CML][testnum], lengths[testnum]); - if (async_jobs > 0) { - BIO_printf(bio_err, "Async mode is not supported, exiting..."); - exit(1); - } Time_F(START); for (count = 0, run = 1; COND(c[D_CBC_128_CML][testnum]); count++) Camellia_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, @@ -2103,7 +2114,12 @@ int speed_main(int argc, char **argv) } } if (doit[D_CBC_192_CML]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_192_CML]); + doit[D_CBC_192_CML] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_192_CML], c[D_CBC_192_CML][testnum], lengths[testnum]); if (async_jobs > 0) { @@ -2120,13 +2136,14 @@ int speed_main(int argc, char **argv) } } if (doit[D_CBC_256_CML]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_256_CML]); + doit[D_CBC_256_CML] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_256_CML], c[D_CBC_256_CML][testnum], lengths[testnum]); - if (async_jobs > 0) { - BIO_printf(bio_err, "Async mode is not supported, exiting..."); - exit(1); - } Time_F(START); for (count = 0, run = 1; COND(c[D_CBC_256_CML][testnum]); count++) Camellia_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, @@ -2139,12 +2156,13 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_IDEA if (doit[D_CBC_IDEA]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_IDEA]); + doit[D_CBC_IDEA] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_IDEA], c[D_CBC_IDEA][testnum], lengths[testnum]); - if (async_jobs > 0) { - BIO_printf(bio_err, "Async mode is not supported, exiting..."); - exit(1); - } Time_F(START); for (count = 0, run = 1; COND(c[D_CBC_IDEA][testnum]); count++) IDEA_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, @@ -2157,12 +2175,13 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_SEED if (doit[D_CBC_SEED]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_SEED]); + doit[D_CBC_SEED] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_SEED], c[D_CBC_SEED][testnum], lengths[testnum]); - if (async_jobs > 0) { - BIO_printf(bio_err, "Async mode is not supported, exiting..."); - exit(1); - } Time_F(START); for (count = 0, run = 1; COND(c[D_CBC_SEED][testnum]); count++) SEED_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, @@ -2174,7 +2193,12 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_RC2 if (doit[D_CBC_RC2]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_RC2]); + doit[D_CBC_RC2] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_RC2], c[D_CBC_RC2][testnum], lengths[testnum]); if (async_jobs > 0) { BIO_printf(bio_err, "Async mode is not supported, exiting..."); @@ -2192,7 +2216,12 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_RC5 if (doit[D_CBC_RC5]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_RC5]); + doit[D_CBC_RC5] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_RC5], c[D_CBC_RC5][testnum], lengths[testnum]); if (async_jobs > 0) { BIO_printf(bio_err, "Async mode is not supported, exiting..."); @@ -2210,12 +2239,13 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_BF if (doit[D_CBC_BF]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_BF]); + doit[D_CBC_BF] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_BF], c[D_CBC_BF][testnum], lengths[testnum]); - if (async_jobs > 0) { - BIO_printf(bio_err, "Async mode is not supported, exiting..."); - exit(1); - } Time_F(START); for (count = 0, run = 1; COND(c[D_CBC_BF][testnum]); count++) BF_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, @@ -2228,12 +2258,13 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_CAST if (doit[D_CBC_CAST]) { - for (testnum = 0; testnum < SIZE_NUM; testnum++) { + if (async_jobs > 0) { + BIO_printf(bio_err, "Async mode is not supported with %s\n", + names[D_CBC_CAST]); + doit[D_CBC_CAST] = 0; + } + for (testnum = 0; testnum < SIZE_NUM && async_init == 0; testnum++) { print_message(names[D_CBC_CAST], c[D_CBC_CAST][testnum], lengths[testnum]); - if (async_jobs > 0) { - BIO_printf(bio_err, "Async mode is not supported, exiting..."); - exit(1); - } Time_F(START); for (count = 0, run = 1; COND(c[D_CBC_CAST][testnum]); count++) CAST_cbc_encrypt(loopargs[0].buf, loopargs[0].buf, @@ -2311,7 +2342,7 @@ int speed_main(int argc, char **argv) continue; for (i = 0; i < loopargs_len; i++) { st = RSA_sign(NID_md5_sha1, loopargs[i].buf, 36, loopargs[i].buf2, - loopargs[i].siglen, loopargs[i].rsa_key[testnum]); + &loopargs[i].siglen, loopargs[i].rsa_key[testnum]); if (st == 0) break; } @@ -2337,7 +2368,7 @@ int speed_main(int argc, char **argv) for (i = 0; i < loopargs_len; i++) { st = RSA_verify(NID_md5_sha1, loopargs[i].buf, 36, loopargs[i].buf2, - *(loopargs[i].siglen), loopargs[i].rsa_key[testnum]); + loopargs[i].siglen, loopargs[i].rsa_key[testnum]); if (st <= 0) break; } @@ -2365,7 +2396,7 @@ int speed_main(int argc, char **argv) rsa_doit[testnum] = 0; } } -#endif +#endif /* OPENSSL_NO_RSA */ for (i = 0; i < loopargs_len; i++) RAND_bytes(loopargs[i].buf, 36); @@ -2383,7 +2414,7 @@ int speed_main(int argc, char **argv) /* DSA_sign_setup(dsa_key[testnum],NULL); */ for (i = 0; i < loopargs_len; i++) { st = DSA_sign(0, loopargs[i].buf, 20, loopargs[i].buf2, - loopargs[i].siglen, loopargs[i].dsa_key[testnum]); + &loopargs[i].siglen, loopargs[i].dsa_key[testnum]); if (st == 0) break; } @@ -2408,7 +2439,7 @@ int speed_main(int argc, char **argv) for (i = 0; i < loopargs_len; i++) { st = DSA_verify(0, loopargs[i].buf, 20, loopargs[i].buf2, - *(loopargs[i].siglen), loopargs[i].dsa_key[testnum]); + loopargs[i].siglen, loopargs[i].dsa_key[testnum]); if (st <= 0) break; } @@ -2436,7 +2467,7 @@ int speed_main(int argc, char **argv) dsa_doit[testnum] = 0; } } -#endif +#endif /* OPENSSL_NO_DSA */ #ifndef OPENSSL_NO_EC if (RAND_status() != 1) { @@ -2464,7 +2495,7 @@ int speed_main(int argc, char **argv) /* Perform ECDSA signature test */ EC_KEY_generate_key(loopargs[i].ecdsa[testnum]); st = ECDSA_sign(0, loopargs[i].buf, 20, loopargs[i].buf2, - loopargs[i].siglen, loopargs[i].ecdsa[testnum]); + &loopargs[i].siglen, loopargs[i].ecdsa[testnum]); if (st == 0) break; } @@ -2492,7 +2523,7 @@ int speed_main(int argc, char **argv) /* Perform ECDSA verification test */ for (i = 0; i < loopargs_len; i++) { st = ECDSA_verify(0, loopargs[i].buf, 20, loopargs[i].buf2, - *(loopargs[i].siglen), loopargs[i].ecdsa[testnum]); + loopargs[i].siglen, loopargs[i].ecdsa[testnum]); if (st != 1) break; } @@ -2618,7 +2649,7 @@ int speed_main(int argc, char **argv) ecdh_doit[testnum] = 0; } } -#endif +#endif /* OPENSSL_NO_EC */ #ifndef NO_FORK show_res: #endif @@ -2760,7 +2791,6 @@ int speed_main(int argc, char **argv) for (i = 0; i < loopargs_len; i++) { OPENSSL_free(loopargs[i].buf_malloc); OPENSSL_free(loopargs[i].buf2_malloc); - OPENSSL_free(loopargs[i].siglen); #ifndef OPENSSL_NO_RSA for (k = 0; k < RSA_NUM; k++) @@ -2790,6 +2820,7 @@ int speed_main(int argc, char **argv) ASYNC_cleanup_thread(); } OPENSSL_free(loopargs); + release_engine(e); return (ret); } @@ -2991,11 +3022,7 @@ static int do_multi(int multi) 1 / (1 / ecdsa_results[k][1] + 1 / d); else ecdsa_results[k][1] = d; - } -# endif - -# ifndef OPENSSL_NO_EC - else if (strncmp(buf, "+F5:", 4) == 0) { + } else if (strncmp(buf, "+F5:", 4) == 0) { int k; double d;