Remove building with NOCRYPTO option
[minix.git] / crypto / external / bsd / openssl / lib / libcrypto / man / SSL_CTX_use_certificate.3
blob71eea01b01b2f74ad500e912a9f3a167337091ef
1 .\"     $NetBSD: SSL_CTX_use_certificate.3,v 1.14 2015/06/12 17:01:14 christos Exp $
2 .\"
3 .\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28)
4 .\"
5 .\" Standard preamble:
6 .\" ========================================================================
7 .de Sp \" Vertical space (when we can't use .PP)
8 .if t .sp .5v
9 .if n .sp
11 .de Vb \" Begin verbatim text
12 .ft CW
13 .nf
14 .ne \\$1
16 .de Ve \" End verbatim text
17 .ft R
18 .fi
20 .\" Set up some character translations and predefined strings.  \*(-- will
21 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
22 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
23 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
24 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
25 .\" nothing in troff, for use with C<>.
26 .tr \(*W-
27 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
28 .ie n \{\
29 .    ds -- \(*W-
30 .    ds PI pi
31 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
32 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
33 .    ds L" ""
34 .    ds R" ""
35 .    ds C` ""
36 .    ds C' ""
37 'br\}
38 .el\{\
39 .    ds -- \|\(em\|
40 .    ds PI \(*p
41 .    ds L" ``
42 .    ds R" ''
43 .    ds C`
44 .    ds C'
45 'br\}
46 .\"
47 .\" Escape single quotes in literal strings from groff's Unicode transform.
48 .ie \n(.g .ds Aq \(aq
49 .el       .ds Aq '
50 .\"
51 .\" If the F register is turned on, we'll generate index entries on stderr for
52 .\" titles (.TH), headers (.SH), subsections (.SS), 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 .\"
56 .\" Avoid warning from groff about undefined register 'F'.
57 .de IX
59 .nr rF 0
60 .if \n(.g .if rF .nr rF 1
61 .if (\n(rF:(\n(.g==0)) \{
62 .    if \nF \{
63 .        de IX
64 .        tm Index:\\$1\t\\n%\t"\\$2"
66 .        if !\nF==2 \{
67 .            nr % 0
68 .            nr F 2
69 .        \}
70 .    \}
71 .\}
72 .rr rF
73 .\"
74 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
75 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
76 .    \" fudge factors for nroff and troff
77 .if n \{\
78 .    ds #H 0
79 .    ds #V .8m
80 .    ds #F .3m
81 .    ds #[ \f1
82 .    ds #] \fP
83 .\}
84 .if t \{\
85 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
86 .    ds #V .6m
87 .    ds #F 0
88 .    ds #[ \&
89 .    ds #] \&
90 .\}
91 .    \" simple accents for nroff and troff
92 .if n \{\
93 .    ds ' \&
94 .    ds ` \&
95 .    ds ^ \&
96 .    ds , \&
97 .    ds ~ ~
98 .    ds /
99 .\}
100 .if t \{\
101 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
102 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
103 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
104 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
105 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
106 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
108 .    \" troff and (daisy-wheel) nroff accents
109 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
110 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
111 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
112 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
113 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
114 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
115 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
116 .ds ae a\h'-(\w'a'u*4/10)'e
117 .ds Ae A\h'-(\w'A'u*4/10)'E
118 .    \" corrections for vroff
119 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
120 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
121 .    \" for low resolution devices (crt and lpr)
122 .if \n(.H>23 .if \n(.V>19 \
124 .    ds : e
125 .    ds 8 ss
126 .    ds o a
127 .    ds d- d\h'-1'\(ga
128 .    ds D- D\h'-1'\(hy
129 .    ds th \o'bp'
130 .    ds Th \o'LP'
131 .    ds ae ae
132 .    ds Ae AE
134 .rm #[ #] #H #V #F C
135 .\" ========================================================================
137 .IX Title "SSL_CTX_use_certificate 3"
138 .TH SSL_CTX_use_certificate 3 "2009-07-19" "1.0.1n" "OpenSSL"
139 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
140 .\" way too many mistakes in technical documents.
141 .if n .ad l
143 .SH "NAME"
144 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
145 .SH "LIBRARY"
146 libcrypto, -lcrypto
147 .SH "SYNOPSIS"
148 .IX Header "SYNOPSIS"
149 .Vb 1
150 \& #include <openssl/ssl.h>
152 \& int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
153 \& int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, unsigned char *d);
154 \& int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);
155 \& int SSL_use_certificate(SSL *ssl, X509 *x);
156 \& int SSL_use_certificate_ASN1(SSL *ssl, unsigned char *d, int len);
157 \& int SSL_use_certificate_file(SSL *ssl, const char *file, int type);
159 \& int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file);
161 \& int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
162 \& int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, unsigned char *d,
163 \&                                 long len);
164 \& int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);
165 \& int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
166 \& int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
167 \& int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, int type);
168 \& int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
169 \& int SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, unsigned char *d, long len);
170 \& int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type);
171 \& int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
172 \& int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len);
173 \& int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type);
175 \& int SSL_CTX_check_private_key(const SSL_CTX *ctx);
176 \& int SSL_check_private_key(const SSL *ssl);
178 .SH "DESCRIPTION"
179 .IX Header "DESCRIPTION"
180 These functions load the certificates and private keys into the \s-1SSL_CTX\s0
181 or \s-1SSL\s0 object, respectively.
183 The SSL_CTX_* class of functions loads the certificates and keys into the
184 \&\s-1SSL_CTX\s0 object \fBctx\fR. The information is passed to \s-1SSL\s0 objects \fBssl\fR
185 created from \fBctx\fR with \fISSL_new\fR\|(3) by copying, so that
186 changes applied to \fBctx\fR do not propagate to already existing \s-1SSL\s0 objects.
188 The SSL_* class of functions only loads certificates and keys into a
189 specific \s-1SSL\s0 object. The specific information is kept, when
190 \&\fISSL_clear\fR\|(3) is called for this \s-1SSL\s0 object.
192 \&\fISSL_CTX_use_certificate()\fR loads the certificate \fBx\fR into \fBctx\fR,
193 \&\fISSL_use_certificate()\fR loads \fBx\fR into \fBssl\fR. The rest of the
194 certificates needed to form the complete certificate chain can be
195 specified using the
196 \&\fISSL_CTX_add_extra_chain_cert\fR\|(3)
197 function.
199 \&\fISSL_CTX_use_certificate_ASN1()\fR loads the \s-1ASN1\s0 encoded certificate from
200 the memory location \fBd\fR (with length \fBlen\fR) into \fBctx\fR,
201 \&\fISSL_use_certificate_ASN1()\fR loads the \s-1ASN1\s0 encoded certificate into \fBssl\fR.
203 \&\fISSL_CTX_use_certificate_file()\fR loads the first certificate stored in \fBfile\fR
204 into \fBctx\fR. The formatting \fBtype\fR of the certificate must be specified
205 from the known types \s-1SSL_FILETYPE_PEM, SSL_FILETYPE_ASN1.\s0
206 \&\fISSL_use_certificate_file()\fR loads the certificate from \fBfile\fR into \fBssl\fR.
207 See the \s-1NOTES\s0 section on why \fISSL_CTX_use_certificate_chain_file()\fR
208 should be preferred.
210 \&\fISSL_CTX_use_certificate_chain_file()\fR loads a certificate chain from
211 \&\fBfile\fR into \fBctx\fR. The certificates must be in \s-1PEM\s0 format and must
212 be sorted starting with the subject's certificate (actual client or server
213 certificate), followed by intermediate \s-1CA\s0 certificates if applicable, and
214 ending at the highest level (root) \s-1CA.\s0
215 There is no corresponding function working on a single \s-1SSL\s0 object.
217 \&\fISSL_CTX_use_PrivateKey()\fR adds \fBpkey\fR as private key to \fBctx\fR.
218 \&\fISSL_CTX_use_RSAPrivateKey()\fR adds the private key \fBrsa\fR of type \s-1RSA\s0
219 to \fBctx\fR. \fISSL_use_PrivateKey()\fR adds \fBpkey\fR as private key to \fBssl\fR;
220 \&\fISSL_use_RSAPrivateKey()\fR adds \fBrsa\fR as private key of type \s-1RSA\s0 to \fBssl\fR.
221 If a certificate has already been set and the private does not belong
222 to the certificate an error is returned. To change a certificate, private
223 key pair the new certificate needs to be set with \fISSL_use_certificate()\fR
224 or \fISSL_CTX_use_certificate()\fR before setting the private key with
225 \&\fISSL_CTX_use_PrivateKey()\fR or \fISSL_use_PrivateKey()\fR.
227 \&\fISSL_CTX_use_PrivateKey_ASN1()\fR adds the private key of type \fBpk\fR
228 stored at memory location \fBd\fR (length \fBlen\fR) to \fBctx\fR.
229 \&\fISSL_CTX_use_RSAPrivateKey_ASN1()\fR adds the private key of type \s-1RSA\s0
230 stored at memory location \fBd\fR (length \fBlen\fR) to \fBctx\fR.
231 \&\fISSL_use_PrivateKey_ASN1()\fR and \fISSL_use_RSAPrivateKey_ASN1()\fR add the private
232 key to \fBssl\fR.
234 \&\fISSL_CTX_use_PrivateKey_file()\fR adds the first private key found in
235 \&\fBfile\fR to \fBctx\fR. The formatting \fBtype\fR of the certificate must be specified
236 from the known types \s-1SSL_FILETYPE_PEM, SSL_FILETYPE_ASN1.\s0
237 \&\fISSL_CTX_use_RSAPrivateKey_file()\fR adds the first private \s-1RSA\s0 key found in
238 \&\fBfile\fR to \fBctx\fR. \fISSL_use_PrivateKey_file()\fR adds the first private key found
239 in \fBfile\fR to \fBssl\fR; \fISSL_use_RSAPrivateKey_file()\fR adds the first private
240 \&\s-1RSA\s0 key found to \fBssl\fR.
242 \&\fISSL_CTX_check_private_key()\fR checks the consistency of a private key with
243 the corresponding certificate loaded into \fBctx\fR. If more than one
244 key/certificate pair (\s-1RSA/DSA\s0) is installed, the last item installed will
245 be checked. If e.g. the last item was a \s-1RSA\s0 certificate or key, the \s-1RSA\s0
246 key/certificate pair will be checked. \fISSL_check_private_key()\fR performs
247 the same check for \fBssl\fR. If no key/certificate was explicitly added for
248 this \fBssl\fR, the last item added into \fBctx\fR will be checked.
249 .SH "NOTES"
250 .IX Header "NOTES"
251 The internal certificate store of OpenSSL can hold two private key/certificate
252 pairs at a time: one key/certificate of type \s-1RSA\s0 and one key/certificate
253 of type \s-1DSA.\s0 The certificate used depends on the cipher select, see
254 also \fISSL_CTX_set_cipher_list\fR\|(3).
256 When reading certificates and private keys from file, files of type
257 \&\s-1SSL_FILETYPE_ASN1 \s0(also known as \fB\s-1DER\s0\fR, binary encoding) can only contain
258 one certificate or private key, consequently
259 \&\fISSL_CTX_use_certificate_chain_file()\fR is only applicable to \s-1PEM\s0 formatting.
260 Files of type \s-1SSL_FILETYPE_PEM\s0 can contain more than one item.
262 \&\fISSL_CTX_use_certificate_chain_file()\fR adds the first certificate found
263 in the file to the certificate store. The other certificates are added
264 to the store of chain certificates using
265 \&\fISSL_CTX_add_extra_chain_cert\fR\|(3).
266 There exists only one extra chain store, so that the same chain is appended
267 to both types of certificates, \s-1RSA\s0 and \s-1DSA\s0! If it is not intended to use
268 both type of certificate at the same time, it is recommended to use the
269 \&\fISSL_CTX_use_certificate_chain_file()\fR instead of the
270 \&\fISSL_CTX_use_certificate_file()\fR function in order to allow the use of
271 complete certificate chains even when no trusted \s-1CA\s0 storage is used or
272 when the \s-1CA\s0 issuing the certificate shall not be added to the trusted
273 \&\s-1CA\s0 storage.
275 If additional certificates are needed to complete the chain during the
276 \&\s-1TLS\s0 negotiation, \s-1CA\s0 certificates are additionally looked up in the
277 locations of trusted \s-1CA\s0 certificates, see
278 \&\fISSL_CTX_load_verify_locations\fR\|(3).
280 The private keys loaded from file can be encrypted. In order to successfully
281 load encrypted keys, a function returning the passphrase must have been
282 supplied, see
283 \&\fISSL_CTX_set_default_passwd_cb\fR\|(3).
284 (Certificate files might be encrypted as well from the technical point
285 of view, it however does not make sense as the data in the certificate
286 is considered public anyway.)
287 .SH "RETURN VALUES"
288 .IX Header "RETURN VALUES"
289 On success, the functions return 1.
290 Otherwise check out the error stack to find out the reason.
291 .SH "SEE ALSO"
292 .IX Header "SEE ALSO"
293 \&\fIssl\fR\|(3), \fISSL_new\fR\|(3), \fISSL_clear\fR\|(3),
294 \&\fISSL_CTX_load_verify_locations\fR\|(3),
295 \&\fISSL_CTX_set_default_passwd_cb\fR\|(3),
296 \&\fISSL_CTX_set_cipher_list\fR\|(3),
297 \&\fISSL_CTX_set_client_cert_cb\fR\|(3),
298 \&\fISSL_CTX_add_extra_chain_cert\fR\|(3)
299 .SH "HISTORY"
300 .IX Header "HISTORY"
301 Support for \s-1DER\s0 encoded private keys (\s-1SSL_FILETYPE_ASN1\s0) in
302 \&\fISSL_CTX_use_PrivateKey_file()\fR and \fISSL_use_PrivateKey_file()\fR was added
303 in 0.9.8 .