xref: /openbsd-src/lib/libcrypto/man/BIO_get_ex_new_index.3 (revision a70cbf0f7f5635e03d4d9120760ec9d413815292)
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