=pod
{- OpenSSL::safe::output_do_not_edit_headers(); -}

=head1 NAME

openssl-speed - test library performance

=head1 SYNOPSIS

B<openssl speed>
[B<-help>]
[B<-elapsed>]
[B<-evp> I<algo>]
[B<-hmac> I<algo>]
[B<-cmac> I<algo>]
[B<-mb>]
[B<-aead>]
[B<-multi> I<num>]
[B<-async_jobs> I<num>]
[B<-misalign> I<num>]
[B<-decrypt>]
[B<-primes> I<num>]
[B<-seconds> I<num>]
[B<-bytes> I<num>]
[B<-mr>]
{- $OpenSSL::safe::opt_r_synopsis -}
{- $OpenSSL::safe::opt_engine_synopsis -}{- $OpenSSL::safe::opt_provider_synopsis -}
[I<algorithm> ...]

=head1 DESCRIPTION

This command is used to test the performance of cryptographic algorithms.

=head1 OPTIONS

=over 4

=item B<-help>

Print out a usage message.

=item B<-elapsed>

When calculating operations- or bytes-per-second, use wall-clock time
instead of CPU user time as divisor. It can be useful when testing speed
of hardware engines.

=item B<-evp> I<algo>

Use the specified cipher or message digest algorithm via the EVP interface.
If I<algo> is an AEAD cipher, then you can pass B<-aead> to benchmark a
TLS-like sequence. And if I<algo> is a multi-buffer capable cipher, e.g.
aes-128-cbc-hmac-sha1, then B<-mb> will time multi-buffer operation.

To see the algorithms supported with this option, use
C<openssl list -digest-algorithms> or C<openssl list -cipher-algorithms>
command.

=item B<-multi> I<num>

Run multiple operations in parallel.

=item B<-async_jobs> I<num>

Enable async mode and start specified number of jobs.

=item B<-misalign> I<num>

Misalign the buffers by the specified number of bytes.

=item B<-hmac> I<digest>

Time the HMAC algorithm using the specified message digest.

=item B<-cmac> I<cipher>

Time the CMAC algorithm using the specified cipher e.g.
C<openssl speed -cmac aes128>.

=item B<-decrypt>

Time the decryption instead of encryption. Affects only the EVP testing.

=item B<-mb>

Enable multi-block mode on EVP-named cipher.

=item B<-aead>

Benchmark EVP-named AEAD cipher in TLS-like sequence.

=item B<-primes> I<num>

Generate a I<num>-prime RSA key and use it to run the benchmarks. This option
is only effective if RSA algorithm is specified to test.

=item B<-seconds> I<num>

Run benchmarks for I<num> seconds.

=item B<-bytes> I<num>

Run benchmarks on I<num>-byte buffers. Affects ciphers, digests and the CSPRNG.
The limit on the size of the buffer is INT_MAX - 64 bytes, which for a 32-bit
int would be 2147483583 bytes.

=item B<-mr>

Produce the summary in a mechanical, machine-readable, format.

{- $OpenSSL::safe::opt_r_item -}

{- $OpenSSL::safe::opt_engine_item -}

{- $OpenSSL::safe::opt_provider_item -}

=item I<algorithm> ...

If any I<algorithm> is given, then those algorithms are tested, otherwise a
pre-compiled grand selection is tested.

=back

=head1 BUGS

The I<algorithm> can be selected only from a pre-compiled subset of things
that the C<openssl speed> command knows about. To test any additional digest
or cipher algorithm supported by OpenSSL use the C<-evp> option.

There is no way to test the speed of any additional public key algorithms
supported by third party providers with the C<openssl speed> command.

=head1 HISTORY

The B<-engine> option was deprecated in OpenSSL 3.0.

=head1 COPYRIGHT

Copyright 2000-2022 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License").  You may not use
this file except in compliance with the License.  You can obtain a copy
in the file LICENSE in the source distribution or at
L<https://www.openssl.org/source/license.html>.

=cut
