OPENSSL-SPEED(1ossl)

πŸ“¦ version 3.5.0, in opensuse-leap 16.0

πŸ’… OPENSSL-SPEED(1ossl) β€” the OpenSSL one, bestie ✨

okay so this is openssl-speed from the OpenSSL fam, and it's literally the "how fast is my crypto tho" command. let's get into it πŸŽ€


✨ 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 πŸ¦‹

bestie. this command tests how fast your cryptographic algorithms go. that's it, that's the vibe. speed. performance. numbers. ✨

πŸ’– OPTIONS πŸ’–

  • -help β€” prints out a usage message so you're not just guessing. 🫢
  • -config filename β€” tells it which config file to use. it's optional! for what the default actually is, go peek at "COMMAND SUMMARY" in openssl(1). iykyk. πŸ“„
  • -elapsed β€” when it's doing the ops-per-second or bytes-per-second math, this makes it divide by wall-clock time instead of CPU user time. highkey useful when you're testing the speed of hardware engines. ⏱️
  • -evp algo β€” use the cipher or message digest algorithm you name, via the EVP interface. ok so two cute extras here: if algo is an AEAD cipher, you can pass -aead to benchmark a TLS-like sequence. and if algo is a multi-buffer capable cipher (like aes-128-cbc-hmac-sha1, for example), then -mb will time multi-buffer operation. πŸŽ€

to actually see which algorithms this option supports, run openssl list -digest-algorithms or openssl list -cipher-algorithms. πŸ‘‘

  • -multi num β€” runs multiple operations in parallel. multitasking icon behavior. 🧚
  • -async_jobs num β€” turns on async mode and starts the number of jobs you specify. πŸ“¨
  • -misalign num β€” misaligns the buffers by however many bytes you say. chaos, but make it scientific. πŸ™ˆ
  • -hmac digest β€” times the HMAC algorithm using the message digest you give it. πŸ”
  • -cmac cipher β€” times the CMAC algorithm using the cipher you give it, e.g. openssl speed -cmac aes128. πŸ’…
  • -decrypt β€” times decryption instead of encryption. only affects the EVP testing, so don't expect it to change everything. πŸ”„
  • -mb β€” enables multi-block mode on an EVP-named cipher. 🧱
  • -aead β€” benchmarks an EVP-named AEAD cipher in a TLS-like sequence. 🌈
  • -kem-algorithms β€” benchmarks KEM algorithms: key generation, encapsulation, decapsulation. the whole trilogy. ⭐
  • -signature-algorithms β€” benchmarks signature algorithms: key generation, signature, verification. also a trilogy. πŸ”₯
  • -primes num β€” generates a num-prime RSA key and uses it to run the benchmarks. heads up: this option is only effective if RSA algorithm is specified to test. 🎯
  • -seconds num β€” runs benchmarks for num seconds. patience is a vibe. ⏳
  • -bytes num β€” runs benchmarks on num-byte buffers. affects ciphers, digests and the CSPRNG. and the limit on the buffer size is INT_MAX - 64 bytes β€” which, for a 32-bit int, would be 2147483583 bytes. don't say i didn't warn you πŸ’€
  • -mr β€” produces the summary in a mechanical, machine-readable format. for the robots. πŸ€–
  • -mlock β€” locks memory into RAM for more deterministic measurements. commitment issues? none. πŸ”’
  • -testmode β€” runs the speed command in testmode. it runs only 1 iteration of each algorithm test, no matter what -seconds value you passed. and if any operation fails, then the speed command returns with a failure result. no cap. 🚨
  • -rand files, -writerand file β€” see "Random State Options" in openssl(1) for the deets. 🎲
  • -engine id β€” see "Engine Options" in openssl(1). also, fair warning: this option is deprecated. ⚠️
  • -provider name
  • -provider-path path
  • -provparam [name:]key=value
  • -propquery propq β€” see "Provider Options" in openssl(1), provider(7), and property(7). πŸ“š
  • algorithm ... β€” if you pass any algorithm(s), then those specific algorithms get tested. otherwise? a pre-compiled grand selection gets tested instead. a little surprise, as a treat 🎁

πŸ’€ BUGS πŸ’€

ok so the algorithm can only be selected from a pre-compiled subset of things that the openssl speed command already knows about. want to test any additional digest or cipher algorithm that OpenSSL supports? use the -evp option. that's the workaround, bestie.

and there's no way to test the speed of any additional public key algorithms that third party providers support with the openssl speed command. literally not possible. 😭

🌈 HISTORY 🌈

  • 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 page, bestie 🫢 this was version 3.5.0 of the OpenSSL era and it was last touched on 2026-09-25 β€” go forth and benchmark slay πŸ’…βœ¨πŸŒΈ

πŸ“¦ where this page comes from