]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/man3/X509_NAME_add_entry_by_txt.3
MFC: r359060, r359061, r359066
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / man3 / X509_NAME_add_entry_by_txt.3
1 .\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.40)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .nr rF 0
58 .if \n(.g .if rF .nr rF 1
59 .if (\n(rF:(\n(.g==0)) \{\
60 .    if \nF \{\
61 .        de IX
62 .        tm Index:\\$1\t\\n%\t"\\$2"
63 ..
64 .        if !\nF==2 \{\
65 .            nr % 0
66 .            nr F 2
67 .        \}
68 .    \}
69 .\}
70 .rr rF
71 .\"
72 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
73 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
74 .    \" fudge factors for nroff and troff
75 .if n \{\
76 .    ds #H 0
77 .    ds #V .8m
78 .    ds #F .3m
79 .    ds #[ \f1
80 .    ds #] \fP
81 .\}
82 .if t \{\
83 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
84 .    ds #V .6m
85 .    ds #F 0
86 .    ds #[ \&
87 .    ds #] \&
88 .\}
89 .    \" simple accents for nroff and troff
90 .if n \{\
91 .    ds ' \&
92 .    ds ` \&
93 .    ds ^ \&
94 .    ds , \&
95 .    ds ~ ~
96 .    ds /
97 .\}
98 .if t \{\
99 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
100 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
101 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
102 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
103 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
104 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
105 .\}
106 .    \" troff and (daisy-wheel) nroff accents
107 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
108 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
109 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
110 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
111 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
112 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
113 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
114 .ds ae a\h'-(\w'a'u*4/10)'e
115 .ds Ae A\h'-(\w'A'u*4/10)'E
116 .    \" corrections for vroff
117 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
118 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
119 .    \" for low resolution devices (crt and lpr)
120 .if \n(.H>23 .if \n(.V>19 \
121 \{\
122 .    ds : e
123 .    ds 8 ss
124 .    ds o a
125 .    ds d- d\h'-1'\(ga
126 .    ds D- D\h'-1'\(hy
127 .    ds th \o'bp'
128 .    ds Th \o'LP'
129 .    ds ae ae
130 .    ds Ae AE
131 .\}
132 .rm #[ #] #H #V #F C
133 .\" ========================================================================
134 .\"
135 .IX Title "X509_NAME_ADD_ENTRY_BY_TXT 3"
136 .TH X509_NAME_ADD_ENTRY_BY_TXT 3 "2020-03-17" "1.1.1e" "OpenSSL"
137 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
138 .\" way too many mistakes in technical documents.
139 .if n .ad l
140 .nh
141 .SH "NAME"
142 X509_NAME_add_entry_by_txt, X509_NAME_add_entry_by_OBJ, X509_NAME_add_entry_by_NID, X509_NAME_add_entry, X509_NAME_delete_entry \- X509_NAME modification functions
143 .SH "SYNOPSIS"
144 .IX Header "SYNOPSIS"
145 .Vb 1
146 \& #include <openssl/x509.h>
147 \&
148 \& int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
149 \&                                const unsigned char *bytes, int len, int loc, int set);
150 \&
151 \& int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type,
152 \&                                const unsigned char *bytes, int len, int loc, int set);
153 \&
154 \& int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
155 \&                                const unsigned char *bytes, int len, int loc, int set);
156 \&
157 \& int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, int loc, int set);
158 \&
159 \& X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
160 .Ve
161 .SH "DESCRIPTION"
162 .IX Header "DESCRIPTION"
163 \&\fBX509_NAME_add_entry_by_txt()\fR, \fBX509_NAME_add_entry_by_OBJ()\fR and
164 \&\fBX509_NAME_add_entry_by_NID()\fR add a field whose name is defined
165 by a string \fBfield\fR, an object \fBobj\fR or a \s-1NID\s0 \fBnid\fR respectively.
166 The field value to be added is in \fBbytes\fR of length \fBlen\fR. If
167 \&\fBlen\fR is \-1 then the field length is calculated internally using
168 strlen(bytes).
169 .PP
170 The type of field is determined by \fBtype\fR which can either be a
171 definition of the type of \fBbytes\fR (such as \fB\s-1MBSTRING_ASC\s0\fR) or a
172 standard \s-1ASN1\s0 type (such as \fBV_ASN1_IA5STRING\fR). The new entry is
173 added to a position determined by \fBloc\fR and \fBset\fR.
174 .PP
175 \&\fBX509_NAME_add_entry()\fR adds a copy of \fBX509_NAME_ENTRY\fR structure \fBne\fR
176 to \fBname\fR. The new entry is added to a position determined by \fBloc\fR
177 and \fBset\fR. Since a copy of \fBne\fR is added \fBne\fR must be freed up after
178 the call.
179 .PP
180 \&\fBX509_NAME_delete_entry()\fR deletes an entry from \fBname\fR at position
181 \&\fBloc\fR. The deleted entry is returned and must be freed up.
182 .SH "NOTES"
183 .IX Header "NOTES"
184 The use of string types such as \fB\s-1MBSTRING_ASC\s0\fR or \fB\s-1MBSTRING_UTF8\s0\fR
185 is strongly recommended for the \fBtype\fR parameter. This allows the
186 internal code to correctly determine the type of the field and to
187 apply length checks according to the relevant standards. This is
188 done using \fBASN1_STRING_set_by_NID()\fR.
189 .PP
190 If instead an \s-1ASN1\s0 type is used no checks are performed and the
191 supplied data in \fBbytes\fR is used directly.
192 .PP
193 In \fBX509_NAME_add_entry_by_txt()\fR the \fBfield\fR string represents
194 the field name using OBJ_txt2obj(field, 0).
195 .PP
196 The \fBloc\fR and \fBset\fR parameters determine where a new entry should
197 be added. For almost all applications \fBloc\fR can be set to \-1 and \fBset\fR
198 to 0. This adds a new entry to the end of \fBname\fR as a single valued
199 RelativeDistinguishedName (\s-1RDN\s0).
200 .PP
201 \&\fBloc\fR actually determines the index where the new entry is inserted:
202 if it is \-1 it is appended.
203 .PP
204 \&\fBset\fR determines how the new type is added. If it is zero a
205 new \s-1RDN\s0 is created.
206 .PP
207 If \fBset\fR is \-1 or 1 it is added to the previous or next \s-1RDN\s0
208 structure respectively. This will then be a multivalued \s-1RDN:\s0
209 since multivalues RDNs are very seldom used \fBset\fR is almost
210 always set to zero.
211 .SH "RETURN VALUES"
212 .IX Header "RETURN VALUES"
213 \&\fBX509_NAME_add_entry_by_txt()\fR, \fBX509_NAME_add_entry_by_OBJ()\fR,
214 \&\fBX509_NAME_add_entry_by_NID()\fR and \fBX509_NAME_add_entry()\fR return 1 for
215 success of 0 if an error occurred.
216 .PP
217 \&\fBX509_NAME_delete_entry()\fR returns either the deleted \fBX509_NAME_ENTRY\fR
218 structure of \fB\s-1NULL\s0\fR if an error occurred.
219 .SH "EXAMPLES"
220 .IX Header "EXAMPLES"
221 Create an \fBX509_NAME\fR structure:
222 .PP
223 \&\*(L"C=UK, O=Disorganized Organization, CN=Joe Bloggs\*(R"
224 .PP
225 .Vb 1
226 \& X509_NAME *nm;
227 \&
228 \& nm = X509_NAME_new();
229 \& if (nm == NULL)
230 \&     /* Some error */
231 \& if (!X509_NAME_add_entry_by_txt(nm, "C", MBSTRING_ASC,
232 \&                                 "UK", \-1, \-1, 0))
233 \&     /* Error */
234 \& if (!X509_NAME_add_entry_by_txt(nm, "O", MBSTRING_ASC,
235 \&                                 "Disorganized Organization", \-1, \-1, 0))
236 \&     /* Error */
237 \& if (!X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC,
238 \&                                 "Joe Bloggs", \-1, \-1, 0))
239 \&     /* Error */
240 .Ve
241 .SH "BUGS"
242 .IX Header "BUGS"
243 \&\fBtype\fR can still be set to \fBV_ASN1_APP_CHOOSE\fR to use a
244 different algorithm to determine field types. Since this form does
245 not understand multicharacter types, performs no length checks and
246 can result in invalid field types its use is strongly discouraged.
247 .SH "SEE ALSO"
248 .IX Header "SEE ALSO"
249 \&\fBERR_get_error\fR\|(3), \fBd2i_X509_NAME\fR\|(3)
250 .SH "COPYRIGHT"
251 .IX Header "COPYRIGHT"
252 Copyright 2002\-2019 The OpenSSL Project Authors. All Rights Reserved.
253 .PP
254 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
255 this file except in compliance with the License.  You can obtain a copy
256 in the file \s-1LICENSE\s0 in the source distribution or at
257 <https://www.openssl.org/source/license.html>.