OpenBSD manual page server

Manual Page Search Parameters

ASN1_ITEM_NEW(3) Library Functions Manual ASN1_ITEM_NEW(3)

ASN1_item_new, ASN1_item_freegeneric ASN.1 value constructor and destructor

#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);

() 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, () 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 () 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 ASN1_BOOLEAN_it or LONG_it, ASN1_item_new() does not return a pointer at all, but a long value cast to ASN1_VALUE *.

ASN1_item_new() returns the new ASN1_VALUE object or NULL if an error occurs.

ASN1_item_d2i(3), ASN1_TYPE_new(3), d2i_ASN1_NULL(3), OBJ_nid2obj(3)

ASN1_item_new() and ASN1_item_free() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.2.

The ASN1_VALUE type compromises type safety and invites programming mistakes that will typically have severe consequences.

March 22, 2018 OpenBSD-6.3