ASN1_STRING_NEW(3) | Library Functions Manual | ASN1_STRING_NEW(3)

# NAME

`ASN1_STRING_new`, `ASN1_STRING_type_new`, `ASN1_STRING_free`, `ASN1_OCTET_STRING_new`, `ASN1_OCTET_STRING_free`, `ASN1_BIT_STRING_new`, `ASN1_BIT_STRING_free`, `ASN1_INTEGER_new`, `ASN1_INTEGER_free`, `ASN1_ENUMERATED_new`, `ASN1_ENUMERATED_free`, `ASN1_UTF8STRING_new`, `ASN1_UTF8STRING_free`, `ASN1_IA5STRING_new`, `ASN1_IA5STRING_free`, `ASN1_UNIVERSALSTRING_new`, `ASN1_UNIVERSALSTRING_free`, `ASN1_BMPSTRING_new`, `ASN1_BMPSTRING_free`, `ASN1_GENERALSTRING_new`, `ASN1_GENERALSTRING_free`, `ASN1_T61STRING_new`, `ASN1_T61STRING_free`, `ASN1_VISIBLESTRING_new`, `ASN1_VISIBLESTRING_free`, `ASN1_PRINTABLESTRING_new`, `ASN1_PRINTABLESTRING_free`, `ASN1_PRINTABLE_new`, `ASN1_PRINTABLE_free`, `DIRECTORYSTRING_new`, `DIRECTORYSTRING_free`, `DISPLAYTEXT_new`, `DISPLAYTEXT_free`, `ASN1_GENERALIZEDTIME_new`, `ASN1_GENERALIZEDTIME_free`, `ASN1_UTCTIME_new`, `ASN1_UTCTIME_free`, `ASN1_TIME_new`, `ASN1_TIME_free` — allocate and free ASN1_STRING objects

# SYNOPSIS

library “libcrypto”
`#include <openssl/asn1.h>`

ASN1_STRING *
`ASN1_STRING_new`(void);

ASN1_STRING *
`ASN1_STRING_type_new`(int type);

void
`ASN1_STRING_free`(ASN1_STRING *a);

ASN1_OCTET_STRING *
`ASN1_OCTET_STRING_new`(void);

void
`ASN1_OCTET_STRING_free`(ASN1_OCTET_STRING *a);

ASN1_BIT_STRING *
`ASN1_BIT_STRING_new`(void);

void
`ASN1_BIT_STRING_free`(ASN1_BIT_STRING *a);

ASN1_INTEGER *
`ASN1_INTEGER_new`(void);

void
`ASN1_INTEGER_free`(ASN1_INTEGER *a);

ASN1_ENUMERATED *
`ASN1_ENUMERATED_new`(void);

void
`ASN1_ENUMERATED_free`(ASN1_ENUMERATED *a);

ASN1_UTF8STRING *
`ASN1_UTF8STRING_new`(void);

void
`ASN1_UTF8STRING_free`(ASN1_UTF8STRING *a);

ASN1_IA5STRING *
`ASN1_IA5STRING_new`(void);

void
`ASN1_IA5STRING_free`(ASN1_IA5STRING *a);

ASN1_UNIVERSALSTRING *
`ASN1_UNIVERSALSTRING_new`(void);

void
`ASN1_UNIVERSALSTRING_free`(ASN1_UNIVERSALSTRING *a);

ASN1_BMPSTRING *
`ASN1_BMPSTRING_new`(void);

void
`ASN1_BMPSTRING_free`(ASN1_BMPSTRING *a);

ASN1_GENERALSTRING *
`ASN1_GENERALSTRING_new`(void);

void
`ASN1_GENERALSTRING_free`(ASN1_GENERALSTRING *a);

ASN1_T61STRING *
`ASN1_T61STRING_new`(void);

void
`ASN1_T61STRING_free`(ASN1_T61STRING *a);

ASN1_VISIBLESTRING *
`ASN1_VISIBLESTRING_new`(void);

void
`ASN1_VISIBLESTRING_free`(ASN1_VISIBLESTRING *a);

ASN1_PRINTABLESTRING *
`ASN1_PRINTABLESTRING_new`(void);

void
`ASN1_PRINTABLESTRING_free`(ASN1_PRINTABLESTRING *a);

ASN1_STRING *
`ASN1_PRINTABLE_new`(void);

void
`ASN1_PRINTABLE_free`(ASN1_STRING *a);

ASN1_STRING *
`DIRECTORYSTRING_new`(void);

void
`DIRECTORYSTRING_free`(ASN1_STRING *a);

ASN1_STRING *
`DISPLAYTEXT_new`(void);

void
`DISPLAYTEXT_free`(ASN1_STRING *a);

ASN1_GENERALIZEDTIME *
`ASN1_GENERALIZEDTIME_new`(void);

void
`ASN1_GENERALIZEDTIME_free`(ASN1_GENERALIZEDTIME *a);

ASN1_UTCTIME *
`ASN1_UTCTIME_new`(void);

void
`ASN1_UTCTIME_free`(ASN1_UTCTIME *a);

ASN1_TIME *
`ASN1_TIME_new`(void);

void
`ASN1_TIME_free`(ASN1_TIME *a);

# DESCRIPTION

The ASN1_STRING object can represent a variety of ASN.1 built-in types. It can store a type and a value.

All the `*_new`() functions allocate and initialize an empty ASN1_STRING object. The following table shows the type assigned to the new object, and which ASN.1 type it represents.

constructor function | OpenSSL type | ASN.1 type
`ASN1_STRING_new`() | `V_ASN1_OCTET_STRING`
`ASN1_STRING_type_new`() | type argument
`ASN1_OCTET_STRING_new`() | `V_ASN1_OCTET_STRING` | OCTET STRING
`ASN1_BIT_STRING_new`() | `V_ASN1_BIT_STRING` | BIT STRING
`ASN1_INTEGER_new`() | `V_ASN1_INTEGER` | INTEGER
`ASN1_ENUMERATED_new`() | `V_ASN1_ENUMERATED` | ENUMERATED
`ASN1_UTF8STRING_new`() | `V_ASN1_UTF8STRING` | UTF8String
`ASN1_IA5STRING_new`() | `V_ASN1_IA5STRING` | IA5String
`ASN1_UNIVERSALSTRING_new`() | `V_ASN1_UNIVERSALSTRING` | UniversalString
`ASN1_BMPSTRING_new`() | `V_ASN1_BMPSTRING` | BMPString
`ASN1_GENERALSTRING_new`() | `V_ASN1_GENERALSTRING` | GeneralString
`ASN1_T61STRING_new`() | `V_ASN1_T61STRING` | T61String
`ASN1_VISIBLESTRING_new`() | `V_ASN1_VISIBLESTRING` | VisibleString
`ASN1_PRINTABLESTRING_new`() | `V_ASN1_PRINTABLESTRING` | PrintableString
`ASN1_PRINTABLE_new`() | `V_ASN1_UNDEF`
`DIRECTORYSTRING_new`() | `V_ASN1_UNDEF`
`DISPLAYTEXT_new`() | `V_ASN1_UNDEF`
`ASN1_GENERALIZEDTIME_new`() | `V_ASN1_GENERALIZEDTIME` | GeneralizedTime
`ASN1_UTCTIME_new`() | `V_ASN1_UTCTIME` | UTCTime
`ASN1_TIME_new`() | `V_ASN1_UNDEF` | TIME

All the `*_free`() functions free a including any data contained in it. If a is a `NULL` pointer, no action occurs.

# RETURN VALUES

All the `*_new`() functions return the new ASN1_STRING object if successful; otherwise `NULL` is returned and an error code can be retrieved with ERR_get_error(3).

# SEE ALSO

a2i_ipadd(3), ASN1_BIT_STRING_set(3), ASN1_INTEGER_get(3), ASN1_item_pack(3), ASN1_mbstring_copy(3), ASN1_PRINTABLE_type(3), ASN1_STRING_length(3), ASN1_STRING_print_ex(3), ASN1_TIME_set(3), ASN1_TYPE_get(3), ASN1_UNIVERSALSTRING_to_string(3), d2i_ASN1_OBJECT(3), d2i_ASN1_OCTET_STRING(3), i2a_ASN1_STRING(3), s2i_ASN1_INTEGER(3), X509_cmp_time(3), X509_EXTENSION_get_object(3), X509_get_ext_by_OBJ(3), X509_NAME_ENTRY_get_object(3)

# HISTORY

`ASN1_OCTET_STRING_new`(), `ASN1_OCTET_STRING_free`(), `ASN1_BIT_STRING_new`(), `ASN1_BIT_STRING_free`(), `ASN1_INTEGER_new`(), `ASN1_INTEGER_free`(), `ASN1_IA5STRING_new`(), `ASN1_IA5STRING_free`(), `ASN1_T61STRING_new`(), `ASN1_T61STRING_free`(), `ASN1_PRINTABLESTRING_new`(), `ASN1_PRINTABLESTRING_free`(), `ASN1_PRINTABLE_new`(), `ASN1_PRINTABLE_free`(), `ASN1_UTCTIME_new`(), and `ASN1_UTCTIME_free`() first appeared in SSLeay 0.5.1. `ASN1_STRING_new`(), `ASN1_STRING_type_new`(), and `ASN1_STRING_free`() first appeared in SSLeay 0.6.5. `ASN1_UNIVERSALSTRING_new`(), `ASN1_UNIVERSALSTRING_free`(), `ASN1_GENERALSTRING_new`(), and `ASN1_GENERALSTRING_free`() first appeared in SSLeay 0.8.0. `ASN1_BMPSTRING_new`(), `ASN1_BMPSTRING_free`(), `ASN1_GENERALIZEDTIME_new`(), and `ASN1_GENERALIZEDTIME_free`() first appeared in SSLeay 0.9.0. All these functions have been available since OpenBSD 2.4.

`ASN1_ENUMERATED_new`(), `ASN1_ENUMERATED_free`(), `ASN1_TIME_new`(), and `ASN1_TIME_free`() first appeared in OpenSSL 0.9.2b. `ASN1_UTF8STRING_new`(), `ASN1_UTF8STRING_free`(), `ASN1_VISIBLESTRING_new`(), `ASN1_VISIBLESTRING_free`(), `DIRECTORYSTRING_new`(), `DIRECTORYSTRING_free`(), `DISPLAYTEXT_new`(), and `DISPLAYTEXT_free`() first appeared in OpenSSL 0.9.3. These functions have been available since OpenBSD 2.6.

# BUGS

ASN1_OCTET_STRING, ASN1_BIT_STRING, ASN1_INTEGER, ASN1_ENUMERATED, ASN1_UTF8STRING, ASN1_IA5STRING, ASN1_UNIVERSALSTRING, ASN1_BMPSTRING, ASN1_GENERALSTRING, ASN1_T61STRING, ASN1_VISIBLESTRING, ASN1_PRINTABLESTRING, ASN1_GENERALIZEDTIME, ASN1_UTCTIME, and ASN1_TIME are merely typedef aliases of ASN1_STRING and provide no type safety whatsoever.

June 8, 2025 | Debian