GENERAL_NAME_NEW(3) | Library Functions Manual | GENERAL_NAME_NEW(3)

# NAME

`GENERAL_NAME_new`, `GENERAL_NAME_free`, `GENERAL_NAMES_new`, `GENERAL_NAMES_free`, `EDIPARTYNAME_new`, `EDIPARTYNAME_free`, `OTHERNAME_new`, `OTHERNAME_free` — names for use in X.509 extensions

# SYNOPSIS

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

GENERAL_NAME *
`GENERAL_NAME_new`(void);

void
`GENERAL_NAME_free`(GENERAL_NAME *name);

GENERAL_NAMES *
`GENERAL_NAMES_new`(void);

void
`GENERAL_NAMES_free`(GENERAL_NAMES *names);

EDIPARTYNAME *
`EDIPARTYNAME_new`(void);

void
`EDIPARTYNAME_free`(EDIPARTYNAME *name);

OTHERNAME *
`OTHERNAME_new`(void);

void
`OTHERNAME_free`(OTHERNAME *name);

# DESCRIPTION

Even though the X.501 Name documented in X509_NAME_new(3) is a complicated multi-layered structure, it is very rigid and not flexible enough to represent various entities that many people want to use as names in certificates. For that reason, X.509 extensions use the X.509 GeneralName wrapper structure rather than using the X.501 Name structure directly, at the expense of adding one or two additional layers of indirection.

`GENERAL_NAME_new`() allocates and initializes an empty GENERAL_NAME object, representing the ASN.1 GeneralName structure defined in RFC 5280 section 4.2.1.6. It can for example hold an X509_name object, an IP address, a DNS host name, a uniform resource identifier, an email address, or an EDIPARTYNAME or OTHERNAME object described below. `GENERAL_NAME_free`() frees name.

`GENERAL_NAMES_new`() allocates and initializes an empty GENERAL_NAMES object, which is a STACK_OF(GENERAL_NAME) and represents the ASN.1 GeneralNames structure defined in RFC 5280 section 4.2.1.6. It is used by extension structures that can contain multiple names, for example key identifier, alternative name, and distribution point extensions. `GENERAL_NAMES_free`() frees names.

`EDIPARTYNAME_new`() allocates and initializes an empty EDIPARTYNAME object, representing the ASN.1 EDIPartyName structure defined in RFC 5280 section 4.2.1.6, where “EDI” stands for “electronic data identifier”. It can hold two strings, the name itself and the name of the authority that assigned that name. `EDIPARTYNAME_free`() frees name.

`OTHERNAME_new`() allocates and initializes an empty OTHERNAME object, representing the ASN.1 OtherName structure defined in RFC 5280 section 4.2.1.6. It can hold data of any ASN1_TYPE together with a type identifier. `OTHERNAME_free`() frees name.

# RETURN VALUES

`GENERAL_NAME_new`(), `GENERAL_NAMES_new`(), `EDIPARTYNAME_new`(), and `OTHERNAME_new`() return a new GENERAL_NAME, GENERAL_NAMES, EDIPARTYNAME, or OTHERNAME object or `NULL` if an error occurs.

# SEE ALSO

d2i_GENERAL_NAME(3), X509_EXTENSION_new(3), X509_NAME_new(3)

# STANDARDS

RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile, section 4.2: Certificate Extensions

# HISTORY

`GENERAL_NAME_new`(), `GENERAL_NAME_free`(), `GENERAL_NAMES_new`(), and `GENERAL_NAMES_free`() first appeared in OpenSSL 0.9.2b and have been available since OpenBSD 2.6.

`OTHERNAME_new`() and `OTHERNAME_free`() first appeared in OpenSSL 0.9.5 and have been available since OpenBSD 2.7.

`EDIPARTYNAME_new`() and `EDIPARTYNAME_free`() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.2.

June 8, 2025 | Debian