CMS_GET1_RECEIPTREQUEST(3) | Library Functions Manual | CMS_GET1_RECEIPTREQUEST(3)

# NAME

`CMS_ReceiptRequest_create0`, `CMS_add1_ReceiptRequest`, `CMS_get1_ReceiptRequest`, `CMS_ReceiptRequest_get0_values` — CMS signed receipt request functions

# SYNOPSIS

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

CMS_ReceiptRequest *
`CMS_ReceiptRequest_create0`(unsigned char *id, int idlen, int allorfirst, STACK_OF(GENERAL_NAMES) *receiptList, STACK_OF(GENERAL_NAMES) *receiptsTo);

int
`CMS_add1_ReceiptRequest`(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);

int
`CMS_get1_ReceiptRequest`(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);

void
`CMS_ReceiptRequest_get0_values`(CMS_ReceiptRequest *rr, ASN1_STRING **pcid, int *pallorfirst, STACK_OF(GENERAL_NAMES) **plist, STACK_OF(GENERAL_NAMES) **prto);

# DESCRIPTION

`CMS_ReceiptRequest_create0`() creates a new ReceiptRequest structure. The signedContentIdentifier field is set using id and idlen, or it is set to 32 bytes of pseudo random data if id is `NULL`. If receiptList is `NULL`, the allOrFirstTier option in the receiptsFrom field is set to the value of the allorfirst argument. If receiptList is not `NULL`, the receiptList option in the receiptsFrom field is used. The receiptsTo argument specifies the value of the receiptsTo field.

`CMS_add1_ReceiptRequest`() adds a BER-encoded copy of rr to si.

`CMS_get1_ReceiptRequest`() looks for a signed receipt request in si. If any is found, it is decoded and written to prr.

`CMS_ReceiptRequest_get0_values`() retrieves the values of a receipt request. The signedContentIdentifier is copied to pcid. If the allOrFirstTier option is used in the receiptsFrom field, its value is copied to pallorfirst; otherwise the receiptList field is copied to plist. The receiptsTo field is copied to prto.

The contents of a signed receipt should only be considered meaningful if the corresponding CMS_ContentInfo structure can be successfully verified using CMS_verify(3).

# RETURN VALUES

`CMS_ReceiptRequest_create0`() returns the new signed receipt request structure or `NULL` if an error occurred.

`CMS_add1_ReceiptRequest`() returns 1 for success or 0 if an error occurred.

`CMS_get1_ReceiptRequest`() returns 1 is a signed receipt request is found and decoded. It returns 0 if a signed receipt request is not present or -1 if it is present but malformed.

# SEE ALSO

CMS_ContentInfo_new(3), CMS_sign(3), CMS_sign_receipt(3), CMS_verify(3), CMS_verify_receipt(3), ERR_get_error(3)

# STANDARDS

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

# HISTORY

`CMS_ReceiptRequest_create0`(), `CMS_add1_ReceiptRequest`(), `CMS_get1_ReceiptRequest`(), and `CMS_ReceiptRequest_get0_values`() first appeared in OpenSSL 0.9.8h and have been available since OpenBSD 6.7.

June 8, 2025 | Debian