Merge from vendor branch GPERF:
[dragonfly.git] / secure / lib / libssl / man / SSL_CTX_use_certificate.3
1 .\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sh \" Subsection heading
6 .br
7 .if t .Sp
8 .ne 5
9 .PP
10 \fB\\$1\fR
11 .PP
12 ..
13 .de Sp \" Vertical space (when we can't use .PP)
14 .if t .sp .5v
15 .if n .sp
16 ..
17 .de Vb \" Begin verbatim text
18 .ft CW
19 .nf
20 .ne \\$1
21 ..
22 .de Ve \" End verbatim text
23 .ft R
24 .fi
25 ..
26 .\" Set up some character translations and predefined strings.  \*(-- will
27 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28 .\" double quote, and \*(R" will give a right double quote.  | will give a
29 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
30 .\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
31 .\" expand to `' in nroff, nothing in troff, for use with C<>.
32 .tr \(*W-|\(bv\*(Tr
33 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34 .ie n \{\
35 .    ds -- \(*W-
36 .    ds PI pi
37 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
39 .    ds L" ""
40 .    ds R" ""
41 .    ds C` ""
42 .    ds C' ""
43 'br\}
44 .el\{\
45 .    ds -- \|\(em\|
46 .    ds PI \(*p
47 .    ds L" ``
48 .    ds R" ''
49 'br\}
50 .\"
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53 .\" entries marked with X<> in POD.  Of course, you'll have to process the
54 .\" output yourself in some meaningful fashion.
55 .if \nF \{\
56 .    de IX
57 .    tm Index:\\$1\t\\n%\t"\\$2"
58 ..
59 .    nr % 0
60 .    rr F
61 .\}
62 .\"
63 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
64 .\" way too many mistakes in technical documents.
65 .hy 0
66 .if n .na
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 "SSL_CTX_use_certificate 3"
132 .TH SSL_CTX_use_certificate 3 "2004-12-22" "0.9.7e" "OpenSSL"
133 .SH "NAME"
134 SSL_CTX_use_certificate, SSL_CTX_use_certificate_ASN1, SSL_CTX_use_certificate_file, SSL_use_certificate, SSL_use_certificate_ASN1, SSL_use_certificate_file, SSL_CTX_use_certificate_chain_file, SSL_CTX_use_PrivateKey, SSL_CTX_use_PrivateKey_ASN1, SSL_CTX_use_PrivateKey_file, SSL_CTX_use_RSAPrivateKey, SSL_CTX_use_RSAPrivateKey_ASN1, SSL_CTX_use_RSAPrivateKey_file, SSL_use_PrivateKey_file, SSL_use_PrivateKey_ASN1, SSL_use_PrivateKey, SSL_use_RSAPrivateKey, SSL_use_RSAPrivateKey_ASN1, SSL_use_RSAPrivateKey_file, SSL_CTX_check_private_key, SSL_check_private_key \- load certificate and key data
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 .Vb 1
138 \& #include <openssl/ssl.h>
139 .Ve
140 .PP
141 .Vb 6
142 \& int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
143 \& int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d);
144 \& int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
145 \& int SSL_use_certificate(SSL *ssl, X509 *x);
146 \& int SSL_use_certificate_ASN1(SSL *ssl, unsigned char *d, int len);
147 \& int SSL_use_certificate_file(SSL *ssl, const char *file, int type);
148 .Ve
149 .PP
150 .Vb 1
151 \& int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
152 .Ve
153 .PP
154 .Vb 13
155 \& int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
156 \& int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, unsigned char *d,
157 \&                                 long len);
158 \& int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
159 \& int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
160 \& int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
161 \& int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type);
162 \& int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
163 \& int SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, unsigned char *d, long len);
164 \& int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
165 \& int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
166 \& int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len);
167 \& int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
168 .Ve
169 .PP
170 .Vb 2
171 \& int SSL_CTX_check_private_key(SSL_CTX *ctx);
172 \& int SSL_check_private_key(SSL *ssl);
173 .Ve
174 .SH "DESCRIPTION"
175 .IX Header "DESCRIPTION"
176 These functions load the certificates and private keys into the \s-1SSL_CTX\s0
177 or \s-1SSL\s0 object, respectively.
178 .PP
179 The SSL_CTX_* class of functions loads the certificates and keys into the
180 \&\s-1SSL_CTX\s0 object \fBctx\fR. The information is passed to \s-1SSL\s0 objects \fBssl\fR
181 created from \fBctx\fR with \fISSL_new\fR\|(3) by copying, so that
182 changes applied to \fBctx\fR do not propagate to already existing \s-1SSL\s0 objects.
183 .PP
184 The SSL_* class of functions only loads certificates and keys into a
185 specific \s-1SSL\s0 object. The specific information is kept, when
186 \&\fISSL_clear\fR\|(3) is called for this \s-1SSL\s0 object.
187 .PP
188 \&\fISSL_CTX_use_certificate()\fR loads the certificate \fBx\fR into \fBctx\fR,
189 \&\fISSL_use_certificate()\fR loads \fBx\fR into \fBssl\fR. The rest of the
190 certificates needed to form the complete certificate chain can be
191 specified using the
192 \&\fISSL_CTX_add_extra_chain_cert\fR\|(3)
193 function.
194 .PP
195 \&\fISSL_CTX_use_certificate_ASN1()\fR loads the \s-1ASN1\s0 encoded certificate from
196 the memory location \fBd\fR (with length \fBlen\fR) into \fBctx\fR,
197 \&\fISSL_use_certificate_ASN1()\fR loads the \s-1ASN1\s0 encoded certificate into \fBssl\fR.
198 .PP
199 \&\fISSL_CTX_use_certificate_file()\fR loads the first certificate stored in \fBfile\fR
200 into \fBctx\fR. The formatting \fBtype\fR of the certificate must be specified
201 from the known types \s-1SSL_FILETYPE_PEM\s0, \s-1SSL_FILETYPE_ASN1\s0.
202 \&\fISSL_use_certificate_file()\fR loads the certificate from \fBfile\fR into \fBssl\fR.
203 See the \s-1NOTES\s0 section on why \fISSL_CTX_use_certificate_chain_file()\fR
204 should be preferred.
205 .PP
206 \&\fISSL_CTX_use_certificate_chain_file()\fR loads a certificate chain from 
207 \&\fBfile\fR into \fBctx\fR. The certificates must be in \s-1PEM\s0 format and must
208 be sorted starting with the subject's certificate (actual client or server
209 certificate), followed by intermediate \s-1CA\s0 certificates if applicable, and
210 ending at the highest level (root) \s-1CA\s0.
211 There is no corresponding function working on a single \s-1SSL\s0 object.
212 .PP
213 \&\fISSL_CTX_use_PrivateKey()\fR adds \fBpkey\fR as private key to \fBctx\fR.
214 \&\fISSL_CTX_use_RSAPrivateKey()\fR adds the private key \fBrsa\fR of type \s-1RSA\s0
215 to \fBctx\fR. \fISSL_use_PrivateKey()\fR adds \fBpkey\fR as private key to \fBssl\fR;
216 \&\fISSL_use_RSAPrivateKey()\fR adds \fBrsa\fR as private key of type \s-1RSA\s0 to \fBssl\fR.
217 .PP
218 \&\fISSL_CTX_use_PrivateKey_ASN1()\fR adds the private key of type \fBpk\fR
219 stored at memory location \fBd\fR (length \fBlen\fR) to \fBctx\fR.
220 \&\fISSL_CTX_use_RSAPrivateKey_ASN1()\fR adds the private key of type \s-1RSA\s0
221 stored at memory location \fBd\fR (length \fBlen\fR) to \fBctx\fR.
222 \&\fISSL_use_PrivateKey_ASN1()\fR and \fISSL_use_RSAPrivateKey_ASN1()\fR add the private
223 key to \fBssl\fR.
224 .PP
225 \&\fISSL_CTX_use_PrivateKey_file()\fR adds the first private key found in
226 \&\fBfile\fR to \fBctx\fR. The formatting \fBtype\fR of the certificate must be specified
227 from the known types \s-1SSL_FILETYPE_PEM\s0, \s-1SSL_FILETYPE_ASN1\s0.
228 \&\fISSL_CTX_use_RSAPrivateKey_file()\fR adds the first private \s-1RSA\s0 key found in
229 \&\fBfile\fR to \fBctx\fR. \fISSL_use_PrivateKey_file()\fR adds the first private key found
230 in \fBfile\fR to \fBssl\fR; \fISSL_use_RSAPrivateKey_file()\fR adds the first private
231 \&\s-1RSA\s0 key found to \fBssl\fR.
232 .PP
233 \&\fISSL_CTX_check_private_key()\fR checks the consistency of a private key with
234 the corresponding certificate loaded into \fBctx\fR. If more than one
235 key/certificate pair (\s-1RSA/DSA\s0) is installed, the last item installed will
236 be checked. If e.g. the last item was a \s-1RSA\s0 certificate or key, the \s-1RSA\s0
237 key/certificate pair will be checked. \fISSL_check_private_key()\fR performs
238 the same check for \fBssl\fR. If no key/certificate was explicitly added for
239 this \fBssl\fR, the last item added into \fBctx\fR will be checked.
240 .SH "NOTES"
241 .IX Header "NOTES"
242 The internal certificate store of OpenSSL can hold two private key/certificate
243 pairs at a time: one key/certificate of type \s-1RSA\s0 and one key/certificate
244 of type \s-1DSA\s0. The certificate used depends on the cipher select, see
245 also \fISSL_CTX_set_cipher_list\fR\|(3).
246 .PP
247 When reading certificates and private keys from file, files of type
248 \&\s-1SSL_FILETYPE_ASN1\s0 (also known as \fB\s-1DER\s0\fR, binary encoding) can only contain
249 one certificate or private key, consequently 
250 \&\fISSL_CTX_use_certificate_chain_file()\fR is only applicable to \s-1PEM\s0 formatting.
251 Files of type \s-1SSL_FILETYPE_PEM\s0 can contain more than one item.
252 .PP
253 \&\fISSL_CTX_use_certificate_chain_file()\fR adds the first certificate found
254 in the file to the certificate store. The other certificates are added
255 to the store of chain certificates using
256 \&\fISSL_CTX_add_extra_chain_cert\fR\|(3).
257 There exists only one extra chain store, so that the same chain is appended
258 to both types of certificates, \s-1RSA\s0 and \s-1DSA\s0! If it is not intended to use
259 both type of certificate at the same time, it is recommended to use the
260 \&\fISSL_CTX_use_certificate_chain_file()\fR instead of the
261 \&\fISSL_CTX_use_certificate_file()\fR function in order to allow the use of
262 complete certificate chains even when no trusted \s-1CA\s0 storage is used or
263 when the \s-1CA\s0 issuing the certificate shall not be added to the trusted
264 \&\s-1CA\s0 storage.
265 .PP
266 If additional certificates are needed to complete the chain during the
267 \&\s-1TLS\s0 negotiation, \s-1CA\s0 certificates are additionally looked up in the
268 locations of trusted \s-1CA\s0 certificates, see
269 \&\fISSL_CTX_load_verify_locations\fR\|(3).
270 .PP
271 The private keys loaded from file can be encrypted. In order to successfully
272 load encrypted keys, a function returning the passphrase must have been
273 supplied, see
274 \&\fISSL_CTX_set_default_passwd_cb\fR\|(3).
275 (Certificate files might be encrypted as well from the technical point
276 of view, it however does not make sense as the data in the certificate
277 is considered public anyway.)
278 .SH "RETURN VALUES"
279 .IX Header "RETURN VALUES"
280 On success, the functions return 1.
281 Otherwise check out the error stack to find out the reason.
282 .SH "SEE ALSO"
283 .IX Header "SEE ALSO"
284 \&\fIssl\fR\|(3), \fISSL_new\fR\|(3), \fISSL_clear\fR\|(3),
285 \&\fISSL_CTX_load_verify_locations\fR\|(3),
286 \&\fISSL_CTX_set_default_passwd_cb\fR\|(3),
287 \&\fISSL_CTX_set_cipher_list\fR\|(3),
288 \&\fISSL_CTX_set_client_cert_cb\fR\|(3),
289 \&\fISSL_CTX_add_extra_chain_cert\fR\|(3)