]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3
Merge OpenSSL 1.0.2q.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / X509_NAME_add_entry_by_txt.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
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 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "X509_NAME_add_entry_by_txt 3"
132 .TH X509_NAME_add_entry_by_txt 3 "2018-11-20" "1.0.2q" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 X509_NAME_add_entry_by_txt, X509_NAME_add_entry_by_OBJ, X509_NAME_add_entry_by_NID,
139 X509_NAME_add_entry, X509_NAME_delete_entry \- X509_NAME modification functions
140 .SH "SYNOPSIS"
141 .IX Header "SYNOPSIS"
142 .Vb 1
143 \& #include <openssl/x509.h>
144 \&
145 \& int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, const unsigned char *bytes, int len, int loc, int set);
146 \&
147 \& int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, unsigned char *bytes, int len, int loc, int set);
148 \&
149 \& int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, unsigned char *bytes, int len, int loc, int set);
150 \&
151 \& int X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne, int loc, int set);
152 \&
153 \& X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
154 .Ve
155 .SH "DESCRIPTION"
156 .IX Header "DESCRIPTION"
157 \&\fIX509_NAME_add_entry_by_txt()\fR, \fIX509_NAME_add_entry_by_OBJ()\fR and
158 \&\fIX509_NAME_add_entry_by_NID()\fR add a field whose name is defined
159 by a string \fBfield\fR, an object \fBobj\fR or a \s-1NID\s0 \fBnid\fR respectively.
160 The field value to be added is in \fBbytes\fR of length \fBlen\fR. If
161 \&\fBlen\fR is \-1 then the field length is calculated internally using
162 strlen(bytes).
163 .PP
164 The type of field is determined by \fBtype\fR which can either be a
165 definition of the type of \fBbytes\fR (such as \fB\s-1MBSTRING_ASC\s0\fR) or a
166 standard \s-1ASN1\s0 type (such as \fBV_ASN1_IA5STRING\fR). The new entry is
167 added to a position determined by \fBloc\fR and \fBset\fR.
168 .PP
169 \&\fIX509_NAME_add_entry()\fR adds a copy of \fBX509_NAME_ENTRY\fR structure \fBne\fR
170 to \fBname\fR. The new entry is added to a position determined by \fBloc\fR
171 and \fBset\fR. Since a copy of \fBne\fR is added \fBne\fR must be freed up after
172 the call.
173 .PP
174 \&\fIX509_NAME_delete_entry()\fR deletes an entry from \fBname\fR at position
175 \&\fBloc\fR. The deleted entry is returned and must be freed up.
176 .SH "NOTES"
177 .IX Header "NOTES"
178 The use of string types such as \fB\s-1MBSTRING_ASC\s0\fR or \fB\s-1MBSTRING_UTF8\s0\fR
179 is strongly recommended for the \fBtype\fR parameter. This allows the
180 internal code to correctly determine the type of the field and to
181 apply length checks according to the relevant standards. This is
182 done using \fIASN1_STRING_set_by_NID()\fR.
183 .PP
184 If instead an \s-1ASN1\s0 type is used no checks are performed and the
185 supplied data in \fBbytes\fR is used directly.
186 .PP
187 In \fIX509_NAME_add_entry_by_txt()\fR the \fBfield\fR string represents
188 the field name using OBJ_txt2obj(field, 0).
189 .PP
190 The \fBloc\fR and \fBset\fR parameters determine where a new entry should
191 be added. For almost all applications \fBloc\fR can be set to \-1 and \fBset\fR
192 to 0. This adds a new entry to the end of \fBname\fR as a single valued
193 RelativeDistinguishedName (\s-1RDN\s0).
194 .PP
195 \&\fBloc\fR actually determines the index where the new entry is inserted:
196 if it is \-1 it is appended.
197 .PP
198 \&\fBset\fR determines how the new type is added. If it is zero a
199 new \s-1RDN\s0 is created.
200 .PP
201 If \fBset\fR is \-1 or 1 it is added to the previous or next \s-1RDN\s0
202 structure respectively. This will then be a multivalued \s-1RDN:\s0
203 since multivalues RDNs are very seldom used \fBset\fR is almost
204 always set to zero.
205 .SH "EXAMPLES"
206 .IX Header "EXAMPLES"
207 Create an \fBX509_NAME\fR structure:
208 .PP
209 \&\*(L"C=UK, O=Disorganized Organization, CN=Joe Bloggs\*(R"
210 .PP
211 .Vb 10
212 \& X509_NAME *nm;
213 \& nm = X509_NAME_new();
214 \& if (nm == NULL)
215 \&        /* Some error */
216 \& if (!X509_NAME_add_entry_by_txt(nm, "C", MBSTRING_ASC, 
217 \&                        "UK", \-1, \-1, 0))
218 \&        /* Error */
219 \& if (!X509_NAME_add_entry_by_txt(nm, "O", MBSTRING_ASC,
220 \&                        "Disorganized Organization", \-1, \-1, 0))
221 \&        /* Error */
222 \& if (!X509_NAME_add_entry_by_txt(nm, "CN", MBSTRING_ASC,
223 \&                        "Joe Bloggs", \-1, \-1, 0))
224 \&        /* Error */
225 .Ve
226 .SH "RETURN VALUES"
227 .IX Header "RETURN VALUES"
228 \&\fIX509_NAME_add_entry_by_txt()\fR, \fIX509_NAME_add_entry_by_OBJ()\fR,
229 \&\fIX509_NAME_add_entry_by_NID()\fR and \fIX509_NAME_add_entry()\fR return 1 for
230 success of 0 if an error occurred.
231 .PP
232 \&\fIX509_NAME_delete_entry()\fR returns either the deleted \fBX509_NAME_ENTRY\fR
233 structure of \fB\s-1NULL\s0\fR if an error occurred.
234 .SH "BUGS"
235 .IX Header "BUGS"
236 \&\fBtype\fR can still be set to \fBV_ASN1_APP_CHOOSE\fR to use a
237 different algorithm to determine field types. Since this form does
238 not understand multicharacter types, performs no length checks and
239 can result in invalid field types its use is strongly discouraged.
240 .SH "SEE ALSO"
241 .IX Header "SEE ALSO"
242 \&\fIERR_get_error\fR\|(3), \fId2i_X509_NAME\fR\|(3)
243 .SH "HISTORY"
244 .IX Header "HISTORY"