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