summaryrefslogtreecommitdiff
path: root/src/usr.bin/openssl/speed.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr.bin/openssl/speed.c')
-rw-r--r--src/usr.bin/openssl/speed.c113
1 files changed, 96 insertions, 17 deletions
diff --git a/src/usr.bin/openssl/speed.c b/src/usr.bin/openssl/speed.c
index a149a31afa..a0fa9dcd8b 100644
--- a/src/usr.bin/openssl/speed.c
+++ b/src/usr.bin/openssl/speed.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: speed.c,v 1.12 2015/09/11 20:55:59 jsing Exp $ */ 1/* $OpenBSD: speed.c,v 1.13 2015/09/12 15:49:53 bcook Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -150,7 +150,7 @@
150#include "./testdsa.h" 150#include "./testdsa.h"
151#include "./testrsa.h" 151#include "./testrsa.h"
152 152
153#define BUFSIZE (1024*8+1) 153#define BUFSIZE (1024*8+64)
154int run = 0; 154int run = 0;
155 155
156static int mr = 0; 156static int mr = 0;
@@ -164,7 +164,7 @@ pkey_print_message(const char *str, const char *str2,
164static void print_result(int alg, int run_no, int count, double time_used); 164static void print_result(int alg, int run_no, int count, double time_used);
165static int do_multi(int multi); 165static int do_multi(int multi);
166 166
167#define ALGOR_NUM 30 167#define ALGOR_NUM 33
168#define SIZE_NUM 5 168#define SIZE_NUM 5
169#define RSA_NUM 4 169#define RSA_NUM 4
170#define DSA_NUM 3 170#define DSA_NUM 3
@@ -179,7 +179,9 @@ static const char *names[ALGOR_NUM] = {
179 "aes-128 cbc", "aes-192 cbc", "aes-256 cbc", 179 "aes-128 cbc", "aes-192 cbc", "aes-256 cbc",
180 "camellia-128 cbc", "camellia-192 cbc", "camellia-256 cbc", 180 "camellia-128 cbc", "camellia-192 cbc", "camellia-256 cbc",
181 "evp", "sha256", "sha512", "whirlpool", 181 "evp", "sha256", "sha512", "whirlpool",
182 "aes-128 ige", "aes-192 ige", "aes-256 ige", "ghash" }; 182 "aes-128 ige", "aes-192 ige", "aes-256 ige", "ghash",
183 "aes-128 gcm", "aes-256 gcm", "chacha20 poly1305",
184};
183static double results[ALGOR_NUM][SIZE_NUM]; 185static double results[ALGOR_NUM][SIZE_NUM];
184static int lengths[SIZE_NUM] = {16, 64, 256, 1024, 8 * 1024}; 186static int lengths[SIZE_NUM] = {16, 64, 256, 1024, 8 * 1024};
185static double rsa_results[RSA_NUM][2]; 187static double rsa_results[RSA_NUM][2];
@@ -344,6 +346,9 @@ speed_main(int argc, char **argv)
344#define D_IGE_192_AES 27 346#define D_IGE_192_AES 27
345#define D_IGE_256_AES 28 347#define D_IGE_256_AES 28
346#define D_GHASH 29 348#define D_GHASH 29
349#define D_AES_128_GCM 30
350#define D_AES_256_GCM 31
351#define D_CHACHA20_POLY1305 32
347 double d = 0.0; 352 double d = 0.0;
348 long c[ALGOR_NUM][SIZE_NUM]; 353 long c[ALGOR_NUM][SIZE_NUM];
349#define R_DSA_512 0 354#define R_DSA_512 0
@@ -700,9 +705,13 @@ speed_main(int argc, char **argv)
700 doit[D_CBC_128_AES] = 1; 705 doit[D_CBC_128_AES] = 1;
701 doit[D_CBC_192_AES] = 1; 706 doit[D_CBC_192_AES] = 1;
702 doit[D_CBC_256_AES] = 1; 707 doit[D_CBC_256_AES] = 1;
703 } else if (strcmp(*argv, "ghash") == 0) { 708 } else if (strcmp(*argv, "ghash") == 0)
704 doit[D_GHASH] = 1; 709 doit[D_GHASH] = 1;
705 } else 710 else if (strcmp(*argv,"aes-128-gcm") == 0)
711 doit[D_AES_128_GCM]=1;
712 else if (strcmp(*argv,"aes-256-gcm") == 0)
713 doit[D_AES_256_GCM]=1;
714 else
706#endif 715#endif
707#ifndef OPENSSL_NO_CAMELLIA 716#ifndef OPENSSL_NO_CAMELLIA
708 if (strcmp(*argv, "camellia") == 0) { 717 if (strcmp(*argv, "camellia") == 0) {
@@ -711,6 +720,11 @@ speed_main(int argc, char **argv)
711 doit[D_CBC_256_CML] = 1; 720 doit[D_CBC_256_CML] = 1;
712 } else 721 } else
713#endif 722#endif
723#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
724 if (strcmp(*argv,"chacha20-poly1305") == 0)
725 doit[D_CHACHA20_POLY1305]=1;
726 else
727#endif
714 if (strcmp(*argv, "rsa") == 0) { 728 if (strcmp(*argv, "rsa") == 0) {
715 rsa_doit[R_RSA_512] = 1; 729 rsa_doit[R_RSA_512] = 1;
716 rsa_doit[R_RSA_1024] = 1; 730 rsa_doit[R_RSA_1024] = 1;
@@ -836,18 +850,15 @@ speed_main(int argc, char **argv)
836 BIO_printf(bio_err, "rc2-cbc "); 850 BIO_printf(bio_err, "rc2-cbc ");
837#endif 851#endif
838#ifndef OPENSSL_NO_BF 852#ifndef OPENSSL_NO_BF
839 BIO_printf(bio_err, "bf-cbc"); 853 BIO_printf(bio_err, "bf-cbc ");
840#endif
841#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_SEED) || !defined(OPENSSL_NO_RC2) || \
842 !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_RC5)
843 BIO_printf(bio_err, "\n");
844#endif 854#endif
845#ifndef OPENSSL_NO_DES 855#ifndef OPENSSL_NO_DES
846 BIO_printf(bio_err, "des-cbc des-ede3 "); 856 BIO_printf(bio_err, "des-cbc des-ede3\n");
847#endif 857#endif
848#ifndef OPENSSL_NO_AES 858#ifndef OPENSSL_NO_AES
849 BIO_printf(bio_err, "aes-128-cbc aes-192-cbc aes-256-cbc "); 859 BIO_printf(bio_err, "aes-128-cbc aes-192-cbc aes-256-cbc ");
850 BIO_printf(bio_err, "aes-128-ige aes-192-ige aes-256-ige "); 860 BIO_printf(bio_err, "aes-128-ige aes-192-ige aes-256-ige\n");
861 BIO_printf(bio_err, "aes-128-gcm aes-256-gcm ");
851#endif 862#endif
852#ifndef OPENSSL_NO_CAMELLIA 863#ifndef OPENSSL_NO_CAMELLIA
853 BIO_printf(bio_err, "\n"); 864 BIO_printf(bio_err, "\n");
@@ -856,6 +867,9 @@ speed_main(int argc, char **argv)
856#ifndef OPENSSL_NO_RC4 867#ifndef OPENSSL_NO_RC4
857 BIO_printf(bio_err, "rc4"); 868 BIO_printf(bio_err, "rc4");
858#endif 869#endif
870#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
871 BIO_printf(bio_err," chacha20-poly1305");
872#endif
859 BIO_printf(bio_err, "\n"); 873 BIO_printf(bio_err, "\n");
860 874
861 BIO_printf(bio_err, "rsa512 rsa1024 rsa2048 rsa4096\n"); 875 BIO_printf(bio_err, "rsa512 rsa1024 rsa2048 rsa4096\n");
@@ -863,12 +877,10 @@ speed_main(int argc, char **argv)
863 BIO_printf(bio_err, "dsa512 dsa1024 dsa2048\n"); 877 BIO_printf(bio_err, "dsa512 dsa1024 dsa2048\n");
864 BIO_printf(bio_err, "ecdsap160 ecdsap192 ecdsap224 ecdsap256 ecdsap384 ecdsap521\n"); 878 BIO_printf(bio_err, "ecdsap160 ecdsap192 ecdsap224 ecdsap256 ecdsap384 ecdsap521\n");
865 BIO_printf(bio_err, "ecdsak163 ecdsak233 ecdsak283 ecdsak409 ecdsak571\n"); 879 BIO_printf(bio_err, "ecdsak163 ecdsak233 ecdsak283 ecdsak409 ecdsak571\n");
866 BIO_printf(bio_err, "ecdsab163 ecdsab233 ecdsab283 ecdsab409 ecdsab571\n"); 880 BIO_printf(bio_err, "ecdsab163 ecdsab233 ecdsab283 ecdsab409 ecdsab571 ecdsa\n");
867 BIO_printf(bio_err, "ecdsa\n");
868 BIO_printf(bio_err, "ecdhp160 ecdhp192 ecdhp224 ecdhp256 ecdhp384 ecdhp521\n"); 881 BIO_printf(bio_err, "ecdhp160 ecdhp192 ecdhp224 ecdhp256 ecdhp384 ecdhp521\n");
869 BIO_printf(bio_err, "ecdhk163 ecdhk233 ecdhk283 ecdhk409 ecdhk571\n"); 882 BIO_printf(bio_err, "ecdhk163 ecdhk233 ecdhk283 ecdhk409 ecdhk571\n");
870 BIO_printf(bio_err, "ecdhb163 ecdhb233 ecdhb283 ecdhb409 ecdhb571\n"); 883 BIO_printf(bio_err, "ecdhb163 ecdhb233 ecdhb283 ecdhb409 ecdhb571 ecdh\n");
871 BIO_printf(bio_err, "ecdh\n");
872 884
873#ifndef OPENSSL_NO_IDEA 885#ifndef OPENSSL_NO_IDEA
874 BIO_printf(bio_err, "idea "); 886 BIO_printf(bio_err, "idea ");
@@ -1220,6 +1232,73 @@ speed_main(int argc, char **argv)
1220 } 1232 }
1221 CRYPTO_gcm128_release(ctx); 1233 CRYPTO_gcm128_release(ctx);
1222 } 1234 }
1235 if (doit[D_AES_128_GCM]) {
1236 const EVP_AEAD *aead = EVP_aead_aes_128_gcm();
1237 static const unsigned char nonce[32] = {0};
1238 size_t buf_len, nonce_len;
1239 EVP_AEAD_CTX ctx;
1240
1241 EVP_AEAD_CTX_init(&ctx, aead, key32, EVP_AEAD_key_length(aead),
1242 EVP_AEAD_DEFAULT_TAG_LENGTH, NULL);
1243 nonce_len = EVP_AEAD_nonce_length(aead);
1244
1245 for (j = 0; j < SIZE_NUM; j++) {
1246 print_message(names[D_AES_128_GCM],c[D_AES_128_GCM][j],lengths[j]);
1247 Time_F(START);
1248 for (count = 0, run = 1; COND(c[D_AES_128_GCM][j]); count++)
1249 EVP_AEAD_CTX_seal(&ctx, buf, &buf_len, BUFSIZE, nonce,
1250 nonce_len, buf, lengths[j], NULL, 0);
1251 d=Time_F(STOP);
1252 print_result(D_AES_128_GCM,j,count,d);
1253 }
1254 EVP_AEAD_CTX_cleanup(&ctx);
1255 }
1256
1257 if (doit[D_AES_256_GCM]) {
1258 const EVP_AEAD *aead = EVP_aead_aes_256_gcm();
1259 static const unsigned char nonce[32] = {0};
1260 size_t buf_len, nonce_len;
1261 EVP_AEAD_CTX ctx;
1262
1263 EVP_AEAD_CTX_init(&ctx, aead, key32, EVP_AEAD_key_length(aead),
1264 EVP_AEAD_DEFAULT_TAG_LENGTH, NULL);
1265 nonce_len = EVP_AEAD_nonce_length(aead);
1266
1267 for (j = 0; j < SIZE_NUM; j++) {
1268 print_message(names[D_AES_256_GCM],c[D_AES_256_GCM][j],lengths[j]);
1269 Time_F(START);
1270 for (count = 0, run = 1; COND(c[D_AES_256_GCM][j]); count++)
1271 EVP_AEAD_CTX_seal(&ctx, buf, &buf_len, BUFSIZE, nonce,
1272 nonce_len, buf, lengths[j], NULL, 0);
1273 d=Time_F(STOP);
1274 print_result(D_AES_256_GCM, j, count, d);
1275 }
1276 EVP_AEAD_CTX_cleanup(&ctx);
1277 }
1278#endif
1279#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
1280 if (doit[D_CHACHA20_POLY1305]) {
1281 const EVP_AEAD *aead = EVP_aead_chacha20_poly1305();
1282 static const unsigned char nonce[32] = {0};
1283 size_t buf_len, nonce_len;
1284 EVP_AEAD_CTX ctx;
1285
1286 EVP_AEAD_CTX_init(&ctx, aead, key32, EVP_AEAD_key_length(aead),
1287 EVP_AEAD_DEFAULT_TAG_LENGTH, NULL);
1288 nonce_len = EVP_AEAD_nonce_length(aead);
1289
1290 for (j = 0; j < SIZE_NUM; j++) {
1291 print_message(names[D_CHACHA20_POLY1305],
1292 c[D_CHACHA20_POLY1305][j], lengths[j]);
1293 Time_F(START);
1294 for (count = 0, run = 1; COND(c[D_CHACHA20_POLY1305][j]); count++)
1295 EVP_AEAD_CTX_seal(&ctx, buf, &buf_len, BUFSIZE, nonce,
1296 nonce_len, buf, lengths[j], NULL, 0);
1297 d=Time_F(STOP);
1298 print_result(D_CHACHA20_POLY1305, j, count, d);
1299 }
1300 EVP_AEAD_CTX_cleanup(&ctx);
1301 }
1223#endif 1302#endif
1224#ifndef OPENSSL_NO_CAMELLIA 1303#ifndef OPENSSL_NO_CAMELLIA
1225 if (doit[D_CBC_128_CML]) { 1304 if (doit[D_CBC_128_CML]) {