EVP_KEM-RSA(7ossl)

✨ EVP_KEM-RSA πŸ’…

okay bestie, welcome to the EVP_KEM-RSA(7ossl) page πŸŽ€ yes that 7ossl is the manual name, it lives in section 7, we move.

🌸 NAME 🌸

EVP_KEM-RSA β€” the EVP_KEM RSA keytype and algorithm support, aka the whole RSA-KEM situation. iconic, honestly.


πŸ’– DESCRIPTION πŸ’–

So the RSA keytype and all its lil parameters? They're described over in EVP_PKEY-RSA(7). Go read that, it's the prequel. πŸ“š

And if you want the full tea on how the encapsulate/decapsulate dance actually works, peep EVP_PKEY_encapsulate(3) and EVP_PKEY_decapsulate(3) β€” they've got you. 🫢

πŸ”‘ RSA KEM parameters πŸ”‘

  • "operation" (OSSL_KEM_PARAM_OPERATION) <UTF8 string> β€” the operating mode, basically. Right now OpenSSL's RSA Key Encapsulation Mechanism only supports this one default operation:
    • "RSASVE" β€” the encapsulate function literally just generates a secret out of random bytes and then encrypts that secret using the RSA public key (with no padding, ngl). Then the decapsulate function recovers the secret using the RSA private key. cute, symmetrical, slay. ✨

You set this with EVP_PKEY_CTX_set_kem_op().

  • "fips-indicator" (OSSL_KEM_PARAM_FIPS_APPROVED_INDICATOR) <integer> β€” FIPS approval vibes.
  • "key-check" (OSSL_KEM_PARAM_FIPS_KEY_CHECK) <integer> β€” key checking vibes.

Both of these babies are described in provider-kem(7), so go look there for the details. 🧚


πŸ‘‘ CONFORMING TO πŸ‘‘

It's giving standards-compliant, fr fr β€” SP800-56Br2:

  • Section 7.2.1.2 β€” RSASVE Generate Operation (RSASVE.GENERATE).
  • Section 7.2.1.3 β€” RSASVE Recovery Operation (RSASVE.RECOVER).

πŸ¦‹ SEE ALSO πŸ¦‹

EVP_PKEY_CTX_set_kem_op(3), EVP_PKEY_encapsulate(3), EVP_PKEY_decapsulate(3) EVP_KEYMGMT(3), EVP_PKEY(3), provider-keymgmt(7)


🌈 HISTORY 🌈

This whole functionality dropped in OpenSSL 3.0. main character debut. πŸ’…

And plot twist: the "operation" (operating mode) parameter used to be required prior to OpenSSL 3.5 😭. But as of OpenSSL 3.5, "RSASVE" is the default operating mode, so you don't need to specify an explicit value at all. glow-up achieved. ✨


Copyright 2020-2025 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>.


okay that's the whole page bestie 🫢 this was OpenSSL 3.5.9, dated 2026-09-29, from the EVP_KEM-RSA(7ossl) manual β€” go forth and encapsulate responsibly πŸ’–πŸ”₯

πŸ“¦ where this page comes from