BIO_GET_EX_NEW_INDEX(3) | Library Functions Manual | BIO_GET_EX_NEW_INDEX(3)

# NAME

`BIO_get_ex_new_index`, `BIO_set_ex_data`, `BIO_get_ex_data`, `BIO_set_app_data`, `BIO_get_app_data`, `UI_get_ex_new_index`, `UI_set_ex_data`, `UI_get_ex_data`, `X509_get_ex_new_index`, `X509_set_ex_data`, `X509_get_ex_data`, `EC_KEY_get_ex_new_index`, `EC_KEY_get_ex_data`, `EC_KEY_set_ex_data` — application-specific data

# SYNOPSIS

library “libcrypto”
`#include <openssl/bio.h>`
`#include <openssl/ui.h>`
`#include <openssl/x509.h>`
`#include <openssl/ec.h>`

int
`TYPE_get_ex_new_index`(long argl, void *argp, CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);

int
`TYPE_set_ex_data`(TYPE *d, int idx, void *arg);

void *
`TYPE_get_ex_data`(TYPE *d, int idx);

int
`TYPE_set_app_data`(TYPE *d, void *arg);

void *
`TYPE_get_app_data`(TYPE *d);

# DESCRIPTION

In the description here, TYPE is used a placeholder for any of the OpenSSL datatypes listed in CRYPTO_get_ex_new_index(3).

These functions handle application-specific data in OpenSSL data structures. Their usage is identical to that of RSA_get_ex_new_index(3), RSA_set_ex_data(3), and RSA_get_ex_data(3).

`TYPE_get_ex_new_index`() is a macro that calls CRYPTO_get_ex_new_index(3) with the correct index value.

`TYPE_set_ex_data`() is a function that calls CRYPTO_set_ex_data(3) with an offset into the opaque ex_data part of the TYPE object.

`TYPE_get_ex_data`() is a function that calls CRYPTO_get_ex_data(3) with an offset into the opaque ex_data part of the TYPE object.

`TYPE_set_app_data`() and `TYPE_get_app_data`() are deprecated wrapper macros that call `TYPE_set_ex_data`() and `TYPE_get_ex_data`() with idx set to 0.

# RETURN VALUES

`TYPE_get_new_ex_index`() returns a new index on success or -1 on error.

`TYPE_set_ex_data`() and `TYPE_set_app_data`() return 1 on success or 0 on error.

`TYPE_get_ex_data`() and `TYPE_get_app_data`() return the application data or `NULL` if an error occurred.

# SEE ALSO

BIO_new(3), CRYPTO_get_ex_new_index(3), RSA_get_ex_new_index(3), X509_new(3)

# HISTORY

`BIO_set_app_data`() and `BIO_get_app_data`() first appeared in SSLeay 0.8.1. `BIO_get_ex_new_index`(), `BIO_set_ex_data`(), and `BIO_get_ex_data`() first appeared in SSLeay 0.9.0. These functions have been available since OpenBSD 2.4.

`X509_get_ex_new_index`(), `X509_set_ex_data`(), and `X509_get_ex_data`() first appeared in OpenSSL 0.9.5 and have been available since OpenBSD 2.7.

`UI_get_ex_new_index`(), `UI_set_ex_data`(), and `UI_get_ex_data`() first appeared in OpenSSL 0.9.7 and have been available since OpenBSD 3.2.

`EC_KEY_get_ex_new_index`(), `EC_KEY_set_ex_data`(), and `EC_KEY_get_ex_data`() first appeared in OpenSSL 1.1.0 and have been available since OpenBSD 6.5.

June 8, 2025 | Debian