1*b077aed3SPierre Pronchery=pod 2*b077aed3SPierre Pronchery{- OpenSSL::safe::output_do_not_edit_headers(); -} 3*b077aed3SPierre Pronchery 4*b077aed3SPierre Pronchery=head1 NAME 5*b077aed3SPierre Pronchery 6*b077aed3SPierre Proncheryopenssl-speed - test library performance 7*b077aed3SPierre Pronchery 8*b077aed3SPierre Pronchery=head1 SYNOPSIS 9*b077aed3SPierre Pronchery 10*b077aed3SPierre ProncheryB<openssl speed> 11*b077aed3SPierre Pronchery[B<-help>] 12*b077aed3SPierre Pronchery[B<-elapsed>] 13*b077aed3SPierre Pronchery[B<-evp> I<algo>] 14*b077aed3SPierre Pronchery[B<-hmac> I<algo>] 15*b077aed3SPierre Pronchery[B<-cmac> I<algo>] 16*b077aed3SPierre Pronchery[B<-mb>] 17*b077aed3SPierre Pronchery[B<-aead>] 18*b077aed3SPierre Pronchery[B<-multi> I<num>] 19*b077aed3SPierre Pronchery[B<-async_jobs> I<num>] 20*b077aed3SPierre Pronchery[B<-misalign> I<num>] 21*b077aed3SPierre Pronchery[B<-decrypt>] 22*b077aed3SPierre Pronchery[B<-primes> I<num>] 23*b077aed3SPierre Pronchery[B<-seconds> I<num>] 24*b077aed3SPierre Pronchery[B<-bytes> I<num>] 25*b077aed3SPierre Pronchery[B<-mr>] 26*b077aed3SPierre Pronchery{- $OpenSSL::safe::opt_r_synopsis -} 27*b077aed3SPierre Pronchery{- $OpenSSL::safe::opt_engine_synopsis -}{- $OpenSSL::safe::opt_provider_synopsis -} 28*b077aed3SPierre Pronchery[I<algorithm> ...] 29*b077aed3SPierre Pronchery 30*b077aed3SPierre Pronchery=head1 DESCRIPTION 31*b077aed3SPierre Pronchery 32*b077aed3SPierre ProncheryThis command is used to test the performance of cryptographic algorithms. 33*b077aed3SPierre Pronchery 34*b077aed3SPierre Pronchery=head1 OPTIONS 35*b077aed3SPierre Pronchery 36*b077aed3SPierre Pronchery=over 4 37*b077aed3SPierre Pronchery 38*b077aed3SPierre Pronchery=item B<-help> 39*b077aed3SPierre Pronchery 40*b077aed3SPierre ProncheryPrint out a usage message. 41*b077aed3SPierre Pronchery 42*b077aed3SPierre Pronchery=item B<-elapsed> 43*b077aed3SPierre Pronchery 44*b077aed3SPierre ProncheryWhen calculating operations- or bytes-per-second, use wall-clock time 45*b077aed3SPierre Proncheryinstead of CPU user time as divisor. It can be useful when testing speed 46*b077aed3SPierre Proncheryof hardware engines. 47*b077aed3SPierre Pronchery 48*b077aed3SPierre Pronchery=item B<-evp> I<algo> 49*b077aed3SPierre Pronchery 50*b077aed3SPierre ProncheryUse the specified cipher or message digest algorithm via the EVP interface. 51*b077aed3SPierre ProncheryIf I<algo> is an AEAD cipher, then you can pass B<-aead> to benchmark a 52*b077aed3SPierre ProncheryTLS-like sequence. And if I<algo> is a multi-buffer capable cipher, e.g. 53*b077aed3SPierre Proncheryaes-128-cbc-hmac-sha1, then B<-mb> will time multi-buffer operation. 54*b077aed3SPierre Pronchery 55*b077aed3SPierre ProncheryTo see the algorithms supported with this option, use 56*b077aed3SPierre ProncheryC<openssl list -digest-algorithms> or C<openssl list -cipher-algorithms> 57*b077aed3SPierre Proncherycommand. 58*b077aed3SPierre Pronchery 59*b077aed3SPierre Pronchery=item B<-multi> I<num> 60*b077aed3SPierre Pronchery 61*b077aed3SPierre ProncheryRun multiple operations in parallel. 62*b077aed3SPierre Pronchery 63*b077aed3SPierre Pronchery=item B<-async_jobs> I<num> 64*b077aed3SPierre Pronchery 65*b077aed3SPierre ProncheryEnable async mode and start specified number of jobs. 66*b077aed3SPierre Pronchery 67*b077aed3SPierre Pronchery=item B<-misalign> I<num> 68*b077aed3SPierre Pronchery 69*b077aed3SPierre ProncheryMisalign the buffers by the specified number of bytes. 70*b077aed3SPierre Pronchery 71*b077aed3SPierre Pronchery=item B<-hmac> I<digest> 72*b077aed3SPierre Pronchery 73*b077aed3SPierre ProncheryTime the HMAC algorithm using the specified message digest. 74*b077aed3SPierre Pronchery 75*b077aed3SPierre Pronchery=item B<-cmac> I<cipher> 76*b077aed3SPierre Pronchery 77*b077aed3SPierre ProncheryTime the CMAC algorithm using the specified cipher e.g. 78*b077aed3SPierre ProncheryC<openssl speed -cmac aes128>. 79*b077aed3SPierre Pronchery 80*b077aed3SPierre Pronchery=item B<-decrypt> 81*b077aed3SPierre Pronchery 82*b077aed3SPierre ProncheryTime the decryption instead of encryption. Affects only the EVP testing. 83*b077aed3SPierre Pronchery 84*b077aed3SPierre Pronchery=item B<-mb> 85*b077aed3SPierre Pronchery 86*b077aed3SPierre ProncheryEnable multi-block mode on EVP-named cipher. 87*b077aed3SPierre Pronchery 88*b077aed3SPierre Pronchery=item B<-aead> 89*b077aed3SPierre Pronchery 90*b077aed3SPierre ProncheryBenchmark EVP-named AEAD cipher in TLS-like sequence. 91*b077aed3SPierre Pronchery 92*b077aed3SPierre Pronchery=item B<-primes> I<num> 93*b077aed3SPierre Pronchery 94*b077aed3SPierre ProncheryGenerate a I<num>-prime RSA key and use it to run the benchmarks. This option 95*b077aed3SPierre Proncheryis only effective if RSA algorithm is specified to test. 96*b077aed3SPierre Pronchery 97*b077aed3SPierre Pronchery=item B<-seconds> I<num> 98*b077aed3SPierre Pronchery 99*b077aed3SPierre ProncheryRun benchmarks for I<num> seconds. 100*b077aed3SPierre Pronchery 101*b077aed3SPierre Pronchery=item B<-bytes> I<num> 102*b077aed3SPierre Pronchery 103*b077aed3SPierre ProncheryRun benchmarks on I<num>-byte buffers. Affects ciphers, digests and the CSPRNG. 104*b077aed3SPierre ProncheryThe limit on the size of the buffer is INT_MAX - 64 bytes, which for a 32-bit 105*b077aed3SPierre Proncheryint would be 2147483583 bytes. 106*b077aed3SPierre Pronchery 107*b077aed3SPierre Pronchery=item B<-mr> 108*b077aed3SPierre Pronchery 109*b077aed3SPierre ProncheryProduce the summary in a mechanical, machine-readable, format. 110*b077aed3SPierre Pronchery 111*b077aed3SPierre Pronchery{- $OpenSSL::safe::opt_r_item -} 112*b077aed3SPierre Pronchery 113*b077aed3SPierre Pronchery{- $OpenSSL::safe::opt_engine_item -} 114*b077aed3SPierre Pronchery 115*b077aed3SPierre Pronchery{- $OpenSSL::safe::opt_provider_item -} 116*b077aed3SPierre Pronchery 117*b077aed3SPierre Pronchery=item I<algorithm> ... 118*b077aed3SPierre Pronchery 119*b077aed3SPierre ProncheryIf any I<algorithm> is given, then those algorithms are tested, otherwise a 120*b077aed3SPierre Proncherypre-compiled grand selection is tested. 121*b077aed3SPierre Pronchery 122*b077aed3SPierre Pronchery=back 123*b077aed3SPierre Pronchery 124*b077aed3SPierre Pronchery=head1 BUGS 125*b077aed3SPierre Pronchery 126*b077aed3SPierre ProncheryThe I<algorithm> can be selected only from a pre-compiled subset of things 127*b077aed3SPierre Proncherythat the C<openssl speed> command knows about. To test any additional digest 128*b077aed3SPierre Proncheryor cipher algorithm supported by OpenSSL use the C<-evp> option. 129*b077aed3SPierre Pronchery 130*b077aed3SPierre ProncheryThere is no way to test the speed of any additional public key algorithms 131*b077aed3SPierre Proncherysupported by third party providers with the C<openssl speed> command. 132*b077aed3SPierre Pronchery 133*b077aed3SPierre Pronchery=head1 HISTORY 134*b077aed3SPierre Pronchery 135*b077aed3SPierre ProncheryThe B<-engine> option was deprecated in OpenSSL 3.0. 136*b077aed3SPierre Pronchery 137*b077aed3SPierre Pronchery=head1 COPYRIGHT 138*b077aed3SPierre Pronchery 139*b077aed3SPierre ProncheryCopyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved. 140*b077aed3SPierre Pronchery 141*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License"). You may not use 142*b077aed3SPierre Proncherythis file except in compliance with the License. You can obtain a copy 143*b077aed3SPierre Proncheryin the file LICENSE in the source distribution or at 144*b077aed3SPierre ProncheryL<https://www.openssl.org/source/license.html>. 145*b077aed3SPierre Pronchery 146*b077aed3SPierre Pronchery=cut 147