1*a70cbf0fStb.\" $OpenBSD: BIO_get_ex_new_index.3,v 1.17 2023/11/19 10:26:36 tb Exp $ 257d2e3e7Sschwarze.\" full merge up to: OpenSSL 61f805c1 Jan 16 01:01:46 2018 +0800 307f0d17dSschwarze.\" 407f0d17dSschwarze.\" This file was written by Rich Salz <rsalz@akamai.com>. 507f0d17dSschwarze.\" Copyright (c) 2015, 2016 The OpenSSL Project. All rights reserved. 607f0d17dSschwarze.\" 707f0d17dSschwarze.\" Redistribution and use in source and binary forms, with or without 807f0d17dSschwarze.\" modification, are permitted provided that the following conditions 907f0d17dSschwarze.\" are met: 1007f0d17dSschwarze.\" 1107f0d17dSschwarze.\" 1. Redistributions of source code must retain the above copyright 1207f0d17dSschwarze.\" notice, this list of conditions and the following disclaimer. 1307f0d17dSschwarze.\" 1407f0d17dSschwarze.\" 2. Redistributions in binary form must reproduce the above copyright 1507f0d17dSschwarze.\" notice, this list of conditions and the following disclaimer in 1607f0d17dSschwarze.\" the documentation and/or other materials provided with the 1707f0d17dSschwarze.\" distribution. 1807f0d17dSschwarze.\" 1907f0d17dSschwarze.\" 3. All advertising materials mentioning features or use of this 2007f0d17dSschwarze.\" software must display the following acknowledgment: 2107f0d17dSschwarze.\" "This product includes software developed by the OpenSSL Project 2207f0d17dSschwarze.\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 2307f0d17dSschwarze.\" 2407f0d17dSschwarze.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 2507f0d17dSschwarze.\" endorse or promote products derived from this software without 2607f0d17dSschwarze.\" prior written permission. For written permission, please contact 2707f0d17dSschwarze.\" openssl-core@openssl.org. 2807f0d17dSschwarze.\" 2907f0d17dSschwarze.\" 5. Products derived from this software may not be called "OpenSSL" 3007f0d17dSschwarze.\" nor may "OpenSSL" appear in their names without prior written 3107f0d17dSschwarze.\" permission of the OpenSSL Project. 3207f0d17dSschwarze.\" 3307f0d17dSschwarze.\" 6. Redistributions of any form whatsoever must retain the following 3407f0d17dSschwarze.\" acknowledgment: 3507f0d17dSschwarze.\" "This product includes software developed by the OpenSSL Project 3607f0d17dSschwarze.\" for use in the OpenSSL Toolkit (http://www.openssl.org/)" 3707f0d17dSschwarze.\" 3807f0d17dSschwarze.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 3907f0d17dSschwarze.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4007f0d17dSschwarze.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 4107f0d17dSschwarze.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 4207f0d17dSschwarze.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 4307f0d17dSschwarze.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 4407f0d17dSschwarze.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 4507f0d17dSschwarze.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 4607f0d17dSschwarze.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 4707f0d17dSschwarze.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 4807f0d17dSschwarze.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 4907f0d17dSschwarze.\" OF THE POSSIBILITY OF SUCH DAMAGE. 5007f0d17dSschwarze.\" 51*a70cbf0fStb.Dd $Mdocdate: November 19 2023 $ 5207f0d17dSschwarze.Dt BIO_GET_EX_NEW_INDEX 3 5307f0d17dSschwarze.Os 5407f0d17dSschwarze.Sh NAME 5507f0d17dSschwarze.Nm BIO_get_ex_new_index , 5607f0d17dSschwarze.Nm BIO_set_ex_data , 5707f0d17dSschwarze.Nm BIO_get_ex_data , 58b76794fbSschwarze.Nm BIO_set_app_data , 59b76794fbSschwarze.Nm BIO_get_app_data , 6007f0d17dSschwarze.Nm UI_get_ex_new_index , 6107f0d17dSschwarze.Nm UI_set_ex_data , 6207f0d17dSschwarze.Nm UI_get_ex_data , 6307f0d17dSschwarze.Nm X509_get_ex_new_index , 6407f0d17dSschwarze.Nm X509_set_ex_data , 6507f0d17dSschwarze.Nm X509_get_ex_data , 6657d2e3e7Sschwarze.Nm EC_KEY_get_ex_new_index , 6757d2e3e7Sschwarze.Nm EC_KEY_get_ex_data , 687d933637Stb.Nm EC_KEY_set_ex_data 6907f0d17dSschwarze.Nd application-specific data 7007f0d17dSschwarze.Sh SYNOPSIS 713db22ef2Sschwarze.In openssl/bio.h 723db22ef2Sschwarze.In openssl/ui.h 7307f0d17dSschwarze.In openssl/x509.h 7457d2e3e7Sschwarze.In openssl/ec.h 7507f0d17dSschwarze.Ft int 7607f0d17dSschwarze.Fo TYPE_get_ex_new_index 7707f0d17dSschwarze.Fa "long argl" 7807f0d17dSschwarze.Fa "void *argp" 7907f0d17dSschwarze.Fa "CRYPTO_EX_new *new_func" 8007f0d17dSschwarze.Fa "CRYPTO_EX_dup *dup_func" 8107f0d17dSschwarze.Fa "CRYPTO_EX_free *free_func" 8207f0d17dSschwarze.Fc 8307f0d17dSschwarze.Ft int 8407f0d17dSschwarze.Fo TYPE_set_ex_data 8507f0d17dSschwarze.Fa "TYPE *d" 8607f0d17dSschwarze.Fa "int idx" 8707f0d17dSschwarze.Fa "void *arg" 8807f0d17dSschwarze.Fc 8907f0d17dSschwarze.Ft void * 9007f0d17dSschwarze.Fo TYPE_get_ex_data 9107f0d17dSschwarze.Fa "TYPE *d" 9207f0d17dSschwarze.Fa "int idx" 9307f0d17dSschwarze.Fc 94b76794fbSschwarze.Ft int 95b76794fbSschwarze.Fo TYPE_set_app_data 96b76794fbSschwarze.Fa "TYPE *d" 97b76794fbSschwarze.Fa "void *arg" 98b76794fbSschwarze.Fc 99b76794fbSschwarze.Ft void * 100b76794fbSschwarze.Fo TYPE_get_app_data 101b76794fbSschwarze.Fa "TYPE *d" 102b76794fbSschwarze.Fc 10307f0d17dSschwarze.Sh DESCRIPTION 10407f0d17dSschwarzeIn the description here, 10507f0d17dSschwarze.Vt TYPE 10607f0d17dSschwarzeis used a placeholder for any of the OpenSSL datatypes listed in 10707f0d17dSschwarze.Xr CRYPTO_get_ex_new_index 3 . 10807f0d17dSschwarze.Pp 1093db22ef2SschwarzeThese functions handle application-specific data in OpenSSL data 11007f0d17dSschwarzestructures. 1113db22ef2SschwarzeTheir usage is identical to that of 1123db22ef2Sschwarze.Xr RSA_get_ex_new_index 3 , 1133db22ef2Sschwarze.Xr RSA_set_ex_data 3 , 1143db22ef2Sschwarzeand 1153db22ef2Sschwarze.Xr RSA_get_ex_data 3 . 11607f0d17dSschwarze.Pp 11707f0d17dSschwarze.Fn TYPE_get_ex_new_index 11807f0d17dSschwarzeis a macro that calls 11907f0d17dSschwarze.Xr CRYPTO_get_ex_new_index 3 12007f0d17dSschwarzewith the correct index value. 12107f0d17dSschwarze.Pp 12207f0d17dSschwarze.Fn TYPE_set_ex_data 12307f0d17dSschwarzeis a function that calls 12407f0d17dSschwarze.Xr CRYPTO_set_ex_data 3 125630561b5Sschwarzewith an offset into the opaque ex_data part of the 12607f0d17dSschwarze.Vt TYPE 12707f0d17dSschwarzeobject. 12807f0d17dSschwarze.Pp 12907f0d17dSschwarze.Fn TYPE_get_ex_data 13007f0d17dSschwarzeis a function that calls 13107f0d17dSschwarze.Xr CRYPTO_get_ex_data 3 132630561b5Sschwarzewith an offset into the opaque ex_data part of the 13307f0d17dSschwarze.Vt TYPE 13407f0d17dSschwarzeobject. 135b76794fbSschwarze.Pp 136b76794fbSschwarze.Fn TYPE_set_app_data 137b76794fbSschwarzeand 138b76794fbSschwarze.Fn TYPE_get_app_data 13989729f59Sschwarzeare deprecated wrapper macros that call 140b76794fbSschwarze.Fn TYPE_set_ex_data 141b76794fbSschwarzeand 142b76794fbSschwarze.Fn TYPE_get_ex_data 143b76794fbSschwarzewith 144b76794fbSschwarze.Fa idx 145b76794fbSschwarzeset to 0. 146fe84aa80Sschwarze.Sh RETURN VALUES 147fe84aa80Sschwarze.Fn TYPE_get_new_ex_index 148fe84aa80Sschwarzereturns a new index on success or \-1 on error. 149fe84aa80Sschwarze.Pp 150fe84aa80Sschwarze.Fn TYPE_set_ex_data 151b76794fbSschwarzeand 152b76794fbSschwarze.Fn TYPE_set_app_data 153b76794fbSschwarzereturn 1 on success or 0 on error. 154fe84aa80Sschwarze.Pp 155fe84aa80Sschwarze.Fn TYPE_get_ex_data 156b76794fbSschwarzeand 157b76794fbSschwarze.Fn TYPE_get_app_data 158b76794fbSschwarzereturn the application data or 159fe84aa80Sschwarze.Dv NULL 160fe84aa80Sschwarzeif an error occurred. 16107f0d17dSschwarze.Sh SEE ALSO 162c4c55c71Sschwarze.Xr BIO_new 3 , 163dc754f73Sschwarze.Xr CRYPTO_get_ex_new_index 3 , 164c4c55c71Sschwarze.Xr RSA_get_ex_new_index 3 , 165c4c55c71Sschwarze.Xr X509_new 3 16630205016Sschwarze.Sh HISTORY 167b76794fbSschwarze.Fn BIO_set_app_data 168b76794fbSschwarzeand 169b76794fbSschwarze.Fn BIO_get_app_data 170b76794fbSschwarzefirst appeared in SSLeay 0.8.1. 17130205016Sschwarze.Fn BIO_get_ex_new_index , 17230205016Sschwarze.Fn BIO_set_ex_data , 17330205016Sschwarzeand 17430205016Sschwarze.Fn BIO_get_ex_data 175b76794fbSschwarzefirst appeared in SSLeay 0.9.0. 176b76794fbSschwarzeThese functions have been available since 17730205016Sschwarze.Ox 2.4 . 178958c08b5Sschwarze.Pp 179958c08b5Sschwarze.Fn X509_get_ex_new_index , 180958c08b5Sschwarze.Fn X509_set_ex_data , 181958c08b5Sschwarzeand 182958c08b5Sschwarze.Fn X509_get_ex_data 183958c08b5Sschwarzefirst appeared in OpenSSL 0.9.5 and have been available since 184958c08b5Sschwarze.Ox 2.7 . 18580d1afcdSschwarze.Pp 18680d1afcdSschwarze.Fn UI_get_ex_new_index , 18780d1afcdSschwarze.Fn UI_set_ex_data , 18880d1afcdSschwarzeand 18980d1afcdSschwarze.Fn UI_get_ex_data 19080d1afcdSschwarzefirst appeared in OpenSSL 0.9.7 and have been available since 19180d1afcdSschwarze.Ox 3.2 . 1922c07bb3bSschwarze.Pp 19357d2e3e7Sschwarze.Fn EC_KEY_get_ex_new_index , 19457d2e3e7Sschwarze.Fn EC_KEY_set_ex_data , 19557d2e3e7Sschwarzeand 19657d2e3e7Sschwarze.Fn EC_KEY_get_ex_data 19757d2e3e7Sschwarzefirst appeared in OpenSSL 1.1.0 and have been available since 19857d2e3e7Sschwarze.Ox 6.5 . 199