1 .\" $OpenBSD: X509_NAME_ENTRY_get_object.3,v 1.12 2018/05/19 21:25:51 schwarze Exp $
2 .\" full merge up to: OpenSSL aebb9aac Jul 19 09:27:53 2016 -0400
3 .\" selective merge up to: OpenSSL 61f805c1 Jan 16 01:01:46 2018 +0800
5 .\" This file is a derived work.
6 .\" The changes are covered by the following Copyright and license:
8 .\" Copyright (c) 2016 Ingo Schwarze <schwarze@openbsd.org>
10 .\" Permission to use, copy, modify, and distribute this software for any
11 .\" purpose with or without fee is hereby granted, provided that the above
12 .\" copyright notice and this permission notice appear in all copies.
14 .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
15 .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
16 .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
17 .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
18 .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
19 .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20 .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
22 .\" The original file was written by Dr. Stephen Henson <steve@openssl.org>.
23 .\" Copyright (c) 2002, 2005, 2006, 2017 The OpenSSL Project.
24 .\" All rights reserved.
26 .\" Redistribution and use in source and binary forms, with or without
27 .\" modification, are permitted provided that the following conditions
30 .\" 1. Redistributions of source code must retain the above copyright
31 .\" notice, this list of conditions and the following disclaimer.
33 .\" 2. Redistributions in binary form must reproduce the above copyright
34 .\" notice, this list of conditions and the following disclaimer in
35 .\" the documentation and/or other materials provided with the
38 .\" 3. All advertising materials mentioning features or use of this
39 .\" software must display the following acknowledgment:
40 .\" "This product includes software developed by the OpenSSL Project
41 .\" for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
43 .\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
44 .\" endorse or promote products derived from this software without
45 .\" prior written permission. For written permission, please contact
46 .\" openssl-core@openssl.org.
48 .\" 5. Products derived from this software may not be called "OpenSSL"
49 .\" nor may "OpenSSL" appear in their names without prior written
50 .\" permission of the OpenSSL Project.
52 .\" 6. Redistributions of any form whatsoever must retain the following
54 .\" "This product includes software developed by the OpenSSL Project
55 .\" for use in the OpenSSL Toolkit (http://www.openssl.org/)"
57 .\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
58 .\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
59 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
60 .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
61 .\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
62 .\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
63 .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
64 .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
65 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
66 .\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
67 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
68 .\" OF THE POSSIBILITY OF SUCH DAMAGE.
70 .Dd $Mdocdate: May 19 2018 $
71 .Dt X509_NAME_ENTRY_GET_OBJECT 3
74 .Nm X509_NAME_ENTRY_new ,
75 .Nm X509_NAME_ENTRY_free ,
76 .Nm X509_NAME_ENTRY_get_object ,
77 .Nm X509_NAME_ENTRY_get_data ,
78 .Nm X509_NAME_ENTRY_set_object ,
79 .Nm X509_NAME_ENTRY_set_data ,
80 .Nm X509_NAME_ENTRY_create_by_txt ,
81 .Nm X509_NAME_ENTRY_create_by_NID ,
82 .Nm X509_NAME_ENTRY_create_by_OBJ
83 .\" In the following line, "X.501" is not a typo.
84 .\" This object defined in X.501, not in X.509.
85 .Nd X.501 relative distinguished name
89 .Fn X509_NAME_ENTRY_new void
91 .Fo X509_NAME_ENTRY_free
92 .Fa "X509_NAME_ENTRY* ne"
95 .Fo X509_NAME_ENTRY_get_object
96 .Fa "const X509_NAME_ENTRY *ne"
99 .Fo X509_NAME_ENTRY_get_data
100 .Fa "const X509_NAME_ENTRY *ne"
103 .Fo X509_NAME_ENTRY_set_object
104 .Fa "X509_NAME_ENTRY *ne"
105 .Fa "const ASN1_OBJECT *obj"
108 .Fo X509_NAME_ENTRY_set_data
109 .Fa "X509_NAME_ENTRY *ne"
111 .Fa "const unsigned char *bytes"
114 .Ft X509_NAME_ENTRY *
115 .Fo X509_NAME_ENTRY_create_by_txt
116 .Fa "X509_NAME_ENTRY **ne"
117 .Fa "const char *field"
119 .Fa "const unsigned char *bytes"
122 .Ft X509_NAME_ENTRY *
123 .Fo X509_NAME_ENTRY_create_by_NID
124 .Fa "X509_NAME_ENTRY **ne"
127 .Fa "const unsigned char *bytes"
130 .Ft X509_NAME_ENTRY *
131 .Fo X509_NAME_ENTRY_create_by_OBJ
132 .Fa "X509_NAME_ENTRY **ne"
133 .Fa "const ASN1_OBJECT *obj"
135 .Fa "const unsigned char *bytes"
140 .Vt RelativeDistinguishedName
141 is a set of field type and value pairs.
142 It is the building block for constructing X.501
145 This implementation only supports sets with one element, so an
147 object contains only one field type and one value.
149 .Fn X509_NAME_ENTRY_new
150 allocates and initializes an empty
152 object, representing an ASN.1
153 .Vt RelativeDistinguishedName
154 structure defined in RFC 5280 section 4.1.2.4.
156 .Fn X509_NAME_ENTRY_free
159 and the type and value contained in it.
161 .Fn X509_NAME_ENTRY_get_object
162 retrieves the field type of
167 .Fn X509_NAME_ENTRY_get_data
168 retrieves the field value of
173 These two functions can be used to examine an
175 object as returned by
176 .Xr X509_NAME_get_entry 3 .
178 .Fn X509_NAME_ENTRY_set_object
179 sets the field type of
184 .Fn X509_NAME_ENTRY_set_data
185 sets the field value of
189 and the value determined by
194 .Fn X509_NAME_ENTRY_create_by_txt ,
195 .Fn X509_NAME_ENTRY_create_by_NID ,
197 .Fn X509_NAME_ENTRY_create_by_OBJ
203 .Fn X509_NAME_ENTRY_get_object
205 .Fn X509_NAME_ENTRY_get_data ,
206 these functions are rarely used because
208 structures are almost always part of
210 structures and the functions described in
211 .Xr X509_NAME_add_entry_by_txt 3
212 are typically used to create and add new entries in a single operation.
214 The arguments of these functions support similar options to the
215 similarly named ones described in
216 .Xr X509_NAME_add_entry_by_txt 3 .
222 .Fn X509_NAME_ENTRY_set_data
223 the field type must be set first so the relevant field information
224 can be looked up internally.
226 .Fn X509_NAME_ENTRY_new ,
227 .Fn X509_NAME_ENTRY_create_by_txt ,
228 .Fn X509_NAME_ENTRY_create_by_NID ,
230 .Fn X509_NAME_ENTRY_create_by_OBJ
233 structure on success or
235 if an error occurred.
237 .Fn X509_NAME_ENTRY_get_object
240 structure if it is set or
242 if an error occurred.
244 .Fn X509_NAME_ENTRY_get_data
247 structure if it is set or
249 if an error occurred.
251 .Fn X509_NAME_ENTRY_set_object
253 .Fn X509_NAME_ENTRY_set_data
254 return 1 on success or 0 on error.
256 .Xr ERR_get_error 3 ,
258 .Xr X509_NAME_add_entry 3 ,
259 .Xr X509_NAME_get_entry 3 ,
262 RFC 5280: Internet X.509 Public Key Infrastructure Certificate and
263 Certificate Revocation List (CRL) Profile
265 ITU-T Recommendation X.501, also known as ISO/IEC 9594-2: Information
266 Technology Open Systems Interconnection The Directory: Models,
267 section 9.3: Relative distinguished name
269 .Fn X509_NAME_ENTRY_new
271 .Fn X509_NAME_ENTRY_free
272 first appeared in SSLeay 0.5.1.
273 .Fn X509_NAME_ENTRY_get_object ,
274 .Fn X509_NAME_ENTRY_get_data ,
275 .Fn X509_NAME_ENTRY_set_object ,
276 .Fn X509_NAME_ENTRY_set_data ,
277 .Fn X509_NAME_ENTRY_create_by_NID ,
279 .Fn X509_NAME_ENTRY_create_by_OBJ
280 first appeared in SSLeay 0.8.0.
281 These functions have been available since
284 .Fn X509_NAME_ENTRY_create_by_txt
285 first appeared in OpenSSL 0.9.5 and has been available since