CMS_SIGN_RECEIPT(3) | Library Functions Manual | CMS_SIGN_RECEIPT(3)

# NAME

`CMS_sign_receipt` — create a CMS signed receipt

# SYNOPSIS

library “libcrypto”
`#include <openssl/cms.h>`

CMS_ContentInfo *
`CMS_sign_receipt`(CMS_SignerInfo *si, X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, unsigned int flags);

# DESCRIPTION

`CMS_sign_receipt`() creates a new CMS SignedData structure containing a signed Receipt as its embedded content. si is the SignerInfo structure containing the signed receipt request. signcert is the certificate to sign with, pkey is the corresponding private key. certs is an optional additional set of certificates to include in the CMS structure (for example any intermediate CAs in the chain).

This functions behaves in a similar way to CMS_sign(3) except that the flags values `CMS_DETACHED`, `CMS_BINARY`, `CMS_NOATTR`, `CMS_TEXT`, and `CMS_STREAM` are not supported since they do not make sense in the context of signed receipts.

# RETURN VALUES

`CMS_sign_receipt`() returns either a valid CMS_ContentInfo structure or `NULL` if an error occurred. The error can be obtained from ERR_get_error(3).

# SEE ALSO

CMS_ContentInfo_new(3), CMS_get1_ReceiptRequest(3), CMS_sign(3), CMS_verify_receipt(3)

# STANDARDS

RFC 2634: Enhanced Security Services for S/MIME, section 2.8: Receipt Syntax

# HISTORY

`CMS_sign_receipt`() first appeared in OpenSSL 0.9.8h and has been available since OpenBSD 6.7.

June 8, 2025 | Debian