Manual Page Result
0
Command: CMS_signed_add1_attr | Section: 3 | Source: OpenBSD | File: CMS_signed_add1_attr.3
CMS_SIGNED_ADD1_ATTR(3) FreeBSD Library Functions Manual
NAME
CMS_signed_add1_attr, CMS_signed_add1_attr_by_NID,
CMS_signed_add1_attr_by_OBJ, CMS_signed_add1_attr_by_txt,
CMS_signed_delete_attr, CMS_signed_get0_data_by_OBJ, CMS_signed_get_attr,
CMS_signed_get_attr_by_NID, CMS_signed_get_attr_by_OBJ,
CMS_signed_get_attr_count, CMS_unsigned_add1_attr,
CMS_unsigned_add1_attr_by_NID, CMS_unsigned_add1_attr_by_OBJ,
CMS_unsigned_add1_attr_by_txt, CMS_unsigned_delete_attr,
CMS_unsigned_get0_data_by_OBJ, CMS_unsigned_get_attr,
CMS_unsigned_get_attr_by_NID, CMS_unsigned_get_attr_by_OBJ,
CMS_unsigned_get_attr_count - change signed and unsigned attributes of a
CMS SignerInfo object
SYNOPSIS
#include <openssl/cms.h>
int
CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
int
CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, int nid, int type,
const void *bytes, int len);
int
CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *obj,
int type, const void *bytes, int len);
int
CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, const char *attrname,
int type, const void *bytes, int len);
X509_ATTRIBUTE *
CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
void *
CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *oid,
int start_after, int type);
X509_ATTRIBUTE *
CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
int
CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
int start_after);
int
CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si,
const ASN1_OBJECT *obj, int start_after);
int
CMS_signed_get_attr_count(const CMS_SignerInfo *si);
int
CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
int
CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, int nid, int type,
const void *bytes, int len);
int
CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *obj,
int type, const void *bytes, int len);
int
CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, const char *attrname,
int type, const void *bytes, int len);
X509_ATTRIBUTE *
CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
void *
CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
int start_after, int type);
X509_ATTRIBUTE *
CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
int
CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
int start_after);
int
CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si,
const ASN1_OBJECT *obj, int start_after);
int
CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
DESCRIPTION
A CMS_SignerInfo object has two optional sets of X.501 attributes: a set
of signed attributes in the signedAttrs array and a set of unsigned
attributes in the unsignedAttrs array. The CMS_signed_*() and
CMS_unsigned_*() functions are similar, except CMS_signed_*() modifies
the CMS_SignerInfo object's set of signed attributes and CMS_unsigned_*()
modifies the CMS_SignerInfo object's set of unsigned attributes. For
brevity only the CMS_signed_*() functions are described below.
CMS_signed_add1_attr() appends a deep copy of attr to the signedAttrs
array of si, allocating a new array if necessary.
CMS_signed_add1_attr_by_NID(), CMS_signed_add1_attr_by_OBJ(), and
CMS_signed_add1_attr_by_txt() create a new X.501 Attribute object using
X509_ATTRIBUTE_create_by_NID(3), X509_ATTRIBUTE_create_by_OBJ(3), or
X509_ATTRIBUTE_create_by_txt(3), respectively, and append it to the
signedAttrs array of si.
CMS_signed_delete_attr() deletes the element with the zero-based loc in
signedAttrs of si.
CMS_signed_get0_data_by_OBJ(), CMS_signed_get_attr_by_NID(), and
CMS_signed_get_attr_by_OBJ() search the array starting after the index
start_after. They fail if no matching object is found.
CMS_signed_get0_data_by_OBJ() also fails if the data is not of the
requested type.
Additionally, the start_after argument of CMS_signed_get0_data_by_OBJ()
is interpreted in a special way. If start_after is -2 or smaller, the
function also fails if the signedAttrs array of si, contains more than
one matching object. If start_after is -3 or smaller, it also fails
unless the matching object contains exactly one value.
CMS_signed_get_attr() returns the array element at the zero-based loc.
It fails if the loc argument is negative or greater than or equal to the
number of objects in the array.
CMS_signed_get_attr_count() returns the number of objects currently
stored in the signedAttrs array of si.
RETURN VALUES
CMS_signed_add1_attr(), CMS_signed_add1_attr_by_NID(),
CMS_signed_add1_attr_by_OBJ(), CMS_signed_add1_attr_by_txt(),
CMS_unsigned_add1_attr(), CMS_unsigned_add1_attr_by_NID(),
CMS_unsigned_add1_attr_by_OBJ(), and CMS_unsigned_add1_attr_by_txt()
return 1 for success or 0 if an error occurs.
CMS_signed_delete_attr() returns the deleted element or NULL if the
signedAttrs array is NULL, or if the requested loc argument is negative,
or greater than or equal to the number of objects in it.
CMS_unsigned_delete_attr() returns the deleted element or NULL if the
unsignedAttrs array is NULL, or if the requested loc argument is
negative, or greater than or equal to the number of objects in it.
CMS_signed_get0_data_by_OBJ() and CMS_unsigned_get0_data_by_OBJ() return
an internal pointer to the data contained in the value of the first
object that has an index greater than start_after and a type matching
type, or NULL on failure.
CMS_signed_get_attr() and CMS_unsigned_get_attr() return an internal
pointer or NULL on failure.
CMS_signed_get_attr_by_NID(), CMS_signed_get_attr_by_OBJ(),
CMS_unsigned_get_attr_by_NID(), and CMS_unsigned_get_attr_by_OBJ() return
the index of the first object in the array that has an index greater than
start_after and a type matching nid or oid, respectively, or -1 on
failure. In addition, CMS_signed_get_attr_by_OBJ() and
CMS_unsigned_get_attr_by_OBJ() return -2 if OBJ_nid2obj(3) fails on the
requested nid.
CMS_signed_get_attr_count() and CMS_unsigned_get_attr_count() return the
number of array elements or -1 on failure.
SEE ALSO
CMS_add1_signer(3), CMS_ContentInfo_new(3), CMS_get0_SignerInfos(3),
OBJ_nid2obj(3), X509_ATTRIBUTE_create_by_OBJ(3), X509_ATTRIBUTE_new(3)
STANDARDS
RFC 5652: Cryptographic Message Syntax (CMS)
- section 5.3: SignerInfo Type
- section 11: Useful Attributes
HISTORY
These functions first appeared in OpenSSL 0.9.9 and have been available
since OpenBSD 6.6.
FreeBSD 14.1-RELEASE-p8 September 2, 2024 FreeBSD 14.1-RELEASE-p8