Sortix nightly manual
This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.
ASN1_ITEM_NEW(3) | 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
TheASN1_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.January 12, 2022 | Debian |