NAME
EVP_PKEY_add1_attr,
EVP_PKEY_add1_attr_by_OBJ,
EVP_PKEY_add1_attr_by_NID,
EVP_PKEY_add1_attr_by_txt,
EVP_PKEY_delete_attr,
EVP_PKEY_get_attr,
EVP_PKEY_get_attr_count,
EVP_PKEY_get_attr_by_OBJ,
EVP_PKEY_get_attr_by_NID —
X.501 Attributes of private
keys
SYNOPSIS
#include
<openssl/x509.h>
int
EVP_PKEY_add1_attr(EVP_PKEY
*key, X509_ATTRIBUTE *attr);
int
EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY
*key, const ASN1_OBJECT *obj,
int type, const unsigned char
*data, int len);
int
EVP_PKEY_add1_attr_by_NID(EVP_PKEY
*key, int nid, int type,
const unsigned char *data, int
len);
int
EVP_PKEY_add1_attr_by_txt(EVP_PKEY
*key, const char *name, int
type, const unsigned char *data,
int len);
X509_ATTRIBUTE *
EVP_PKEY_delete_attr(EVP_PKEY
*key, int index);
X509_ATTRIBUTE *
EVP_PKEY_get_attr(const EVP_PKEY
*key, int index);
int
EVP_PKEY_get_attr_count(const EVP_PKEY
*key);
int
EVP_PKEY_get_attr_by_OBJ(const
EVP_PKEY *key, const ASN1_OBJECT *obj,
int start_after);
int
EVP_PKEY_get_attr_by_NID(const
EVP_PKEY *key, int nid, int
start_after);
DESCRIPTION
These functions support associating an array of X.501 Attributes with a private key. Such attributes can for example be included in PKCS#12 structures.
EVP_PKEY_add1_attr()
appends a deep copy of the attr using
X509at_add1_attr(3).
EVP_PKEY_add1_attr_by_OBJ(),
EVP_PKEY_add1_attr_by_NID(),
and
EVP_PKEY_add1_attr_by_txt()
create a new X.501 Attribute object using
X509_ATTRIBUTE_create_by_OBJ(3),
X509_ATTRIBUTE_create_by_NID(3), or
X509_ATTRIBUTE_create_by_txt(3), respectively, and append it
using
X509at_add1_attr(3).
EVP_PKEY_delete_attr()
deletes the attribute with the zero-based index using
X509at_delete_attr(3).
EVP_PKEY_get_attr()
returns the attribute with the zero-based index using
X509at_get_attr(3).
EVP_PKEY_get_attr_count()
returns the number of attributes currently associated with the
key using
X509at_get_attr_count(3).
EVP_PKEY_get_attr_by_OBJ()
and
EVP_PKEY_get_attr_by_NID()
search for an attribute of the type obj or
nid using
X509at_get_attr_by_OBJ(3) or
X509at_get_attr_by_NID(3), respectively.
RETURN VALUES
EVP_PKEY_add1_attr(),
EVP_PKEY_add1_attr_by_OBJ(),
EVP_PKEY_add1_attr_by_NID(), and
EVP_PKEY_add1_attr_by_txt() return 1 for success or
0 for failure.
EVP_PKEY_delete_attr() and
EVP_PKEY_get_attr() return the deleted or requested
attribute or NULL if the requested index is negative
or greater than or equal to the current number of attributes associated with
the key.
EVP_PKEY_get_attr_count() returns the
current number of attributes.
EVP_PKEY_get_attr_by_OBJ() and
EVP_PKEY_get_attr_by_NID() return the index of the
first attribute that has an index greater than
start_after and a type matching
obj or nid, respectively, or -1
on failure. In addition, EVP_PKEY_get_attr_by_NID()
returns -2 if
OBJ_nid2obj(3) fails on the requested
nid.
SEE ALSO
EVP_PKEY_new(3), OBJ_nid2obj(3), PKCS12_create(3), X509_ATTRIBUTE_create_by_OBJ(3), X509_ATTRIBUTE_new(3), X509at_add1_attr(3), X509at_get_attr(3)
HISTORY
These functions first appeared in OpenSSL 0.9.8 and have been available since OpenBSD 4.5.