CMS_GET0_SIGNERINFOS(3)
π CMS_GET0_SIGNERINFOS(3) β Library Functions Manual, bestie edition π
okay so this is the libcrypto manual page for the CMS SignedData signer functions, and we're gonna make it make sense. No cap.
πΈ NAME πΈ
CMS_get0_SignerInfos, CMS_SignerInfo_get_version, CMS_SignerInfo_get0_signer_id, CMS_SignerInfo_get0_signature, CMS_SignerInfo_cert_cmp, CMS_SignerInfo_set1_signer_cert β CMS SignedData signer functions. Periodt.
β¨ SYNOPSIS β¨
The library is βlibcryptoβ, and you include this:
#include <openssl/cms.h>
Then the function lineup is literally this:
STACK_OF(CMS_SignerInfo) *
CMS_get0_SignerInfos(CMS_ContentInfo *cms);
int
CMS_SignerInfo_get_version(CMS_SignerInfo *si, long *version);
int
CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
ASN1_OCTET_STRING **keyid, X509_NAME **issuer, ASN1_INTEGER **sno);
ASN1_OCTET_STRING *
CMS_SignerInfo_get0_signature(CMS_SignerInfo *si);
int
CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *certificate);
void
CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
π¦ DESCRIPTION π¦
CMS_get0_SignerInfos()β returns all theSignerInfostructures associated with theSignedDatastructurecms. It's giving "gimme the whole squad."CMS_SignerInfo_get_version()β sets*versionto the syntax version number of theSignerInfostructuresi.CMS_SignerInfo_get0_signer_id()β retrieves the certificateSignerIdentifierassociated with theSignerInfostructuresi. Either theSubjectKeyIdentifierwill be set inkeyid, or both issuer name and serial number will be set inissuerandsno.CMS_SignerInfo_get0_signature()β retrieves the signature field ofsi. The application program is allowed to modify the data pointed to. Yeah bestie, allowed.CMS_SignerInfo_cert_cmp()β compares thecertificateagainst the signer identifier ofsi.CMS_SignerInfo_set1_signer_cert()β sets the signer certificate ofsitosigner.
The main purpose of these functions is to enable an application to look up signer certificates using any appropriate technique when the simpler method of CMS_verify(3) is not appropriate.
In typical usage, an application retrieves all CMS_SignerInfo structures using CMS_get0_SignerInfos() and retrieves the identifier information using CMS. It will then obtain the signer certificate by some unspecified means (or return an error if it cannot be found) and set it using CMS_SignerInfo_set1_signer_cert(). Once all signer certificates have been set, CMS_verify(3) can be used. Slay.
π RETURN VALUES π
CMS_get0_SignerInfos()returns an internal pointer to all theCMS_SignerInfostructures, orNULLif there are no signers or ifcmsis not of the typeSignedData.CMS_SignerInfo_get_version()always succeeds and returns1.CMS_SignerInfo_get0_signer_id()returns1for success or0for failure.CMS_SignerInfo_get0_signature()returns an internal pointer to the signature.CMS_SignerInfo_cert_cmp()returns0for a match or non-zero otherwise.- Any error can be obtained from
ERR_get_error(3).
π SEE ALSO π
π STANDARDS π
RFC 5652: Cryptographic Message Syntax (CMS)- section 5.1: SignedData Type
- section 5.3: SignerInfo Type
π HISTORY π
CMS_get0_SignerInfos(), CMS_SignerInfo_get0_signer_id(), CMS_SignerInfo_cert_cmp(), and CMS_SignerInfo_set1_signer_cert() first appeared in OpenSSL 0.9.8h, and CMS_SignerInfo_get0_signature() in OpenSSL 1.0.2. These functions have been available since OpenBSD 6.7.
CMS_SignerInfo_get_version() first appeared in OpenBSD 7.4.
xoxo π this cutie is from Debian, dated June 8, 2025, and it lives under the header CMS_GET0_SIGNERINFOS(3) β iconic.
π¦ where this page comes from
- alpine 3.24: libressl-doc 4.3.1-r0 Β· custom
- arch rolling: libressl 4.4.0-1 Β· ISC AND custom:OpenSSL
- Copyright (c) 2008, 2013 The OpenSSL Project. All rights reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms