SSL_GET_EX_NEW_INDEX(3)
π SSL_GET_EX_NEW_INDEX(3) β the libssl/libcrypto glow-up
okay so bestie, this is one of those pages from the libssl / libcrypto manual set, and it's all about the little secret pocket dimension where OpenSSL structures keep your stuff π Like, the library has these big important structs, and sometimes you just wanna tuck a lil something of your own in there. That's what this is. Internal application-specific data functions, periodt.
β¨ SYNOPSIS β¨
library βlibsslβ libcrypto #include <openssl/ssl.h>
int
SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
int
SSL_set_ex_data(SSL *ssl, int idx, void *arg);
void *
SSL_get_ex_data(const SSL *ssl, int idx);
typedef int new_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
int idx, long argl, void *argp);
typedef void free_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad,
int idx, long argl, void *argp);
typedef int dup_func(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d,
int idx, long argl, void *argp);
Like, vibe check those typedefs β new_func, free_func, dup_func β they're giving callback energy and honestly? iconic π₯
πΈ DESCRIPTION πΈ
So. Several OpenSSL structures can have application specific data attached to them β like lil friendship bracelets only your app knows the meaning of π«Ά These functions here are used internally by OpenSSL to manipulate that application specific data attached to a specific structure.
SSL_get_ex_new_index()β registers a brand new index for application specific data. New index, new you, slay β¨SSL_set_ex_data()β stores application data atargforidxinto thesslobject. It's giving "put it in the box, bestie" πSSL_get_ex_data()β retrieves the information foridxfromssl. The box opens, your stuff is still there, we love to see it π
ngl, if you want the full tea on this stuff: a detailed description of the *_get_ex_new_index() functionality can be found in RSA_get_ex_new_index(3), and the *_get_ex_data() and *_set_ex_data() functionality is described in CRYPTO_set_ex_data(3). Go read those too, iykyk π
π EXAMPLES π
An example of how to use the functionality is included in the example verify_callback() in SSL_CTX_set_verify(3). Literally go look at it, it ate π
π¦ SEE ALSO π¦
π HISTORY π
Precursor functions SSL_set_app_data() and SSL_get_app_data() first appeared in SSLeay 0.6.1. Ancient. Historical. Respect the elders π§
Then SSL_get_ex_new_index(), SSL_set_ex_data(), and SSL_get_ex_data() first appeared in SSLeay 0.9.0 and have been available since OpenBSD 2.4. Not me being this well-traveled ππ
no cap, every flag, every signature, every path up there is copy-pasted from the real page on purpose β the vibe is mine, the facts are sacred π
anyway that's the whole page, stan CRYPTO_EX_DATA, and remember: this beauty shipped from the Debian libssl/libcrypto manual set, dated June 8, 2025, page SSL_GET_EX_NEW_INDEX(3) β mwah πβ
π¦ where this page comes from
- alpine 3.24: libressl-doc 4.3.1-r0 Β· custom
- arch rolling: libressl 4.4.0-1 Β· ISC AND custom:OpenSSL
- Copyright (c) 2001, 2005 The OpenSSL Project. All rights reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms