X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=apps%2Fspeed.c;h=66271fddd9dbc7e35cd20bb7b436390277db92ec;hp=926778eced966e6defc487827f2093cfc07bf4cc;hb=32c6985349ba134761f75a3f61814234d096a1df;hpb=6b1fe3d059d8c5b3b86a7203faf59a7538fc9f0d diff --git a/apps/speed.c b/apps/speed.c index 926778eced..66271fddd9 100644 --- a/apps/speed.c +++ b/apps/speed.c @@ -1,5 +1,5 @@ /* - * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved * * Licensed under the OpenSSL license (the "License"). You may not use @@ -20,6 +20,7 @@ #include #include #include "apps.h" +#include "progs.h" #include #include #include @@ -117,17 +118,17 @@ #define RSA_NUM 7 #define DSA_NUM 3 -#define EC_NUM 17 +#define EC_NUM 18 #define MAX_ECDH_SIZE 256 #define MISALIGN 64 -typedef struct sec_st { +typedef struct openssl_speed_sec_st { int sym; int rsa; int dsa; int ecdsa; int ecdh; -} SEC; +} openssl_speed_sec_t; static volatile int run = 0; @@ -334,7 +335,7 @@ static double Time_F(int s) #endif static void multiblock_speed(const EVP_CIPHER *evp_cipher, - const SEC *seconds); + const openssl_speed_sec_t *seconds); static int found(const char *name, const OPT_PAIR *pairs, int *result) { @@ -532,6 +533,7 @@ static OPT_PAIR rsa_choices[] = { #define R_EC_B409 14 #define R_EC_B571 15 #define R_EC_X25519 16 +#define R_EC_X448 17 #ifndef OPENSSL_NO_EC static OPT_PAIR ecdsa_choices[] = { {"ecdsap160", R_EC_P160}, @@ -571,6 +573,7 @@ static OPT_PAIR ecdh_choices[] = { {"ecdhb409", R_EC_B409}, {"ecdhb571", R_EC_B571}, {"ecdhx25519", R_EC_X25519}, + {"ecdhx448", R_EC_X448}, {NULL} }; #endif @@ -1268,6 +1271,7 @@ int speed_main(int argc, char **argv) long count = 0; int size_num = OSSL_NELEM(lengths_list); int keylen; + int buflen; #ifndef NO_FORK int multi = 0; #endif @@ -1276,6 +1280,9 @@ int speed_main(int argc, char **argv) || !defined(OPENSSL_NO_EC) long rsa_count = 1; #endif +#ifndef OPENSSL_NO_EC + size_t loop; +#endif /* What follows are the buffers and key material. */ #ifndef OPENSSL_NO_RC5 @@ -1372,7 +1379,7 @@ int speed_main(int argc, char **argv) NID_sect233r1, NID_sect283r1, NID_sect409r1, NID_sect571r1, /* Other */ - NID_X25519 + NID_X25519, NID_X448 }; static const char *test_curves_names[EC_NUM] = { /* Prime Curves */ @@ -1384,7 +1391,7 @@ int speed_main(int argc, char **argv) "nistb233", "nistb283", "nistb409", "nistb571", /* Other */ - "X25519" + "X25519", "X448" }; static const int test_curves_bits[EC_NUM] = { 160, 192, 224, @@ -1392,15 +1399,15 @@ int speed_main(int argc, char **argv) 163, 233, 283, 409, 571, 163, 233, 283, 409, - 571, 253 /* X25519 */ + 571, 253, 448 }; int ecdsa_doit[EC_NUM] = { 0 }; int ecdh_doit[EC_NUM] = { 0 }; #endif /* ndef OPENSSL_NO_EC */ - SEC seconds = {SECONDS, RSA_SECONDS, DSA_SECONDS, ECDSA_SECONDS, - ECDH_SECONDS}; + openssl_speed_sec_t seconds = { SECONDS, RSA_SECONDS, DSA_SECONDS, + ECDSA_SECONDS, ECDH_SECONDS }; prog = opt_init(argc, argv, speed_options); while ((o = opt_next()) != OPT_EOF) { @@ -1560,8 +1567,8 @@ int speed_main(int argc, char **argv) #endif #ifndef OPENSSL_NO_EC if (strcmp(*argv, "ecdsa") == 0) { - for (i = 0; i < EC_NUM; i++) - ecdsa_doit[i] = 1; + for (loop = 0; loop < OSSL_NELEM(ecdsa_choices); loop++) + ecdsa_doit[ecdsa_choices[loop].retval] = 1; continue; } if (found(*argv, ecdsa_choices, &i)) { @@ -1569,8 +1576,8 @@ int speed_main(int argc, char **argv) continue; } if (strcmp(*argv, "ecdh") == 0) { - for (i = 0; i < EC_NUM; i++) - ecdh_doit[i] = 1; + for (loop = 0; loop < OSSL_NELEM(ecdh_choices); loop++) + ecdh_doit[ecdh_choices[loop].retval] = 1; continue; } if (found(*argv, ecdh_choices, &i)) { @@ -1605,12 +1612,12 @@ int speed_main(int argc, char **argv) } } - loopargs[i].buf_malloc = - app_malloc(lengths[size_num - 1] + MAX_MISALIGNMENT + 1, - "input buffer"); - loopargs[i].buf2_malloc = - app_malloc(lengths[size_num - 1] + MAX_MISALIGNMENT + 1, - "input buffer"); + buflen = lengths[size_num - 1] + MAX_MISALIGNMENT + 1; + loopargs[i].buf_malloc = app_malloc(buflen, "input buffer"); + loopargs[i].buf2_malloc = app_malloc(buflen, "input buffer"); + memset(loopargs[i].buf_malloc, 0, buflen); + memset(loopargs[i].buf2_malloc, 0, buflen); + /* 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; @@ -1642,10 +1649,10 @@ int speed_main(int argc, char **argv) dsa_doit[i] = 1; #endif #ifndef OPENSSL_NO_EC - for (i = 0; i < EC_NUM; i++) - ecdsa_doit[i] = 1; - for (i = 0; i < EC_NUM; i++) - ecdh_doit[i] = 1; + for (loop = 0; loop < OSSL_NELEM(ecdsa_choices); loop++) + ecdsa_doit[ecdsa_choices[loop].retval] = 1; + for (loop = 0; loop < OSSL_NELEM(ecdh_choices); loop++) + ecdh_doit[ecdh_choices[loop].retval] = 1; #endif } for (i = 0; i < ALGOR_NUM; i++) @@ -3242,7 +3249,8 @@ static int do_multi(int multi, int size_num) } #endif -static void multiblock_speed(const EVP_CIPHER *evp_cipher, const SEC *seconds) +static void multiblock_speed(const EVP_CIPHER *evp_cipher, + const openssl_speed_sec_t *seconds) { static const int mblengths_list[] = { 8 * 1024, 2 * 8 * 1024, 4 * 8 * 1024, 8 * 8 * 1024, 8 * 16 * 1024 };