xref: /openbsd-src/lib/libcrypto/man/X509_OBJECT_get0_X509.3 (revision 1ab0fb16cd2eeda70532cc3cc762896d30f22f56)
1*1ab0fb16Sjsg.\" $OpenBSD: X509_OBJECT_get0_X509.3,v 1.14 2022/01/15 23:38:50 jsg Exp $
24819803bSschwarze.\"
34819803bSschwarze.\" Copyright (c) 2018, 2021 Ingo Schwarze <schwarze@openbsd.org>
4c2fe39a3Sschwarze.\"
5c2fe39a3Sschwarze.\" Permission to use, copy, modify, and distribute this software for any
6c2fe39a3Sschwarze.\" purpose with or without fee is hereby granted, provided that the above
7c2fe39a3Sschwarze.\" copyright notice and this permission notice appear in all copies.
8c2fe39a3Sschwarze.\"
9c2fe39a3Sschwarze.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10c2fe39a3Sschwarze.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11c2fe39a3Sschwarze.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12c2fe39a3Sschwarze.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13c2fe39a3Sschwarze.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14c2fe39a3Sschwarze.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15c2fe39a3Sschwarze.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16c2fe39a3Sschwarze.\"
17*1ab0fb16Sjsg.Dd $Mdocdate: January 15 2022 $
18c2fe39a3Sschwarze.Dt X509_OBJECT_GET0_X509 3
19c2fe39a3Sschwarze.Os
20c2fe39a3Sschwarze.Sh NAME
2179249c64Sschwarze.Nm X509_OBJECT_get_type ,
224819803bSschwarze.Nm X509_OBJECT_new ,
23c2fe39a3Sschwarze.Nm X509_OBJECT_up_ref_count ,
24c2fe39a3Sschwarze.Nm X509_OBJECT_free_contents ,
254819803bSschwarze.Nm X509_OBJECT_free ,
26c2fe39a3Sschwarze.Nm X509_OBJECT_get0_X509 ,
27c2fe39a3Sschwarze.Nm X509_OBJECT_get0_X509_CRL ,
28c2fe39a3Sschwarze.Nm X509_OBJECT_idx_by_subject ,
29c2fe39a3Sschwarze.Nm X509_OBJECT_retrieve_by_subject ,
30c2fe39a3Sschwarze.Nm X509_OBJECT_retrieve_match
31c2fe39a3Sschwarze.Nd certificate, CRL, private key, and string wrapper for certificate stores
32c2fe39a3Sschwarze.Sh SYNOPSIS
33c2fe39a3Sschwarze.In openssl/x509_vfy.h
346d5a2d04Sschwarze.Ft X509_LOOKUP_TYPE
3579249c64Sschwarze.Fo X509_OBJECT_get_type
3679249c64Sschwarze.Fa "const X509_OBJECT *obj"
3779249c64Sschwarze.Fc
384819803bSschwarze.Ft X509_OBJECT *
394819803bSschwarze.Fo X509_OBJECT_new
404819803bSschwarze.Fa void
414819803bSschwarze.Fc
42439dd128Stb.Ft int
43c2fe39a3Sschwarze.Fo X509_OBJECT_up_ref_count
44c2fe39a3Sschwarze.Fa "X509_OBJECT *obj"
45c2fe39a3Sschwarze.Fc
46c2fe39a3Sschwarze.Ft void
47c2fe39a3Sschwarze.Fo X509_OBJECT_free_contents
48c2fe39a3Sschwarze.Fa "X509_OBJECT *obj"
49c2fe39a3Sschwarze.Fc
504819803bSschwarze.Ft void
514819803bSschwarze.Fo X509_OBJECT_free
524819803bSschwarze.Fa "X509_OBJECT *obj"
534819803bSschwarze.Fc
54c2fe39a3Sschwarze.Ft X509 *
55c2fe39a3Sschwarze.Fo X509_OBJECT_get0_X509
56c2fe39a3Sschwarze.Fa "const X509_OBJECT *obj"
57c2fe39a3Sschwarze.Fc
58c2fe39a3Sschwarze.Ft X509_CRL *
59c2fe39a3Sschwarze.Fo X509_OBJECT_get0_X509_CRL
60c2fe39a3Sschwarze.Fa "X509_OBJECT *obj"
61c2fe39a3Sschwarze.Fc
62c2fe39a3Sschwarze.Ft int
63c2fe39a3Sschwarze.Fo X509_OBJECT_idx_by_subject
64c2fe39a3Sschwarze.Fa "STACK_OF(X509_OBJECT) *stack"
656d5a2d04Sschwarze.Fa "X509_LOOKUP_TYPE type"
66c2fe39a3Sschwarze.Fa "X509_NAME *name"
67c2fe39a3Sschwarze.Fc
68c2fe39a3Sschwarze.Ft X509_OBJECT *
69c2fe39a3Sschwarze.Fo X509_OBJECT_retrieve_by_subject
70c2fe39a3Sschwarze.Fa "STACK_OF(X509_OBJECT) *stack"
716d5a2d04Sschwarze.Fa "X509_LOOKUP_TYPE type"
72c2fe39a3Sschwarze.Fa "X509_NAME *name"
73c2fe39a3Sschwarze.Fc
74c2fe39a3Sschwarze.Ft X509_OBJECT *
75c2fe39a3Sschwarze.Fo X509_OBJECT_retrieve_match
76c2fe39a3Sschwarze.Fa "STACK_OF(X509_OBJECT) *stack"
77c2fe39a3Sschwarze.Fa "X509_OBJECT *obj"
78c2fe39a3Sschwarze.Fc
79c2fe39a3Sschwarze.Sh DESCRIPTION
80c2fe39a3SschwarzeThe
81c2fe39a3Sschwarze.Vt X509_OBJECT
82c2fe39a3Sschwarzestructure is a shallow wrapper around one
83c2fe39a3Sschwarze.Vt X509
844819803bSschwarzecertificate object or one
85c2fe39a3Sschwarze.Vt X509_CRL
864819803bSschwarzecertificate revocation list object.
8779249c64SschwarzeThe type of object stored at any given time can be inspected with
8879249c64Sschwarze.Fn X509_OBJECT_get_type .
89c2fe39a3Sschwarze.Pp
90c2fe39a3SschwarzeEach
91c2fe39a3Sschwarze.Vt X509_STORE
92c2fe39a3Sschwarzeobject uses one stack of
93c2fe39a3Sschwarze.Vt X509_OBJECT
94c2fe39a3Sschwarzestructures as its main storage area.
95c2fe39a3Sschwarze.Pp
964819803bSschwarze.Fn X509_OBJECT_new
974819803bSschwarzeallocates a new
984819803bSschwarze.Vt X509_OBJECT
994819803bSschwarzestructure.
1004819803bSschwarzeIt sets the object type to
1014819803bSschwarze.Dv X509_LU_NONE
1024819803bSschwarzeand the pointer to the certificate or CRL to
1034819803bSschwarze.Dv NULL .
1044819803bSschwarze.Pp
105c2fe39a3SschwarzeIf
106c2fe39a3Sschwarze.Fa obj
107c2fe39a3Sschwarzecontains an
108c2fe39a3Sschwarze.Vt X509
109c2fe39a3Sschwarzecertificate or an
110c2fe39a3Sschwarze.Vt X509_CRL
111c2fe39a3Sschwarzecertificate revocation list,
112c2fe39a3Sschwarze.Fn X509_OBJECT_up_ref_count
113c2fe39a3Sschwarzeincrements the reference count of that inner object by 1.
114c2fe39a3SschwarzeOtherwise, no action occurs.
115c2fe39a3Sschwarze.Pp
116c2fe39a3SschwarzeIf
117c2fe39a3Sschwarze.Fa obj
118c2fe39a3Sschwarzecontains an
119c2fe39a3Sschwarze.Vt X509
120c2fe39a3Sschwarzecertificate,
121c2fe39a3Sschwarze.Fn X509_OBJECT_free_contents
122c2fe39a3Sschwarzecalls
123c2fe39a3Sschwarze.Xr X509_free 3
124c2fe39a3Sschwarzeon that inner object.
125c2fe39a3SschwarzeIf
126c2fe39a3Sschwarze.Fa obj
127c2fe39a3Sschwarzecontains an
128c2fe39a3Sschwarze.Vt X509_CRL
129c2fe39a3Sschwarzecertificate revocation list, it calls
130c2fe39a3Sschwarze.Xr X509_CRL_free 3
131c2fe39a3Sschwarzeon that inner list.
132c2fe39a3SschwarzeOtherwise, no action occurs.
133c2fe39a3Sschwarze.Fn X509_OBJECT_free_contents
134c2fe39a3Sschwarzedoes not free
135c2fe39a3Sschwarze.Fa obj
136c2fe39a3Sschwarzeitself.
137c2fe39a3Sschwarze.Pp
1384819803bSschwarze.Fn X509_OBJECT_free
1394819803bSschwarzecalls
1404819803bSschwarze.Fn X509_OBJECT_free_contents
1414819803bSschwarzeand then frees the storage used for the
1424819803bSschwarze.Fa obj
1434819803bSschwarzeitself.
1444819803bSschwarze.Pp
145c2fe39a3SschwarzeIf
146c2fe39a3Sschwarze.Fa type
147c2fe39a3Sschwarzeis
148c2fe39a3Sschwarze.Dv X509_LU_X509 ,
149c2fe39a3Sschwarze.Fn X509_OBJECT_idx_by_subject
150c2fe39a3Sschwarzeand
151c2fe39a3Sschwarze.Fn X509_OBJECT_retrieve_by_subject
152c2fe39a3Sschwarzesearch the given
153c2fe39a3Sschwarze.Fa stack
154c2fe39a3Sschwarzefor a certificate with the subject
155c2fe39a3Sschwarze.Fa name .
156c2fe39a3SschwarzeIf
157c2fe39a3Sschwarze.Fa type
158c2fe39a3Sschwarzeis
159c2fe39a3Sschwarze.Dv X509_LU_CRL ,
160c2fe39a3Sschwarzethey search for a certificate revocation list with the issuer
161c2fe39a3Sschwarze.Fa name
162c2fe39a3Sschwarzeinstead.
163c2fe39a3Sschwarze.Pp
164c2fe39a3SschwarzeIf
165c2fe39a3Sschwarze.Fa obj
166c2fe39a3Sschwarzecontains a certificate,
167c2fe39a3Sschwarze.Fn X509_OBJECT_retrieve_match
168c2fe39a3Sschwarzesearches the given
169c2fe39a3Sschwarze.Fa stack
170c2fe39a3Sschwarzefor a certificate with a matching subject name;
171c2fe39a3Sschwarzeif it contains a certificate revocation list, it searches for a
172c2fe39a3Sschwarzecertificate revocation list with a matching issuer name instead;
173c2fe39a3Sschwarzeotherwise, it searches for an
174c2fe39a3Sschwarze.Vt X509_OBJECT
175c2fe39a3Sschwarzewith a matching type.
176c2fe39a3Sschwarze.Sh RETURN VALUES
17779249c64Sschwarze.Fn X509_OBJECT_get_type
17879249c64Sschwarzereturns
17979249c64Sschwarze.Dv X509_LU_X509
18079249c64Sschwarzeif
18179249c64Sschwarze.Fa obj
18279249c64Sschwarzecontains a certificate,
18379249c64Sschwarze.Dv X509_LU_CRL
1844819803bSschwarzeif it contains a certificate revocation list, or
1854819803bSschwarze.Dv X509_LU_NONE
1864819803bSschwarzeif it contains neither.
18779249c64Sschwarze.Pp
188439dd128Stb.Fn X509_OBJECT_up_ref_count
189439dd128Stbreturns 1 on success and 0 on failure.
190439dd128Stb.Pp
1914819803bSschwarze.Fn X509_OBJECT_new
1924819803bSschwarzereturns the new object or
1934819803bSschwarze.Dv NULL
1944819803bSschwarzeif memory allocation fails.
1954819803bSschwarze.Pp
196c2fe39a3Sschwarze.Fn X509_OBJECT_get0_X509
197c2fe39a3Sschwarzereturns an internal pointer to the certificate contained in
198c2fe39a3Sschwarze.Fa obj
199c2fe39a3Sschwarzeor
200c2fe39a3Sschwarze.Dv NULL
201c2fe39a3Sschwarzeif
202c2fe39a3Sschwarze.Fa obj
203c2fe39a3Sschwarzeis
204c2fe39a3Sschwarze.Dv NULL
205c2fe39a3Sschwarzeor contains no certificate.
206c2fe39a3Sschwarze.Pp
207c2fe39a3Sschwarze.Fn X509_OBJECT_get0_X509_CRL
208c2fe39a3Sschwarzereturns an internal pointer to the certificate revocation list contained in
209c2fe39a3Sschwarze.Fa obj
210c2fe39a3Sschwarzeor
211c2fe39a3Sschwarze.Dv NULL
212c2fe39a3Sschwarzeif
213c2fe39a3Sschwarze.Fa obj
214c2fe39a3Sschwarzeis
215c2fe39a3Sschwarze.Dv NULL
216c2fe39a3Sschwarzeor contains no certificate revocation list.
217c2fe39a3Sschwarze.Pp
218c2fe39a3Sschwarze.Fn X509_OBJECT_idx_by_subject
219c2fe39a3Sschwarzereturns the zero-based index of the first matching certificate
220c2fe39a3Sschwarzeor revocation list in the
221c2fe39a3Sschwarze.Fa stack
222c2fe39a3Sschwarzeor \-1 if
223c2fe39a3Sschwarze.Fa type
224c2fe39a3Sschwarzeis neither
225c2fe39a3Sschwarze.Dv X509_LU_X509
226c2fe39a3Sschwarzenor
227c2fe39a3Sschwarze.Dv X509_LU_CRL
228c2fe39a3Sschwarzeor if no match is found.
229c2fe39a3Sschwarze.Pp
230c2fe39a3Sschwarze.Fn X509_OBJECT_retrieve_by_subject
231c2fe39a3Sschwarzereturns the first matching certificate or revocation list in the
232c2fe39a3Sschwarze.Fa stack
233c2fe39a3Sschwarzeor
234c2fe39a3Sschwarze.Dv NULL
235c2fe39a3Sschwarzeif
236c2fe39a3Sschwarze.Fa type
237c2fe39a3Sschwarzeis neither
238c2fe39a3Sschwarze.Dv X509_LU_X509
239c2fe39a3Sschwarzenor
240c2fe39a3Sschwarze.Dv X509_LU_CRL
241c2fe39a3Sschwarzeor if no match is found.
242c2fe39a3Sschwarze.Pp
243c2fe39a3Sschwarze.Fn X509_OBJECT_retrieve_match
244*1ab0fb16Sjsgreturns the first matching
245c2fe39a3Sschwarze.Vt X509_OBJECT
246c2fe39a3Sschwarzeor
247c2fe39a3Sschwarze.Dv NULL
248c2fe39a3Sschwarzeif
249c2fe39a3Sschwarze.Fa stack
250c2fe39a3Sschwarzeor
251c2fe39a3Sschwarze.Fa obj
252c2fe39a3Sschwarzeis
253c2fe39a3Sschwarze.Dv NULL
254c2fe39a3Sschwarzeor no match is found.
255c2fe39a3Sschwarze.Sh SEE ALSO
2564819803bSschwarze.Xr STACK_OF 3 ,
257c4c55c71Sschwarze.Xr X509_CRL_new 3 ,
25814316a9bSschwarze.Xr X509_LOOKUP_new 3 ,
259c4c55c71Sschwarze.Xr X509_NAME_new 3 ,
2604819803bSschwarze.Xr X509_new 3 ,
261e349b5c6Sschwarze.Xr X509_STORE_get0_objects 3 ,
26284b283a3Sschwarze.Xr X509_STORE_get_by_subject 3 ,
263c2fe39a3Sschwarze.Xr X509_STORE_load_locations 3 ,
264c2fe39a3Sschwarze.Xr X509_STORE_new 3
265479b9fd1Sschwarze.Sh HISTORY
266479b9fd1Sschwarze.Fn X509_OBJECT_up_ref_count
267479b9fd1Sschwarzeand
268479b9fd1Sschwarze.Fn X509_OBJECT_free_contents
26910e00d17Sschwarzefirst appeared in SSLeay 0.8.0 and have been available since
270479b9fd1Sschwarze.Ox 2.4 .
271e4d74d94Sschwarze.Pp
272e4d74d94Sschwarze.Fn X509_OBJECT_idx_by_subject ,
273e4d74d94Sschwarze.Fn X509_OBJECT_retrieve_by_subject ,
274e4d74d94Sschwarzeand
275e4d74d94Sschwarze.Fn X509_OBJECT_retrieve_match
276e4d74d94Sschwarzefirst appeared in OpenSSL 0.9.6 and have been available since
277e4d74d94Sschwarze.Ox 2.9 .
2784b12da35Sschwarze.Pp
27979249c64Sschwarze.Fn X509_OBJECT_get_type ,
28079249c64Sschwarze.Fn X509_OBJECT_get0_X509 ,
2814b12da35Sschwarzeand
2824b12da35Sschwarze.Fn X509_OBJECT_get0_X509_CRL
2834b12da35Sschwarzefirst appeared in OpenSSL 1.1.0 and have been available since
2844b12da35Sschwarze.Ox 6.3 .
2854819803bSschwarze.Pp
2864819803bSschwarze.Fn X509_OBJECT_new
2874819803bSschwarzeand
2884819803bSschwarze.Fn X509_OBJECT_free
2894819803bSschwarzefirst appeared in OpenSSL 1.1.0 and have been available since
2904819803bSschwarze.Ox 7.1 .
291