OPENSSL-SPEED(1ossl)

πŸ’– openssl-speed(1ossl) πŸ’–

okay so bestie, welcome to openssl-speed, the glow-up of a manual page from the OpenSSL fam (the 1ossl manual section, iykyk) β€” and honestly? it's giving "let's benchmark literally everything" energy. πŸ’…


✨ NAME ✨

openssl-speed β€” test library performance πŸƒβ€β™€οΈπŸ’¨

πŸ¦‹ SYNOPSIS πŸ¦‹

openssl speed [-help] [-config filename] [-elapsed] [-evp algo] [-hmac
algo] [-cmac algo] [-mb] [-aead] [-kem-algorithms]
[-signature-algorithms] [-multi num] [-async_jobs num] [-misalign num]
[-decrypt] [-primes num] [-seconds num] [-bytes num] [-mr] [-mlock]
[-testmode] [-rand files] [-writerand file] [-engine id] [-provider
name] [-provider-path path] [-provparam [name:]key=value] [-propquery
propq] [algorithm ...]

🌸 DESCRIPTION 🌸

so this command is the vibe check for your crypto β€” it tests the performance of cryptographic algorithms. literally just "how fast does this go" but for ciphers and digests. no cap, it's the main character of benchmarking. πŸ”₯


πŸŽ€ OPTIONS πŸŽ€

okay bestie, buckle up, there are a LOT of these and each one is iconic in its own way:

  • -help β€” prints out a usage message. the "what do I even do here" button. 🫢
  • -config filename β€” specifies the configuration file to use. it's optional; for a description of the default value, see "COMMAND SUMMARY" in openssl(1). ✨
  • -elapsed β€” when calculating operations- or bytes-per-second, use wall-clock time instead of CPU user time as divisor. lowkey useful when you're testing the speed of hardware engines. ⏰
  • -evp algo β€” use the specified cipher or message digest algorithm via the EVP interface. if algo is an AEAD cipher, then you can pass -aead to benchmark a TLS-like sequence. and if algo is a multi-buffer capable cipher, e.g. aes-128-cbc-hmac-sha1, then -mb will time multi-buffer operation. πŸ’«

to see the algorithms supported with this option, use the openssl list -digest-algorithms or openssl list -cipher-algorithms command. iykyk.

  • -multi num β€” run multiple operations in parallel. multitasking slay. πŸƒβ€β™€οΈπŸƒβ€β™€οΈ
  • -async_jobs num β€” enable async mode and start specified number of jobs. πŸ”„
  • -misalign num β€” misalign the buffers by the specified number of bytes. chaos but on purpose. πŸ™ˆ
  • -hmac digest β€” time the HMAC algorithm using the specified message digest. πŸ“
  • -cmac cipher β€” time the CMAC algorithm using the specified cipher, e.g. openssl speed -cmac aes128. πŸ’œ
  • -decrypt β€” time the decryption instead of encryption. affects only the EVP testing. πŸ”“
  • -mb β€” enable multi-block mode on EVP-named cipher. ✨
  • -aead β€” benchmark EVP-named AEAD cipher in TLS-like sequence. πŸ›‘οΈ
  • -kem-algorithms β€” benchmark KEM algorithms: key generation, encapsulation, decapsulation. the whole trilogy, honestly. πŸ‘‘
  • -signature-algorithms β€” benchmark signature algorithms: key generation, signature, verification. πŸ’«
  • -primes num β€” generate a num-prime RSA key and use it to run the benchmarks. this option is only effective if the RSA algorithm is specified to test. πŸ”’
  • -seconds num β€” run benchmarks for num seconds. ⏱️
  • -bytes num β€” run benchmarks on 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. so like, don't get too ambitious. 😭
  • -mr β€” produce the summary in a mechanical, machine-readable, format. for when your script is the one reading it, not you. πŸ€–
  • -mlock β€” lock memory into RAM for more deterministic measurements. no swapping, no drama. πŸ”’
  • -testmode β€” runs the speed command in testmode. runs only 1 iteration of each algorithm test regardless of any -seconds value. in the event that any operation fails then the speed command will return with a failure result. short and sweet. ⚑
  • -rand files, -writerand file β€” see "Random State Options" in openssl(1) for details. 🎲
  • -engine id β€” see "Engine Options" in openssl(1). this option is deprecated. πŸ’€ like, it's still here but pls don't.
  • -provider name
  • -provider-path path
  • -provparam [name:]key=value
  • -propquery propq β€” see "Provider Options" in openssl(1), provider(7), and property(7). 🌈
  • algorithm ... β€” if any algorithm is given, then those algorithms are tested, otherwise a pre-compiled grand selection is tested. the "surprise me" default, basically. 🎁

πŸ’€ BUGS πŸ’€

ngl, there are some limits and you should know about them:

  • the algorithm can be selected only from a pre-compiled subset of things that the openssl speed command knows about. to test any additional digest or cipher algorithm supported by OpenSSL use the -evp option. πŸ™ˆ
  • there is no way to test the speed of any additional public key algorithms supported by third party providers with the openssl speed command. yeah. it's giving "closed guest list". 😭

⭐ HISTORY ⭐

the lore, bestie:

  • the -engine option was deprecated in OpenSSL 3.0.
  • DSA512 was removed in OpenSSL 3.2.
  • the -testmode option was added in OpenSSL 3.4. πŸŽ€

Copyright 2000-2024 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 <https://www.openssl.org/source/license.html>.


and that's the whole page, bestie β€” mwah πŸ’‹ this was 3.5.9, dated 2026-09-29, OPENSSL-SPEED(1ossl), and honestly it ate. periodt. 🌈✨🫢

πŸ“¦ where this page comes from