diff options
-rw-r--r-- | src/usr.bin/openssl/openssl.1 | 12 | ||||
-rw-r--r-- | src/usr.bin/openssl/speed.c | 32 |
2 files changed, 37 insertions, 7 deletions
diff --git a/src/usr.bin/openssl/openssl.1 b/src/usr.bin/openssl/openssl.1 index 4c9d15b9d1..f01f71bc0c 100644 --- a/src/usr.bin/openssl/openssl.1 +++ b/src/usr.bin/openssl/openssl.1 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: openssl.1,v 1.144 2023/05/05 18:01:27 tb Exp $ | 1 | .\" $OpenBSD: openssl.1,v 1.145 2023/05/20 12:03:02 tb Exp $ |
2 | .\" ==================================================================== | 2 | .\" ==================================================================== |
3 | .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. | 3 | .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. |
4 | .\" | 4 | .\" |
@@ -110,7 +110,7 @@ | |||
110 | .\" copied and put under another distribution licence | 110 | .\" copied and put under another distribution licence |
111 | .\" [including the GNU Public Licence.] | 111 | .\" [including the GNU Public Licence.] |
112 | .\" | 112 | .\" |
113 | .Dd $Mdocdate: May 5 2023 $ | 113 | .Dd $Mdocdate: May 20 2023 $ |
114 | .Dt OPENSSL 1 | 114 | .Dt OPENSSL 1 |
115 | .Os | 115 | .Os |
116 | .Sh NAME | 116 | .Sh NAME |
@@ -5392,6 +5392,7 @@ An error occurred writing certificates. | |||
5392 | .Op Fl evp Ar algorithm | 5392 | .Op Fl evp Ar algorithm |
5393 | .Op Fl mr | 5393 | .Op Fl mr |
5394 | .Op Fl multi Ar number | 5394 | .Op Fl multi Ar number |
5395 | .Op Fl unaligned Ar number | ||
5395 | .Ek | 5396 | .Ek |
5396 | .El | 5397 | .El |
5397 | .Pp | 5398 | .Pp |
@@ -5418,6 +5419,13 @@ Produce machine readable output. | |||
5418 | Run | 5419 | Run |
5419 | .Ar number | 5420 | .Ar number |
5420 | benchmarks in parallel. | 5421 | benchmarks in parallel. |
5422 | .It Fl unaligned Ar number | ||
5423 | Use allocated buffers with an offset of | ||
5424 | .Ar number | ||
5425 | bytes from the alignment provided by | ||
5426 | .Xr malloc 3 . | ||
5427 | .Ar number | ||
5428 | should be between 0 and 16. | ||
5421 | .El | 5429 | .El |
5422 | .Tg spkac | 5430 | .Tg spkac |
5423 | .Sh SPKAC | 5431 | .Sh SPKAC |
diff --git a/src/usr.bin/openssl/speed.c b/src/usr.bin/openssl/speed.c index 3b78c551eb..a1a69c267f 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.32 2023/05/20 11:44:15 tb Exp $ */ | 1 | /* $OpenBSD: speed.c,v 1.33 2023/05/20 12:03:02 tb 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 | * |
@@ -79,6 +79,8 @@ | |||
79 | #define ECDSA_SECONDS 10 | 79 | #define ECDSA_SECONDS 10 |
80 | #define ECDH_SECONDS 10 | 80 | #define ECDH_SECONDS 10 |
81 | 81 | ||
82 | #define MAX_UNALIGN 16 | ||
83 | |||
82 | #include <math.h> | 84 | #include <math.h> |
83 | #include <signal.h> | 85 | #include <signal.h> |
84 | #include <stdio.h> | 86 | #include <stdio.h> |
@@ -227,7 +229,9 @@ KDF1_SHA1(const void *in, size_t inlen, void *out, size_t * outlen) | |||
227 | int | 229 | int |
228 | speed_main(int argc, char **argv) | 230 | speed_main(int argc, char **argv) |
229 | { | 231 | { |
232 | unsigned char *real_buf = NULL, *real_buf2 = NULL; | ||
230 | unsigned char *buf = NULL, *buf2 = NULL; | 233 | unsigned char *buf = NULL, *buf2 = NULL; |
234 | size_t unaligned = 0; | ||
231 | int mret = 1; | 235 | int mret = 1; |
232 | long count = 0, save_count = 0; | 236 | long count = 0, save_count = 0; |
233 | int i, j, k; | 237 | int i, j, k; |
@@ -450,11 +454,11 @@ speed_main(int argc, char **argv) | |||
450 | for (i = 0; i < RSA_NUM; i++) | 454 | for (i = 0; i < RSA_NUM; i++) |
451 | rsa_key[i] = NULL; | 455 | rsa_key[i] = NULL; |
452 | 456 | ||
453 | if ((buf = malloc(BUFSIZE)) == NULL) { | 457 | if ((buf = real_buf = malloc(BUFSIZE + MAX_UNALIGN)) == NULL) { |
454 | BIO_printf(bio_err, "out of memory\n"); | 458 | BIO_printf(bio_err, "out of memory\n"); |
455 | goto end; | 459 | goto end; |
456 | } | 460 | } |
457 | if ((buf2 = malloc(BUFSIZE)) == NULL) { | 461 | if ((buf2 = real_buf2 = malloc(BUFSIZE + MAX_UNALIGN)) == NULL) { |
458 | BIO_printf(bio_err, "out of memory\n"); | 462 | BIO_printf(bio_err, "out of memory\n"); |
459 | goto end; | 463 | goto end; |
460 | } | 464 | } |
@@ -516,6 +520,23 @@ speed_main(int argc, char **argv) | |||
516 | } | 520 | } |
517 | j--; /* Otherwise, -multi gets confused with an | 521 | j--; /* Otherwise, -multi gets confused with an |
518 | * algorithm. */ | 522 | * algorithm. */ |
523 | } else if (argc > 0 && strcmp(*argv, "-unaligned") == 0) { | ||
524 | argc--; | ||
525 | argv++; | ||
526 | if (argc == 0) { | ||
527 | BIO_printf(bio_err, "no alignment offset given\n"); | ||
528 | goto end; | ||
529 | } | ||
530 | unaligned = strtonum(argv[0], 0, MAX_UNALIGN, &errstr); | ||
531 | if (errstr) { | ||
532 | BIO_printf(bio_err, "bad alignment offset: %s", | ||
533 | errstr); | ||
534 | goto end; | ||
535 | } | ||
536 | buf = real_buf + unaligned; | ||
537 | buf2 = real_buf2 + unaligned; | ||
538 | j--; /* Otherwise, -unaligned gets confused with an | ||
539 | * algorithm. */ | ||
519 | } else if (argc > 0 && strcmp(*argv, "-mr") == 0) { | 540 | } else if (argc > 0 && strcmp(*argv, "-mr") == 0) { |
520 | mr = 1; | 541 | mr = 1; |
521 | j--; /* Otherwise, -mr gets confused with an | 542 | j--; /* Otherwise, -mr gets confused with an |
@@ -835,6 +856,7 @@ speed_main(int argc, char **argv) | |||
835 | BIO_printf(bio_err, "-decrypt time decryption instead of encryption (only EVP).\n"); | 856 | BIO_printf(bio_err, "-decrypt time decryption instead of encryption (only EVP).\n"); |
836 | BIO_printf(bio_err, "-mr produce machine readable output.\n"); | 857 | BIO_printf(bio_err, "-mr produce machine readable output.\n"); |
837 | BIO_printf(bio_err, "-multi n run n benchmarks in parallel.\n"); | 858 | BIO_printf(bio_err, "-multi n run n benchmarks in parallel.\n"); |
859 | BIO_printf(bio_err, "-unaligned n use buffers with offset n from proper alignment.\n"); | ||
838 | goto end; | 860 | goto end; |
839 | } | 861 | } |
840 | argc--; | 862 | argc--; |
@@ -1848,8 +1870,8 @@ show_res: | |||
1848 | 1870 | ||
1849 | end: | 1871 | end: |
1850 | ERR_print_errors(bio_err); | 1872 | ERR_print_errors(bio_err); |
1851 | free(buf); | 1873 | free(real_buf); |
1852 | free(buf2); | 1874 | free(real_buf2); |
1853 | for (i = 0; i < RSA_NUM; i++) | 1875 | for (i = 0; i < RSA_NUM; i++) |
1854 | if (rsa_key[i] != NULL) | 1876 | if (rsa_key[i] != NULL) |
1855 | RSA_free(rsa_key[i]); | 1877 | RSA_free(rsa_key[i]); |