Manual Page Result
0
Command: ASN1_item_new | Section: 3 | Source: OpenBSD | File: ASN1_item_new.3
ASN1_ITEM_NEW(3) FreeBSD Library Functions Manual ASN1_ITEM_NEW(3)
NAME
ASN1_item_new, ASN1_item_free - generic ASN.1 value constructor and
destructor
SYNOPSIS
#include <openssl/asn1.h>
ASN1_VALUE *
ASN1_item_new(const ASN1_ITEM *it);
void
ASN1_item_free(ASN1_VALUE *val_in, const ASN1_ITEM *it);
DESCRIPTION
ASN1_item_new() allocates and initializes an empty ASN.1 value of the
type described by the global static object it.
If the item type described by it is reference counted, ASN1_item_free()
decrements the reference count of val_in. Otherwise, or if the reference
count reaches 0, ASN1_item_free() frees val_in, assuming that it is of
the type described by it. If the true type of val_in fails to match the
specified it, buffer overflows and segmentation faults are likely to
occur. It is not possible to recover the type of an ASN1_VALUE object by
inspecting it; the type always needs to be remembered separately.
ASN1_VALUE is an incomplete type, and pointers to it always require
casting to the correct complete type before they can be dereferenced.
For all practical purposes, a pointer to ASN1_VALUE is equivalent to a
void pointer.
Depending on it, there are more than 150 different types that
ASN1_item_new() may return. Most of them are pointers to structures or
pointers to arrays of structures, but there are a few exceptions, for
example: If it is ASN1_NULL_it, ASN1_item_new() returns a specific
invalid pointer representing the unique ASN1_NULL object. If it is
LONG_it, ASN1_item_new() does not return a pointer at all, but a long
value cast to ASN1_VALUE *.
RETURN VALUES
The ASN1_item_new() function returns the new ASN1_VALUE object if
successful; otherwise NULL is returned and an error code can be retrieved
with ERR_get_error(3).
SEE ALSO
ASN1_get_object(3), ASN1_item_d2i(3), ASN1_item_digest(3),
ASN1_item_pack(3), ASN1_item_sign(3), ASN1_item_verify(3),
ASN1_NULL_new(3), ASN1_TYPE_new(3), d2i_ASN1_NULL(3), OBJ_nid2obj(3)
HISTORY
ASN1_item_new() and ASN1_item_free() first appeared in OpenSSL 0.9.7 and
have been available since OpenBSD 3.2.
BUGS
The ASN1_VALUE type compromises type safety and invites programming
mistakes that will typically have severe consequences.
FreeBSD 14.1-RELEASE-p8 January 12, 2022 FreeBSD 14.1-RELEASE-p8