CMS_GET0_TYPE(3ossl)

πŸ“¦
version 15.1 Β· 2 versions
, in freebsd 15.1

✨ NAME ✨

okay bestie, this is the OpenSSL manual page CMS_GET0_TYPE(3ossl) β€” and the main characters are:

  • CMS_get0_type, CMS_set1_eContentType, CMS_get0_eContentType, CMS_get0_content β€” get and set CMS content types and content. periodt πŸ’…

πŸŽ€ SYNOPSIS πŸŽ€

copy these exactly, no improv bestie:

#include <openssl/cms.h>

const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms);
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 πŸ’–

CMS_get0_type() hands you the content type of a CMS_ContentInfo structure as an ASN1_OBJECT pointer. then your application can decide how to process the CMS_ContentInfo structure based on this value. iykyk ✨

CMS_set1_eContentType() sets the embedded content type of a CMS_ContentInfo structure. it should be called with CMS functions (such as CMS_sign(3), CMS_encrypt(3)) with the CMS_PARTIAL flag and before the structure is finalised β€” otherwise the results are undefined. like, undefined, bestie, do not play with that 🫠

ASN1_OBJECT *CMS_get0_eContentType() returns a pointer to the embedded content type. cute.

CMS_get0_content() returns a pointer to the ASN1_OCTET_STRING pointer containing the embedded content. that's the vibe πŸ’…


🧚 NOTES 🧚

the 0 in the name is doing important lore work: CMS_get0_type(), CMS_get0_eContentType() and CMS_get0_content() return internal pointers which should not be freed up. no cap, do not free them πŸš«πŸ—‘οΈ

CMS_set1_eContentType() copies the supplied OID, and it should be freed up after use. so that one is your cleanup problem, bestie 🧹

the ASN1_OBJECT values returned can be converted to an integer NID value using OBJ_obj2nid(). for the currently supported content types the following values are returned:

NID_pkcs7_data
NID_pkcs7_signed
NID_pkcs7_digest
NID_id_smime_ct_compressedData:
NID_pkcs7_encrypted
NID_pkcs7_enveloped

the return value of CMS_get0_content() is a pointer to the ASN1_OCTET_STRING content pointer. that means that for example:

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 an ASN1_OBJECT structure. literally that's the return πŸ¦‹

CMS_set1_eContentType() returns 1 for success or 0 if an error occurred. the error can be obtained from ERR_get_error(3). slay when it's 1, go check the error tea when it's 0 😭


🌈 SEE ALSO 🌈


Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved.

Licensed under the Apache License 2.0 (the "License"). You may not use this file except in compliance with the License. You can obtain a copy in the file LICENSE in the source distribution or at <https://www.openssl.org/source/license.html>.

xoxo, your Unix bestie πŸ’– β€” this page is from OpenSSL 3.5.6, dated 2026-04-07, manual name CMS_GET0_TYPE(3ossl).

πŸ“¦ where this page comes from