Scroll to navigation

CMS_GET0_TYPE(3) Library Functions Manual CMS_GET0_TYPE(3)

NAME

CMS_get0_type, CMS_get_version, CMS_set1_eContentType, CMS_get0_eContentType, CMS_get0_contentget and set CMS content types and content

SYNOPSIS

#include <openssl/cms.h>

const ASN1_OBJECT *
CMS_get0_type(const CMS_ContentInfo *cms);

int
CMS_get_version(const CMS_ContentInfo *cms, long *version);

int
CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);

const ASN1_OBJECT *
CMS_get0_eContentType(CMS_ContentInfo *cms);

ASN1_OCTET_STRING **
CMS_get0_content(CMS_ContentInfo *cms);

DESCRIPTION

() returns the content type of the ContentInfo structure cms. The ASN1_OBJECT value returned can be converted to an integer NID value using OBJ_obj2nid(3). The following content types are identified by the following NIDs:

SignedData
EnvelopedData
DigestedData
EncryptedData
AuthenticatedData
CompressedData
arbitrary data

The SignedData, DigestedData, AuthenticatedData, and CompressedData types contain a field encapContentInfo to allow embedding content, and EnvelopedData and EncryptedData contain a field encryptedContentInfo for that purpose. The type of the embedded content to be stored in that field can be set with the function (), to be called on cms structures returned from functions such as CMS_sign(3) or CMS_encrypt(3) with the CMS_PARTIAL flag set and the structure is finalised; otherwise the results are undefined. CMS_set1_eContentType() copies the supplied oid, so it should be freed up after use.

() sets *version to the syntax version number of the ContentInfo structure cms. The version is a number between 0 and 5 and is defined for all the above content types except for arbitrary data. For arbitrary data and unsupported content types CMS_get_version() fails and the content of *version is unspecified.

() returns the type of the embedded content.

() returns a pointer to the storage location where the pointer to the embedded content is stored. That means that for example after

ASN1_OCTET_STRING **pconf = CMS_get0_content(cms);

*pconf could be NULL if there is no embedded content. Applications can access, modify or create the embedded content in a CMS_ContentInfo structure using this function. Applications usually will not need to modify the embedded content as it is normally set by higher level functions.

RETURN VALUES

CMS_get0_type() and CMS_get0_eContentType() return internal pointers to OBJECT IDENTIFIER structures.

CMS_get_version() returns 1 on success and 0 on failure.

CMS_get0_content() returns an internal pointer to the storage location where the pointer to the embedded content is stored.

CMS_set1_eContentType() returns 1 for success or 0 if an error occurred. The error can be obtained from ERR_get_error(3).

SEE ALSO

CMS_ContentInfo_new(3), d2i_CMS_ContentInfo(3), SMIME_read_CMS(3)

STANDARDS

RFC 5652: Cryptographic Message Syntax

RFC 3274: Compressed Data Content Type for Cryptographic Message Syntax (CMS)

HISTORY

These functions first appeared in OpenSSL 0.9.8h and have been available since OpenBSD 6.7.

CMS_get_version() first appeared in OpenBSD 7.4.

July 27, 2023 Linux 6.4.0-150600.23.25-default