EVP_SIGNATURE-RSA(7SSL)
π EVP_SIGNATURE-RSA π
okay bestie, welcome to the 7SSL corner of the OpenSSL manpages β this one is literally all about the EVP_PKEY RSA signature implementation β¨. No cap, if you're out here signing or verifying stuff with RSA, you're in the right place π«Ά.
β¨ NAME β¨
EVP_SIGNATURE-RSA β the EVP_PKEY RSA signature implementation π
πΈ DESCRIPTION πΈ
It's got full support for computing RSA signatures, periodt. And if you also need the tea on RSA keys themselves (not just the signing part), go read EVP_PKEY-RSA(7) π.
π¦ Algorithm Names π¦
So in this list, the names are grouped together to show that they're the same algorithm wearing multiple name tags β like one queen, many outfits π. And yes, the OID is in there too in canonical decimal form, which basically means you can fetch them if all you've got is a bare OID that came out looking like this after a call to OBJ_obj2txt(3) π.
"RSA","rsaEncryption","1.2.840.113549.1.1.1"β the base signature algorithm. It's supported when you explicitly fetch it withEVP_PKEY_sign_init_ex2(3), and it also gets implicitly fetched (through RSA keys) withEVP_DigestSignInit(3)andEVP_DigestVerifyInit(3).
Not me being the one algorithm that absolutely cannot be used with EVP_PKEY_sign_message_init(3) π it just can't, okay?
"RSA-RIPEMD160","ripemd160WithRSA","1.3.36.3.3.1.2""RSA-SHA2-256","RSA-SHA256","sha256WithRSAEncryption","1.2.840.113549.1.1.11""RSA-SHA2-384","RSA-SHA384","sha384WithRSAEncryption","1.2.840.113549.1.1.12""RSA-SHA2-512","RSA-SHA512","sha512WithRSAEncryption","1.2.840.113549.1.1.13""RSA-SHA2-224","RSA-SHA224","sha224WithRSAEncryption","1.2.840.113549.1.1.14""RSA-SHA2-512/224","RSA-SHA512-224","sha512-224WithRSAEncryption","1.2.840.113549.1.1.15""RSA-SHA2-512/256","RSA-SHA512-256","sha512-256WithRSAEncryption","1.2.840.113549.1.1.16""RSA-SHA3-224","id-rsassa-pkcs1-v1_5-with-sha3-224","2.16.840.1.101.3.4.3.13""RSA-SHA3-256","id-rsassa-pkcs1-v1_5-with-sha3-256","2.16.840.1.101.3.4.3.14""RSA-SHA3-384","id-rsassa-pkcs1-v1_5-with-sha3-384","2.16.840.1.101.3.4.3.15""RSA-SHA3-512","id-rsassa-pkcs1-v1_5-with-sha3-512","2.16.840.1.101.3.4.3.16""RSA-SM3","sm3WithRSAEncryption","1.2.156.10197.1.504"β these are the PKCS#1 v1.5 RSA signature schemes rocking a whole variety of message digest algorithms π. Every single one of them is supported when explicitly fetched withEVP_PKEY_sign_init_ex2(3)andEVP_PKEY_sign_message_init(3)π. And they all come pre-set to use the pad mode"pkcs1"β and bestie, that cannot be changed π«.
π Signature Parameters π
These are the signature params you can set with EVP_PKEY_CTX_set_params(). You can call that after EVP_PKEY_sign_init() or EVP_PKEY_verify_init(), and before you call EVP_PKEY_sign() or EVP_PKEY_verify() β¨. They can also be set with EVP_PKEY_sign_init_ex() or EVP_PKEY_verify_init_ex() π
.
"digest"(OSSL_SIGNATURE_PARAM_DIGEST) <UTF8 string>"properties"(OSSL_SIGNATURE_PARAM_PROPERTIES) <UTF8 string>
These two? Not supported with the RSA signature schemes that already include a message digest algorithm in them β go peek at "Algorithm Names" up above, bestie π. These common parameters are described over in provider-signature(7) π¦.
"pad-mode"(OSSL_SIGNATURE_PARAM_PAD_MODE) <UTF8 string> β this one's about the type of padding to use. Its value can be any one of these:"none"(OSSL_PKEY_RSA_PAD_MODE_NONE)"pkcs1"(OSSL_PKEY_RSA_PAD_MODE_PKCSV15)"x931"(OSSL_PKEY_RSA_PAD_MODE_X931) β β οΈ this padding mode is no longer supported by the FIPS provider for signature generation, but it may still be used for signature verification for legacy use cases. (It's a FIPS 140-3 requirement, iykyk π)"pss"(OSSL_PKEY_RSA_PAD_MODE_PSS)
"mgf1-digest"(OSSL_SIGNATURE_PARAM_MGF1_DIGEST) <UTF8 string> β the digest algorithm name to use for themaskGenAlgorithmthat"pss"mode uses πΈ."mgf1-properties"(OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES) <UTF8 string> β sets the name of the property query associated with the"mgf1-digest"algorithm.NULLis used if this optional value isn't set β¨."saltlen"(OSSL_SIGNATURE_PARAM_PSS_SALTLEN) <integer> or <UTF8 string> β the"pss"mode minimum salt length. The value can be an integer, a string value representing a number, or one of these string values right here:"digest"(OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST) β use the same length as the digest size."max"(OSSL_PKEY_RSA_PSS_SALT_LEN_MAX) β use the maximum salt length."auto"(OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO) β auto detect the salt length."auto-digestmax"(OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX) β auto detect the salt length when verifying, and maximize the salt length up to the digest size when signing, so you comply with FIPS 186-4 section 5.5 π.
The OpenSSL FIPS provider also supports these parameters:
"key-check"(OSSL_SIGNATURE_PARAM_FIPS_KEY_CHECK) <integer>"digest-check"(OSSL_SIGNATURE_PARAM_FIPS_DIGEST_CHECK) <integer>"sign-x931-pad-check"(OSSL_SIGNATURE_PARAM_FIPS_SIGN_X931_PAD_CHECK) <integer>
These ones are described in provider-signature(7) β no need for me to re-spill the tea π.
"rsa-pss-saltlen-check"(OSSL_SIGNATURE_PARAM_FIPS_RSA_PSS_SALTLEN_CHECK) <integer> β the default value of1causes an error during signature generation or verification if the salt length (OSSL_SIGNATURE_PARAM_PSS_SALTLEN) is not between zero and the output block size of the digest function (inclusive) π€. Setting this to zero will ignore the error and set the approved"fips-indicator"to0.
π¨ Heads up: this option breaks FIPS compliance if it causes the approved"fips-indicator"to return0. Not a vibe.
The following signature parameters can be retrieved using EVP_PKEY_CTX_get_params() π:
"algorithm-id"(OSSL_SIGNATURE_PARAM_ALGORITHM_ID) <octet string>"fips-indicator"(OSSL_SIGNATURE_PARAM_FIPS_APPROVED_INDICATOR) <integer>"verify-message"(OSSL_SIGNATURE_PARAM_FIPS_VERIFY_MESSAGE) <integer>
These common parameters are described in provider-signature(7) β.
"digest"(OSSL_SIGNATURE_PARAM_DIGEST) <UTF8 string>"pad-mode"(OSSL_SIGNATURE_PARAM_PAD_MODE) <UTF8 string>"mgf1-digest"(OSSL_SIGNATURE_PARAM_MGF1_DIGEST) <UTF8 string>"saltlen"(OSSL_SIGNATURE_PARAM_PSS_SALTLEN) <integer> or <UTF8 string>
All of these are exactly as described above, bestie π.
π SEE ALSO π
π COPYRIGHT π
Copyright 2020-2026 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, slay π
this was version 4.0.3, dated 2026-09-29, and it lives under the EVP_SIGNATURE-RSA(7SSL) name β mwah, go sign something iconic bestie ππ¦π
π¦ where this page comes from
- ubuntu stonking: openssl 4.0.3-1ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms