PKCS7_SET_CONTENT(3) | Library Functions Manual | PKCS7_SET_CONTENT(3)

# NAME

`PKCS7_set_content`, `PKCS7_content_new` — set the nested contentInfo in a PKCS#7 structure

# SYNOPSIS

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

int
`PKCS7_set_content`(PKCS7 *outer, PKCS7 *inner);

int
`PKCS7_content_new`(PKCS7 *outer, int inner_type);

# DESCRIPTION

If the contentType of the outer PKCS7 structure is SignedData or DigestedData, `PKCS7_set_content`() sets the contentInfo field of the content field of outer to inner, without copying inner. If there was previous contentInfo, it is freed rather than overwritten. The rest of the internal state of outer and of its content remains unchanged.

`PKCS7_content_new`() is similar except that it first allocates and initializes a new, empty inner object of the given inner_type using PKCS7_new(3) and PKCS7_set_type(3). The inner_type can be any of the NIDs listed in the PKCS7_set_type(3) manual.

# RETURN VALUES

These functions return 1 on success or 0 on failure. They fail if the contentType of outer is unsupported. `PKCS7_content_new`() can also fail when memory is exhausted. In case of failure, outer remains unchanged.

# SEE ALSO

PKCS7_dataInit(3), PKCS7_new(3), PKCS7_set_type(3), PKCS7_sign(3)

# STANDARDS

RFC 2315: PKCS #7: Cryptographic Message Syntax Version 1.5

- Section 7. General syntax
- Section 9. Signed-data content type
- Section 12. Digested-data content type

# HISTORY

These functions first appeared in SSLeay 0.8.1 and have been available since OpenBSD 2.4.

# CAVEATS

Despite the function names, these functions do not set the content field of outer, but only the contentInfo field inside it. The rest of the content remains unchanged.

June 8, 2025 | Debian