GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
ASN1_ITEM_NEW(3) FreeBSD Library Functions Manual ASN1_ITEM_NEW(3)

ASN1_item_new, ASN1_item_free
generic 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);

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 *.

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).

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)

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.
January 12, 2022 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.