xref: /onnv-gate/usr/src/common/openssl/doc/ssl/ssl.pod (revision 2175:b0b2f052a486)
1*2175Sjp161948
2*2175Sjp161948=pod
3*2175Sjp161948
4*2175Sjp161948=head1 NAME
5*2175Sjp161948
6*2175Sjp161948SSL - OpenSSL SSL/TLS library
7*2175Sjp161948
8*2175Sjp161948=head1 SYNOPSIS
9*2175Sjp161948
10*2175Sjp161948=head1 DESCRIPTION
11*2175Sjp161948
12*2175Sjp161948The OpenSSL B<ssl> library implements the Secure Sockets Layer (SSL v2/v3) and
13*2175Sjp161948Transport Layer Security (TLS v1) protocols. It provides a rich API which is
14*2175Sjp161948documented here.
15*2175Sjp161948
16*2175Sjp161948At first the library must be initialized; see
17*2175Sjp161948L<SSL_library_init(3)|SSL_library_init(3)>.
18*2175Sjp161948
19*2175Sjp161948Then an B<SSL_CTX> object is created as a framework to establish
20*2175Sjp161948TLS/SSL enabled connections (see L<SSL_CTX_new(3)|SSL_CTX_new(3)>).
21*2175Sjp161948Various options regarding certificates, algorithms etc. can be set
22*2175Sjp161948in this object.
23*2175Sjp161948
24*2175Sjp161948When a network connection has been created, it can be assigned to an
25*2175Sjp161948B<SSL> object. After the B<SSL> object has been created using
26*2175Sjp161948L<SSL_new(3)|SSL_new(3)>, L<SSL_set_fd(3)|SSL_set_fd(3)> or
27*2175Sjp161948L<SSL_set_bio(3)|SSL_set_bio(3)> can be used to associate the network
28*2175Sjp161948connection with the object.
29*2175Sjp161948
30*2175Sjp161948Then the TLS/SSL handshake is performed using
31*2175Sjp161948L<SSL_accept(3)|SSL_accept(3)> or L<SSL_connect(3)|SSL_connect(3)>
32*2175Sjp161948respectively.
33*2175Sjp161948L<SSL_read(3)|SSL_read(3)> and L<SSL_write(3)|SSL_write(3)> are used
34*2175Sjp161948to read and write data on the TLS/SSL connection.
35*2175Sjp161948L<SSL_shutdown(3)|SSL_shutdown(3)> can be used to shut down the
36*2175Sjp161948TLS/SSL connection.
37*2175Sjp161948
38*2175Sjp161948=head1 DATA STRUCTURES
39*2175Sjp161948
40*2175Sjp161948Currently the OpenSSL B<ssl> library functions deals with the following data
41*2175Sjp161948structures:
42*2175Sjp161948
43*2175Sjp161948=over 4
44*2175Sjp161948
45*2175Sjp161948=item B<SSL_METHOD> (SSL Method)
46*2175Sjp161948
47*2175Sjp161948That's a dispatch structure describing the internal B<ssl> library
48*2175Sjp161948methods/functions which implement the various protocol versions (SSLv1, SSLv2
49*2175Sjp161948and TLSv1). It's needed to create an B<SSL_CTX>.
50*2175Sjp161948
51*2175Sjp161948=item B<SSL_CIPHER> (SSL Cipher)
52*2175Sjp161948
53*2175Sjp161948This structure holds the algorithm information for a particular cipher which
54*2175Sjp161948are a core part of the SSL/TLS protocol. The available ciphers are configured
55*2175Sjp161948on a B<SSL_CTX> basis and the actually used ones are then part of the
56*2175Sjp161948B<SSL_SESSION>.
57*2175Sjp161948
58*2175Sjp161948=item B<SSL_CTX> (SSL Context)
59*2175Sjp161948
60*2175Sjp161948That's the global context structure which is created by a server or client
61*2175Sjp161948once per program life-time and which holds mainly default values for the
62*2175Sjp161948B<SSL> structures which are later created for the connections.
63*2175Sjp161948
64*2175Sjp161948=item B<SSL_SESSION> (SSL Session)
65*2175Sjp161948
66*2175Sjp161948This is a structure containing the current TLS/SSL session details for a
67*2175Sjp161948connection: B<SSL_CIPHER>s, client and server certificates, keys, etc.
68*2175Sjp161948
69*2175Sjp161948=item B<SSL> (SSL Connection)
70*2175Sjp161948
71*2175Sjp161948That's the main SSL/TLS structure which is created by a server or client per
72*2175Sjp161948established connection. This actually is the core structure in the SSL API.
73*2175Sjp161948Under run-time the application usually deals with this structure which has
74*2175Sjp161948links to mostly all other structures.
75*2175Sjp161948
76*2175Sjp161948=back
77*2175Sjp161948
78*2175Sjp161948
79*2175Sjp161948=head1 HEADER FILES
80*2175Sjp161948
81*2175Sjp161948Currently the OpenSSL B<ssl> library provides the following C header files
82*2175Sjp161948containing the prototypes for the data structures and and functions:
83*2175Sjp161948
84*2175Sjp161948=over 4
85*2175Sjp161948
86*2175Sjp161948=item B<ssl.h>
87*2175Sjp161948
88*2175Sjp161948That's the common header file for the SSL/TLS API.  Include it into your
89*2175Sjp161948program to make the API of the B<ssl> library available. It internally
90*2175Sjp161948includes both more private SSL headers and headers from the B<crypto> library.
91*2175Sjp161948Whenever you need hard-core details on the internals of the SSL API, look
92*2175Sjp161948inside this header file.
93*2175Sjp161948
94*2175Sjp161948=item B<ssl2.h>
95*2175Sjp161948
96*2175Sjp161948That's the sub header file dealing with the SSLv2 protocol only.
97*2175Sjp161948I<Usually you don't have to include it explicitly because
98*2175Sjp161948it's already included by ssl.h>.
99*2175Sjp161948
100*2175Sjp161948=item B<ssl3.h>
101*2175Sjp161948
102*2175Sjp161948That's the sub header file dealing with the SSLv3 protocol only.
103*2175Sjp161948I<Usually you don't have to include it explicitly because
104*2175Sjp161948it's already included by ssl.h>.
105*2175Sjp161948
106*2175Sjp161948=item B<ssl23.h>
107*2175Sjp161948
108*2175Sjp161948That's the sub header file dealing with the combined use of the SSLv2 and
109*2175Sjp161948SSLv3 protocols.
110*2175Sjp161948I<Usually you don't have to include it explicitly because
111*2175Sjp161948it's already included by ssl.h>.
112*2175Sjp161948
113*2175Sjp161948=item B<tls1.h>
114*2175Sjp161948
115*2175Sjp161948That's the sub header file dealing with the TLSv1 protocol only.
116*2175Sjp161948I<Usually you don't have to include it explicitly because
117*2175Sjp161948it's already included by ssl.h>.
118*2175Sjp161948
119*2175Sjp161948=back
120*2175Sjp161948
121*2175Sjp161948=head1 API FUNCTIONS
122*2175Sjp161948
123*2175Sjp161948Currently the OpenSSL B<ssl> library exports 214 API functions.
124*2175Sjp161948They are documented in the following:
125*2175Sjp161948
126*2175Sjp161948=head2 DEALING WITH PROTOCOL METHODS
127*2175Sjp161948
128*2175Sjp161948Here we document the various API functions which deal with the SSL/TLS
129*2175Sjp161948protocol methods defined in B<SSL_METHOD> structures.
130*2175Sjp161948
131*2175Sjp161948=over 4
132*2175Sjp161948
133*2175Sjp161948=item SSL_METHOD *B<SSLv2_client_method>(void);
134*2175Sjp161948
135*2175Sjp161948Constructor for the SSLv2 SSL_METHOD structure for a dedicated client.
136*2175Sjp161948
137*2175Sjp161948=item SSL_METHOD *B<SSLv2_server_method>(void);
138*2175Sjp161948
139*2175Sjp161948Constructor for the SSLv2 SSL_METHOD structure for a dedicated server.
140*2175Sjp161948
141*2175Sjp161948=item SSL_METHOD *B<SSLv2_method>(void);
142*2175Sjp161948
143*2175Sjp161948Constructor for the SSLv2 SSL_METHOD structure for combined client and server.
144*2175Sjp161948
145*2175Sjp161948=item SSL_METHOD *B<SSLv3_client_method>(void);
146*2175Sjp161948
147*2175Sjp161948Constructor for the SSLv3 SSL_METHOD structure for a dedicated client.
148*2175Sjp161948
149*2175Sjp161948=item SSL_METHOD *B<SSLv3_server_method>(void);
150*2175Sjp161948
151*2175Sjp161948Constructor for the SSLv3 SSL_METHOD structure for a dedicated server.
152*2175Sjp161948
153*2175Sjp161948=item SSL_METHOD *B<SSLv3_method>(void);
154*2175Sjp161948
155*2175Sjp161948Constructor for the SSLv3 SSL_METHOD structure for combined client and server.
156*2175Sjp161948
157*2175Sjp161948=item SSL_METHOD *B<TLSv1_client_method>(void);
158*2175Sjp161948
159*2175Sjp161948Constructor for the TLSv1 SSL_METHOD structure for a dedicated client.
160*2175Sjp161948
161*2175Sjp161948=item SSL_METHOD *B<TLSv1_server_method>(void);
162*2175Sjp161948
163*2175Sjp161948Constructor for the TLSv1 SSL_METHOD structure for a dedicated server.
164*2175Sjp161948
165*2175Sjp161948=item SSL_METHOD *B<TLSv1_method>(void);
166*2175Sjp161948
167*2175Sjp161948Constructor for the TLSv1 SSL_METHOD structure for combined client and server.
168*2175Sjp161948
169*2175Sjp161948=back
170*2175Sjp161948
171*2175Sjp161948=head2 DEALING WITH CIPHERS
172*2175Sjp161948
173*2175Sjp161948Here we document the various API functions which deal with the SSL/TLS
174*2175Sjp161948ciphers defined in B<SSL_CIPHER> structures.
175*2175Sjp161948
176*2175Sjp161948=over 4
177*2175Sjp161948
178*2175Sjp161948=item char *B<SSL_CIPHER_description>(SSL_CIPHER *cipher, char *buf, int len);
179*2175Sjp161948
180*2175Sjp161948Write a string to I<buf> (with a maximum size of I<len>) containing a human
181*2175Sjp161948readable description of I<cipher>. Returns I<buf>.
182*2175Sjp161948
183*2175Sjp161948=item int B<SSL_CIPHER_get_bits>(SSL_CIPHER *cipher, int *alg_bits);
184*2175Sjp161948
185*2175Sjp161948Determine the number of bits in I<cipher>. Because of export crippled ciphers
186*2175Sjp161948there are two bits: The bits the algorithm supports in general (stored to
187*2175Sjp161948I<alg_bits>) and the bits which are actually used (the return value).
188*2175Sjp161948
189*2175Sjp161948=item const char *B<SSL_CIPHER_get_name>(SSL_CIPHER *cipher);
190*2175Sjp161948
191*2175Sjp161948Return the internal name of I<cipher> as a string. These are the various
192*2175Sjp161948strings defined by the I<SSL2_TXT_xxx>, I<SSL3_TXT_xxx> and I<TLS1_TXT_xxx>
193*2175Sjp161948definitions in the header files.
194*2175Sjp161948
195*2175Sjp161948=item char *B<SSL_CIPHER_get_version>(SSL_CIPHER *cipher);
196*2175Sjp161948
197*2175Sjp161948Returns a string like "C<TLSv1/SSLv3>" or "C<SSLv2>" which indicates the
198*2175Sjp161948SSL/TLS protocol version to which I<cipher> belongs (i.e. where it was defined
199*2175Sjp161948in the specification the first time).
200*2175Sjp161948
201*2175Sjp161948=back
202*2175Sjp161948
203*2175Sjp161948=head2 DEALING WITH PROTOCOL CONTEXTS
204*2175Sjp161948
205*2175Sjp161948Here we document the various API functions which deal with the SSL/TLS
206*2175Sjp161948protocol context defined in the B<SSL_CTX> structure.
207*2175Sjp161948
208*2175Sjp161948=over 4
209*2175Sjp161948
210*2175Sjp161948=item int B<SSL_CTX_add_client_CA>(SSL_CTX *ctx, X509 *x);
211*2175Sjp161948
212*2175Sjp161948=item long B<SSL_CTX_add_extra_chain_cert>(SSL_CTX *ctx, X509 *x509);
213*2175Sjp161948
214*2175Sjp161948=item int B<SSL_CTX_add_session>(SSL_CTX *ctx, SSL_SESSION *c);
215*2175Sjp161948
216*2175Sjp161948=item int B<SSL_CTX_check_private_key>(const SSL_CTX *ctx);
217*2175Sjp161948
218*2175Sjp161948=item long B<SSL_CTX_ctrl>(SSL_CTX *ctx, int cmd, long larg, char *parg);
219*2175Sjp161948
220*2175Sjp161948=item void B<SSL_CTX_flush_sessions>(SSL_CTX *s, long t);
221*2175Sjp161948
222*2175Sjp161948=item void B<SSL_CTX_free>(SSL_CTX *a);
223*2175Sjp161948
224*2175Sjp161948=item char *B<SSL_CTX_get_app_data>(SSL_CTX *ctx);
225*2175Sjp161948
226*2175Sjp161948=item X509_STORE *B<SSL_CTX_get_cert_store>(SSL_CTX *ctx);
227*2175Sjp161948
228*2175Sjp161948=item STACK *B<SSL_CTX_get_client_CA_list>(const SSL_CTX *ctx);
229*2175Sjp161948
230*2175Sjp161948=item int (*B<SSL_CTX_get_client_cert_cb>(SSL_CTX *ctx))(SSL *ssl, X509 **x509, EVP_PKEY **pkey);
231*2175Sjp161948
232*2175Sjp161948=item char *B<SSL_CTX_get_ex_data>(const SSL_CTX *s, int idx);
233*2175Sjp161948
234*2175Sjp161948=item int B<SSL_CTX_get_ex_new_index>(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))
235*2175Sjp161948
236*2175Sjp161948=item void (*B<SSL_CTX_get_info_callback>(SSL_CTX *ctx))(SSL *ssl, int cb, int ret);
237*2175Sjp161948
238*2175Sjp161948=item int B<SSL_CTX_get_quiet_shutdown>(const SSL_CTX *ctx);
239*2175Sjp161948
240*2175Sjp161948=item int B<SSL_CTX_get_session_cache_mode>(SSL_CTX *ctx);
241*2175Sjp161948
242*2175Sjp161948=item long B<SSL_CTX_get_timeout>(const SSL_CTX *ctx);
243*2175Sjp161948
244*2175Sjp161948=item int (*B<SSL_CTX_get_verify_callback>(const SSL_CTX *ctx))(int ok, X509_STORE_CTX *ctx);
245*2175Sjp161948
246*2175Sjp161948=item int B<SSL_CTX_get_verify_mode>(SSL_CTX *ctx);
247*2175Sjp161948
248*2175Sjp161948=item int B<SSL_CTX_load_verify_locations>(SSL_CTX *ctx, char *CAfile, char *CApath);
249*2175Sjp161948
250*2175Sjp161948=item long B<SSL_CTX_need_tmp_RSA>(SSL_CTX *ctx);
251*2175Sjp161948
252*2175Sjp161948=item SSL_CTX *B<SSL_CTX_new>(SSL_METHOD *meth);
253*2175Sjp161948
254*2175Sjp161948=item int B<SSL_CTX_remove_session>(SSL_CTX *ctx, SSL_SESSION *c);
255*2175Sjp161948
256*2175Sjp161948=item int B<SSL_CTX_sess_accept>(SSL_CTX *ctx);
257*2175Sjp161948
258*2175Sjp161948=item int B<SSL_CTX_sess_accept_good>(SSL_CTX *ctx);
259*2175Sjp161948
260*2175Sjp161948=item int B<SSL_CTX_sess_accept_renegotiate>(SSL_CTX *ctx);
261*2175Sjp161948
262*2175Sjp161948=item int B<SSL_CTX_sess_cache_full>(SSL_CTX *ctx);
263*2175Sjp161948
264*2175Sjp161948=item int B<SSL_CTX_sess_cb_hits>(SSL_CTX *ctx);
265*2175Sjp161948
266*2175Sjp161948=item int B<SSL_CTX_sess_connect>(SSL_CTX *ctx);
267*2175Sjp161948
268*2175Sjp161948=item int B<SSL_CTX_sess_connect_good>(SSL_CTX *ctx);
269*2175Sjp161948
270*2175Sjp161948=item int B<SSL_CTX_sess_connect_renegotiate>(SSL_CTX *ctx);
271*2175Sjp161948
272*2175Sjp161948=item int B<SSL_CTX_sess_get_cache_size>(SSL_CTX *ctx);
273*2175Sjp161948
274*2175Sjp161948=item SSL_SESSION *(*B<SSL_CTX_sess_get_get_cb>(SSL_CTX *ctx))(SSL *ssl, unsigned char *data, int len, int *copy);
275*2175Sjp161948
276*2175Sjp161948=item int (*B<SSL_CTX_sess_get_new_cb>(SSL_CTX *ctx)(SSL *ssl, SSL_SESSION *sess);
277*2175Sjp161948
278*2175Sjp161948=item void (*B<SSL_CTX_sess_get_remove_cb>(SSL_CTX *ctx)(SSL_CTX *ctx, SSL_SESSION *sess);
279*2175Sjp161948
280*2175Sjp161948=item int B<SSL_CTX_sess_hits>(SSL_CTX *ctx);
281*2175Sjp161948
282*2175Sjp161948=item int B<SSL_CTX_sess_misses>(SSL_CTX *ctx);
283*2175Sjp161948
284*2175Sjp161948=item int B<SSL_CTX_sess_number>(SSL_CTX *ctx);
285*2175Sjp161948
286*2175Sjp161948=item void B<SSL_CTX_sess_set_cache_size>(SSL_CTX *ctx,t);
287*2175Sjp161948
288*2175Sjp161948=item void B<SSL_CTX_sess_set_get_cb>(SSL_CTX *ctx, SSL_SESSION *(*cb)(SSL *ssl, unsigned char *data, int len, int *copy));
289*2175Sjp161948
290*2175Sjp161948=item void B<SSL_CTX_sess_set_new_cb>(SSL_CTX *ctx, int (*cb)(SSL *ssl, SSL_SESSION *sess));
291*2175Sjp161948
292*2175Sjp161948=item void B<SSL_CTX_sess_set_remove_cb>(SSL_CTX *ctx, void (*cb)(SSL_CTX *ctx, SSL_SESSION *sess));
293*2175Sjp161948
294*2175Sjp161948=item int B<SSL_CTX_sess_timeouts>(SSL_CTX *ctx);
295*2175Sjp161948
296*2175Sjp161948=item LHASH *B<SSL_CTX_sessions>(SSL_CTX *ctx);
297*2175Sjp161948
298*2175Sjp161948=item void B<SSL_CTX_set_app_data>(SSL_CTX *ctx, void *arg);
299*2175Sjp161948
300*2175Sjp161948=item void B<SSL_CTX_set_cert_store>(SSL_CTX *ctx, X509_STORE *cs);
301*2175Sjp161948
302*2175Sjp161948=item void B<SSL_CTX_set_cert_verify_cb>(SSL_CTX *ctx, int (*cb)(), char *arg)
303*2175Sjp161948
304*2175Sjp161948=item int B<SSL_CTX_set_cipher_list>(SSL_CTX *ctx, char *str);
305*2175Sjp161948
306*2175Sjp161948=item void B<SSL_CTX_set_client_CA_list>(SSL_CTX *ctx, STACK *list);
307*2175Sjp161948
308*2175Sjp161948=item void B<SSL_CTX_set_client_cert_cb>(SSL_CTX *ctx, int (*cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey));
309*2175Sjp161948
310*2175Sjp161948=item void B<SSL_CTX_set_default_passwd_cb>(SSL_CTX *ctx, int (*cb);(void))
311*2175Sjp161948
312*2175Sjp161948=item void B<SSL_CTX_set_default_read_ahead>(SSL_CTX *ctx, int m);
313*2175Sjp161948
314*2175Sjp161948=item int B<SSL_CTX_set_default_verify_paths>(SSL_CTX *ctx);
315*2175Sjp161948
316*2175Sjp161948=item int B<SSL_CTX_set_ex_data>(SSL_CTX *s, int idx, char *arg);
317*2175Sjp161948
318*2175Sjp161948=item void B<SSL_CTX_set_info_callback>(SSL_CTX *ctx, void (*cb)(SSL *ssl, int cb, int ret));
319*2175Sjp161948
320*2175Sjp161948=item void B<SSL_CTX_set_msg_callback>(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg));
321*2175Sjp161948
322*2175Sjp161948=item void B<SSL_CTX_set_msg_callback_arg>(SSL_CTX *ctx, void *arg);
323*2175Sjp161948
324*2175Sjp161948=item void B<SSL_CTX_set_options>(SSL_CTX *ctx, unsigned long op);
325*2175Sjp161948
326*2175Sjp161948=item void B<SSL_CTX_set_quiet_shutdown>(SSL_CTX *ctx, int mode);
327*2175Sjp161948
328*2175Sjp161948=item void B<SSL_CTX_set_session_cache_mode>(SSL_CTX *ctx, int mode);
329*2175Sjp161948
330*2175Sjp161948=item int B<SSL_CTX_set_ssl_version>(SSL_CTX *ctx, SSL_METHOD *meth);
331*2175Sjp161948
332*2175Sjp161948=item void B<SSL_CTX_set_timeout>(SSL_CTX *ctx, long t);
333*2175Sjp161948
334*2175Sjp161948=item long B<SSL_CTX_set_tmp_dh>(SSL_CTX* ctx, DH *dh);
335*2175Sjp161948
336*2175Sjp161948=item long B<SSL_CTX_set_tmp_dh_callback>(SSL_CTX *ctx, DH *(*cb)(void));
337*2175Sjp161948
338*2175Sjp161948=item long B<SSL_CTX_set_tmp_rsa>(SSL_CTX *ctx, RSA *rsa);
339*2175Sjp161948
340*2175Sjp161948=item SSL_CTX_set_tmp_rsa_callback
341*2175Sjp161948
342*2175Sjp161948C<long B<SSL_CTX_set_tmp_rsa_callback>(SSL_CTX *B<ctx>, RSA *(*B<cb>)(SSL *B<ssl>, int B<export>, int B<keylength>));>
343*2175Sjp161948
344*2175Sjp161948Sets the callback which will be called when a temporary private key is
345*2175Sjp161948required. The B<C<export>> flag will be set if the reason for needing
346*2175Sjp161948a temp key is that an export ciphersuite is in use, in which case,
347*2175Sjp161948B<C<keylength>> will contain the required keylength in bits. Generate a key of
348*2175Sjp161948appropriate size (using ???) and return it.
349*2175Sjp161948
350*2175Sjp161948=item SSL_set_tmp_rsa_callback
351*2175Sjp161948
352*2175Sjp161948long B<SSL_set_tmp_rsa_callback>(SSL *ssl, RSA *(*cb)(SSL *ssl, int export, int keylength));
353*2175Sjp161948
354*2175Sjp161948The same as B<SSL_CTX_set_tmp_rsa_callback>, except it operates on an SSL
355*2175Sjp161948session instead of a context.
356*2175Sjp161948
357*2175Sjp161948=item void B<SSL_CTX_set_verify>(SSL_CTX *ctx, int mode, int (*cb);(void))
358*2175Sjp161948
359*2175Sjp161948=item int B<SSL_CTX_use_PrivateKey>(SSL_CTX *ctx, EVP_PKEY *pkey);
360*2175Sjp161948
361*2175Sjp161948=item int B<SSL_CTX_use_PrivateKey_ASN1>(int type, SSL_CTX *ctx, unsigned char *d, long len);
362*2175Sjp161948
363*2175Sjp161948=item int B<SSL_CTX_use_PrivateKey_file>(SSL_CTX *ctx, char *file, int type);
364*2175Sjp161948
365*2175Sjp161948=item int B<SSL_CTX_use_RSAPrivateKey>(SSL_CTX *ctx, RSA *rsa);
366*2175Sjp161948
367*2175Sjp161948=item int B<SSL_CTX_use_RSAPrivateKey_ASN1>(SSL_CTX *ctx, unsigned char *d, long len);
368*2175Sjp161948
369*2175Sjp161948=item int B<SSL_CTX_use_RSAPrivateKey_file>(SSL_CTX *ctx, char *file, int type);
370*2175Sjp161948
371*2175Sjp161948=item int B<SSL_CTX_use_certificate>(SSL_CTX *ctx, X509 *x);
372*2175Sjp161948
373*2175Sjp161948=item int B<SSL_CTX_use_certificate_ASN1>(SSL_CTX *ctx, int len, unsigned char *d);
374*2175Sjp161948
375*2175Sjp161948=item int B<SSL_CTX_use_certificate_file>(SSL_CTX *ctx, char *file, int type);
376*2175Sjp161948
377*2175Sjp161948=back
378*2175Sjp161948
379*2175Sjp161948=head2 DEALING WITH SESSIONS
380*2175Sjp161948
381*2175Sjp161948Here we document the various API functions which deal with the SSL/TLS
382*2175Sjp161948sessions defined in the B<SSL_SESSION> structures.
383*2175Sjp161948
384*2175Sjp161948=over 4
385*2175Sjp161948
386*2175Sjp161948=item int B<SSL_SESSION_cmp>(const SSL_SESSION *a, const SSL_SESSION *b);
387*2175Sjp161948
388*2175Sjp161948=item void B<SSL_SESSION_free>(SSL_SESSION *ss);
389*2175Sjp161948
390*2175Sjp161948=item char *B<SSL_SESSION_get_app_data>(SSL_SESSION *s);
391*2175Sjp161948
392*2175Sjp161948=item char *B<SSL_SESSION_get_ex_data>(const SSL_SESSION *s, int idx);
393*2175Sjp161948
394*2175Sjp161948=item int B<SSL_SESSION_get_ex_new_index>(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))
395*2175Sjp161948
396*2175Sjp161948=item long B<SSL_SESSION_get_time>(const SSL_SESSION *s);
397*2175Sjp161948
398*2175Sjp161948=item long B<SSL_SESSION_get_timeout>(const SSL_SESSION *s);
399*2175Sjp161948
400*2175Sjp161948=item unsigned long B<SSL_SESSION_hash>(const SSL_SESSION *a);
401*2175Sjp161948
402*2175Sjp161948=item SSL_SESSION *B<SSL_SESSION_new>(void);
403*2175Sjp161948
404*2175Sjp161948=item int B<SSL_SESSION_print>(BIO *bp, const SSL_SESSION *x);
405*2175Sjp161948
406*2175Sjp161948=item int B<SSL_SESSION_print_fp>(FILE *fp, const SSL_SESSION *x);
407*2175Sjp161948
408*2175Sjp161948=item void B<SSL_SESSION_set_app_data>(SSL_SESSION *s, char *a);
409*2175Sjp161948
410*2175Sjp161948=item int B<SSL_SESSION_set_ex_data>(SSL_SESSION *s, int idx, char *arg);
411*2175Sjp161948
412*2175Sjp161948=item long B<SSL_SESSION_set_time>(SSL_SESSION *s, long t);
413*2175Sjp161948
414*2175Sjp161948=item long B<SSL_SESSION_set_timeout>(SSL_SESSION *s, long t);
415*2175Sjp161948
416*2175Sjp161948=back
417*2175Sjp161948
418*2175Sjp161948=head2 DEALING WITH CONNECTIONS
419*2175Sjp161948
420*2175Sjp161948Here we document the various API functions which deal with the SSL/TLS
421*2175Sjp161948connection defined in the B<SSL> structure.
422*2175Sjp161948
423*2175Sjp161948=over 4
424*2175Sjp161948
425*2175Sjp161948=item int B<SSL_accept>(SSL *ssl);
426*2175Sjp161948
427*2175Sjp161948=item int B<SSL_add_dir_cert_subjects_to_stack>(STACK *stack, const char *dir);
428*2175Sjp161948
429*2175Sjp161948=item int B<SSL_add_file_cert_subjects_to_stack>(STACK *stack, const char *file);
430*2175Sjp161948
431*2175Sjp161948=item int B<SSL_add_client_CA>(SSL *ssl, X509 *x);
432*2175Sjp161948
433*2175Sjp161948=item char *B<SSL_alert_desc_string>(int value);
434*2175Sjp161948
435*2175Sjp161948=item char *B<SSL_alert_desc_string_long>(int value);
436*2175Sjp161948
437*2175Sjp161948=item char *B<SSL_alert_type_string>(int value);
438*2175Sjp161948
439*2175Sjp161948=item char *B<SSL_alert_type_string_long>(int value);
440*2175Sjp161948
441*2175Sjp161948=item int B<SSL_check_private_key>(const SSL *ssl);
442*2175Sjp161948
443*2175Sjp161948=item void B<SSL_clear>(SSL *ssl);
444*2175Sjp161948
445*2175Sjp161948=item long B<SSL_clear_num_renegotiations>(SSL *ssl);
446*2175Sjp161948
447*2175Sjp161948=item int B<SSL_connect>(SSL *ssl);
448*2175Sjp161948
449*2175Sjp161948=item void B<SSL_copy_session_id>(SSL *t, const SSL *f);
450*2175Sjp161948
451*2175Sjp161948=item long B<SSL_ctrl>(SSL *ssl, int cmd, long larg, char *parg);
452*2175Sjp161948
453*2175Sjp161948=item int B<SSL_do_handshake>(SSL *ssl);
454*2175Sjp161948
455*2175Sjp161948=item SSL *B<SSL_dup>(SSL *ssl);
456*2175Sjp161948
457*2175Sjp161948=item STACK *B<SSL_dup_CA_list>(STACK *sk);
458*2175Sjp161948
459*2175Sjp161948=item void B<SSL_free>(SSL *ssl);
460*2175Sjp161948
461*2175Sjp161948=item SSL_CTX *B<SSL_get_SSL_CTX>(const SSL *ssl);
462*2175Sjp161948
463*2175Sjp161948=item char *B<SSL_get_app_data>(SSL *ssl);
464*2175Sjp161948
465*2175Sjp161948=item X509 *B<SSL_get_certificate>(const SSL *ssl);
466*2175Sjp161948
467*2175Sjp161948=item const char *B<SSL_get_cipher>(const SSL *ssl);
468*2175Sjp161948
469*2175Sjp161948=item int B<SSL_get_cipher_bits>(const SSL *ssl, int *alg_bits);
470*2175Sjp161948
471*2175Sjp161948=item char *B<SSL_get_cipher_list>(const SSL *ssl, int n);
472*2175Sjp161948
473*2175Sjp161948=item char *B<SSL_get_cipher_name>(const SSL *ssl);
474*2175Sjp161948
475*2175Sjp161948=item char *B<SSL_get_cipher_version>(const SSL *ssl);
476*2175Sjp161948
477*2175Sjp161948=item STACK *B<SSL_get_ciphers>(const SSL *ssl);
478*2175Sjp161948
479*2175Sjp161948=item STACK *B<SSL_get_client_CA_list>(const SSL *ssl);
480*2175Sjp161948
481*2175Sjp161948=item SSL_CIPHER *B<SSL_get_current_cipher>(SSL *ssl);
482*2175Sjp161948
483*2175Sjp161948=item long B<SSL_get_default_timeout>(const SSL *ssl);
484*2175Sjp161948
485*2175Sjp161948=item int B<SSL_get_error>(const SSL *ssl, int i);
486*2175Sjp161948
487*2175Sjp161948=item char *B<SSL_get_ex_data>(const SSL *ssl, int idx);
488*2175Sjp161948
489*2175Sjp161948=item int B<SSL_get_ex_data_X509_STORE_CTX_idx>(void);
490*2175Sjp161948
491*2175Sjp161948=item int B<SSL_get_ex_new_index>(long argl, char *argp, int (*new_func);(void), int (*dup_func)(void), void (*free_func)(void))
492*2175Sjp161948
493*2175Sjp161948=item int B<SSL_get_fd>(const SSL *ssl);
494*2175Sjp161948
495*2175Sjp161948=item void (*B<SSL_get_info_callback>(const SSL *ssl);)()
496*2175Sjp161948
497*2175Sjp161948=item STACK *B<SSL_get_peer_cert_chain>(const SSL *ssl);
498*2175Sjp161948
499*2175Sjp161948=item X509 *B<SSL_get_peer_certificate>(const SSL *ssl);
500*2175Sjp161948
501*2175Sjp161948=item EVP_PKEY *B<SSL_get_privatekey>(SSL *ssl);
502*2175Sjp161948
503*2175Sjp161948=item int B<SSL_get_quiet_shutdown>(const SSL *ssl);
504*2175Sjp161948
505*2175Sjp161948=item BIO *B<SSL_get_rbio>(const SSL *ssl);
506*2175Sjp161948
507*2175Sjp161948=item int B<SSL_get_read_ahead>(const SSL *ssl);
508*2175Sjp161948
509*2175Sjp161948=item SSL_SESSION *B<SSL_get_session>(const SSL *ssl);
510*2175Sjp161948
511*2175Sjp161948=item char *B<SSL_get_shared_ciphers>(const SSL *ssl, char *buf, int len);
512*2175Sjp161948
513*2175Sjp161948=item int B<SSL_get_shutdown>(const SSL *ssl);
514*2175Sjp161948
515*2175Sjp161948=item SSL_METHOD *B<SSL_get_ssl_method>(SSL *ssl);
516*2175Sjp161948
517*2175Sjp161948=item int B<SSL_get_state>(const SSL *ssl);
518*2175Sjp161948
519*2175Sjp161948=item long B<SSL_get_time>(const SSL *ssl);
520*2175Sjp161948
521*2175Sjp161948=item long B<SSL_get_timeout>(const SSL *ssl);
522*2175Sjp161948
523*2175Sjp161948=item int (*B<SSL_get_verify_callback>(const SSL *ssl))(int,X509_STORE_CTX *)
524*2175Sjp161948
525*2175Sjp161948=item int B<SSL_get_verify_mode>(const SSL *ssl);
526*2175Sjp161948
527*2175Sjp161948=item long B<SSL_get_verify_result>(const SSL *ssl);
528*2175Sjp161948
529*2175Sjp161948=item char *B<SSL_get_version>(const SSL *ssl);
530*2175Sjp161948
531*2175Sjp161948=item BIO *B<SSL_get_wbio>(const SSL *ssl);
532*2175Sjp161948
533*2175Sjp161948=item int B<SSL_in_accept_init>(SSL *ssl);
534*2175Sjp161948
535*2175Sjp161948=item int B<SSL_in_before>(SSL *ssl);
536*2175Sjp161948
537*2175Sjp161948=item int B<SSL_in_connect_init>(SSL *ssl);
538*2175Sjp161948
539*2175Sjp161948=item int B<SSL_in_init>(SSL *ssl);
540*2175Sjp161948
541*2175Sjp161948=item int B<SSL_is_init_finished>(SSL *ssl);
542*2175Sjp161948
543*2175Sjp161948=item STACK *B<SSL_load_client_CA_file>(char *file);
544*2175Sjp161948
545*2175Sjp161948=item void B<SSL_load_error_strings>(void);
546*2175Sjp161948
547*2175Sjp161948=item SSL *B<SSL_new>(SSL_CTX *ctx);
548*2175Sjp161948
549*2175Sjp161948=item long B<SSL_num_renegotiations>(SSL *ssl);
550*2175Sjp161948
551*2175Sjp161948=item int B<SSL_peek>(SSL *ssl, void *buf, int num);
552*2175Sjp161948
553*2175Sjp161948=item int B<SSL_pending>(const SSL *ssl);
554*2175Sjp161948
555*2175Sjp161948=item int B<SSL_read>(SSL *ssl, void *buf, int num);
556*2175Sjp161948
557*2175Sjp161948=item int B<SSL_renegotiate>(SSL *ssl);
558*2175Sjp161948
559*2175Sjp161948=item char *B<SSL_rstate_string>(SSL *ssl);
560*2175Sjp161948
561*2175Sjp161948=item char *B<SSL_rstate_string_long>(SSL *ssl);
562*2175Sjp161948
563*2175Sjp161948=item long B<SSL_session_reused>(SSL *ssl);
564*2175Sjp161948
565*2175Sjp161948=item void B<SSL_set_accept_state>(SSL *ssl);
566*2175Sjp161948
567*2175Sjp161948=item void B<SSL_set_app_data>(SSL *ssl, char *arg);
568*2175Sjp161948
569*2175Sjp161948=item void B<SSL_set_bio>(SSL *ssl, BIO *rbio, BIO *wbio);
570*2175Sjp161948
571*2175Sjp161948=item int B<SSL_set_cipher_list>(SSL *ssl, char *str);
572*2175Sjp161948
573*2175Sjp161948=item void B<SSL_set_client_CA_list>(SSL *ssl, STACK *list);
574*2175Sjp161948
575*2175Sjp161948=item void B<SSL_set_connect_state>(SSL *ssl);
576*2175Sjp161948
577*2175Sjp161948=item int B<SSL_set_ex_data>(SSL *ssl, int idx, char *arg);
578*2175Sjp161948
579*2175Sjp161948=item int B<SSL_set_fd>(SSL *ssl, int fd);
580*2175Sjp161948
581*2175Sjp161948=item void B<SSL_set_info_callback>(SSL *ssl, void (*cb);(void))
582*2175Sjp161948
583*2175Sjp161948=item void B<SSL_set_msg_callback>(SSL *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg));
584*2175Sjp161948
585*2175Sjp161948=item void B<SSL_set_msg_callback_arg>(SSL *ctx, void *arg);
586*2175Sjp161948
587*2175Sjp161948=item void B<SSL_set_options>(SSL *ssl, unsigned long op);
588*2175Sjp161948
589*2175Sjp161948=item void B<SSL_set_quiet_shutdown>(SSL *ssl, int mode);
590*2175Sjp161948
591*2175Sjp161948=item void B<SSL_set_read_ahead>(SSL *ssl, int yes);
592*2175Sjp161948
593*2175Sjp161948=item int B<SSL_set_rfd>(SSL *ssl, int fd);
594*2175Sjp161948
595*2175Sjp161948=item int B<SSL_set_session>(SSL *ssl, SSL_SESSION *session);
596*2175Sjp161948
597*2175Sjp161948=item void B<SSL_set_shutdown>(SSL *ssl, int mode);
598*2175Sjp161948
599*2175Sjp161948=item int B<SSL_set_ssl_method>(SSL *ssl, SSL_METHOD *meth);
600*2175Sjp161948
601*2175Sjp161948=item void B<SSL_set_time>(SSL *ssl, long t);
602*2175Sjp161948
603*2175Sjp161948=item void B<SSL_set_timeout>(SSL *ssl, long t);
604*2175Sjp161948
605*2175Sjp161948=item void B<SSL_set_verify>(SSL *ssl, int mode, int (*callback);(void))
606*2175Sjp161948
607*2175Sjp161948=item void B<SSL_set_verify_result>(SSL *ssl, long arg);
608*2175Sjp161948
609*2175Sjp161948=item int B<SSL_set_wfd>(SSL *ssl, int fd);
610*2175Sjp161948
611*2175Sjp161948=item int B<SSL_shutdown>(SSL *ssl);
612*2175Sjp161948
613*2175Sjp161948=item int B<SSL_state>(const SSL *ssl);
614*2175Sjp161948
615*2175Sjp161948=item char *B<SSL_state_string>(const SSL *ssl);
616*2175Sjp161948
617*2175Sjp161948=item char *B<SSL_state_string_long>(const SSL *ssl);
618*2175Sjp161948
619*2175Sjp161948=item long B<SSL_total_renegotiations>(SSL *ssl);
620*2175Sjp161948
621*2175Sjp161948=item int B<SSL_use_PrivateKey>(SSL *ssl, EVP_PKEY *pkey);
622*2175Sjp161948
623*2175Sjp161948=item int B<SSL_use_PrivateKey_ASN1>(int type, SSL *ssl, unsigned char *d, long len);
624*2175Sjp161948
625*2175Sjp161948=item int B<SSL_use_PrivateKey_file>(SSL *ssl, char *file, int type);
626*2175Sjp161948
627*2175Sjp161948=item int B<SSL_use_RSAPrivateKey>(SSL *ssl, RSA *rsa);
628*2175Sjp161948
629*2175Sjp161948=item int B<SSL_use_RSAPrivateKey_ASN1>(SSL *ssl, unsigned char *d, long len);
630*2175Sjp161948
631*2175Sjp161948=item int B<SSL_use_RSAPrivateKey_file>(SSL *ssl, char *file, int type);
632*2175Sjp161948
633*2175Sjp161948=item int B<SSL_use_certificate>(SSL *ssl, X509 *x);
634*2175Sjp161948
635*2175Sjp161948=item int B<SSL_use_certificate_ASN1>(SSL *ssl, int len, unsigned char *d);
636*2175Sjp161948
637*2175Sjp161948=item int B<SSL_use_certificate_file>(SSL *ssl, char *file, int type);
638*2175Sjp161948
639*2175Sjp161948=item int B<SSL_version>(const SSL *ssl);
640*2175Sjp161948
641*2175Sjp161948=item int B<SSL_want>(const SSL *ssl);
642*2175Sjp161948
643*2175Sjp161948=item int B<SSL_want_nothing>(const SSL *ssl);
644*2175Sjp161948
645*2175Sjp161948=item int B<SSL_want_read>(const SSL *ssl);
646*2175Sjp161948
647*2175Sjp161948=item int B<SSL_want_write>(const SSL *ssl);
648*2175Sjp161948
649*2175Sjp161948=item int B<SSL_want_x509_lookup>(const SSL *ssl);
650*2175Sjp161948
651*2175Sjp161948=item int B<SSL_write>(SSL *ssl, const void *buf, int num);
652*2175Sjp161948
653*2175Sjp161948=back
654*2175Sjp161948
655*2175Sjp161948=head1 SEE ALSO
656*2175Sjp161948
657*2175Sjp161948L<openssl(1)|openssl(1)>, L<crypto(3)|crypto(3)>,
658*2175Sjp161948L<SSL_accept(3)|SSL_accept(3)>, L<SSL_clear(3)|SSL_clear(3)>,
659*2175Sjp161948L<SSL_connect(3)|SSL_connect(3)>,
660*2175Sjp161948L<SSL_CIPHER_get_name(3)|SSL_CIPHER_get_name(3)>,
661*2175Sjp161948L<SSL_COMP_add_compression_method(3)|SSL_COMP_add_compression_method(3)>,
662*2175Sjp161948L<SSL_CTX_add_extra_chain_cert(3)|SSL_CTX_add_extra_chain_cert(3)>,
663*2175Sjp161948L<SSL_CTX_add_session(3)|SSL_CTX_add_session(3)>,
664*2175Sjp161948L<SSL_CTX_ctrl(3)|SSL_CTX_ctrl(3)>,
665*2175Sjp161948L<SSL_CTX_flush_sessions(3)|SSL_CTX_flush_sessions(3)>,
666*2175Sjp161948L<SSL_CTX_get_ex_new_index(3)|SSL_CTX_get_ex_new_index(3)>,
667*2175Sjp161948L<SSL_CTX_get_verify_mode(3)|SSL_CTX_get_verify_mode(3)>,
668*2175Sjp161948L<SSL_CTX_load_verify_locations(3)|SSL_CTX_load_verify_locations(3)>
669*2175Sjp161948L<SSL_CTX_new(3)|SSL_CTX_new(3)>,
670*2175Sjp161948L<SSL_CTX_sess_number(3)|SSL_CTX_sess_number(3)>,
671*2175Sjp161948L<SSL_CTX_sess_set_cache_size(3)|SSL_CTX_sess_set_cache_size(3)>,
672*2175Sjp161948L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>,
673*2175Sjp161948L<SSL_CTX_sessions(3)|SSL_CTX_sessions(3)>,
674*2175Sjp161948L<SSL_CTX_set_cert_store(3)|SSL_CTX_set_cert_store(3)>,
675*2175Sjp161948L<SSL_CTX_set_cert_verify_callback(3)|SSL_CTX_set_cert_verify_callback(3)>,
676*2175Sjp161948L<SSL_CTX_set_cipher_list(3)|SSL_CTX_set_cipher_list(3)>,
677*2175Sjp161948L<SSL_CTX_set_client_CA_list(3)|SSL_CTX_set_client_CA_list(3)>,
678*2175Sjp161948L<SSL_CTX_set_client_cert_cb(3)|SSL_CTX_set_client_cert_cb(3)>,
679*2175Sjp161948L<SSL_CTX_set_default_passwd_cb(3)|SSL_CTX_set_default_passwd_cb(3)>,
680*2175Sjp161948L<SSL_CTX_set_generate_session_id(3)|SSL_CTX_set_generate_session_id(3)>,
681*2175Sjp161948L<SSL_CTX_set_info_callback(3)|SSL_CTX_set_info_callback(3)>,
682*2175Sjp161948L<SSL_CTX_set_max_cert_list(3)|SSL_CTX_set_max_cert_list(3)>,
683*2175Sjp161948L<SSL_CTX_set_mode(3)|SSL_CTX_set_mode(3)>,
684*2175Sjp161948L<SSL_CTX_set_msg_callback(3)|SSL_CTX_set_msg_callback(3)>,
685*2175Sjp161948L<SSL_CTX_set_options(3)|SSL_CTX_set_options(3)>,
686*2175Sjp161948L<SSL_CTX_set_quiet_shutdown(3)|SSL_CTX_set_quiet_shutdown(3)>,
687*2175Sjp161948L<SSL_CTX_set_session_cache_mode(3)|SSL_CTX_set_session_cache_mode(3)>,
688*2175Sjp161948L<SSL_CTX_set_session_id_context(3)|SSL_CTX_set_session_id_context(3)>,
689*2175Sjp161948L<SSL_CTX_set_ssl_version(3)|SSL_CTX_set_ssl_version(3)>,
690*2175Sjp161948L<SSL_CTX_set_timeout(3)|SSL_CTX_set_timeout(3)>,
691*2175Sjp161948L<SSL_CTX_set_tmp_rsa_callback(3)|SSL_CTX_set_tmp_rsa_callback(3)>,
692*2175Sjp161948L<SSL_CTX_set_tmp_dh_callback(3)|SSL_CTX_set_tmp_dh_callback(3)>,
693*2175Sjp161948L<SSL_CTX_set_verify(3)|SSL_CTX_set_verify(3)>,
694*2175Sjp161948L<SSL_CTX_use_certificate(3)|SSL_CTX_use_certificate(3)>,
695*2175Sjp161948L<SSL_alert_type_string(3)|SSL_alert_type_string(3)>,
696*2175Sjp161948L<SSL_do_handshake(3)|SSL_do_handshake(3)>,
697*2175Sjp161948L<SSL_get_SSL_CTX(3)|SSL_get_SSL_CTX(3)>,
698*2175Sjp161948L<SSL_get_ciphers(3)|SSL_get_ciphers(3)>,
699*2175Sjp161948L<SSL_get_client_CA_list(3)|SSL_get_client_CA_list(3)>,
700*2175Sjp161948L<SSL_get_default_timeout(3)|SSL_get_default_timeout(3)>,
701*2175Sjp161948L<SSL_get_error(3)|SSL_get_error(3)>,
702*2175Sjp161948L<SSL_get_ex_data_X509_STORE_CTX_idx(3)|SSL_get_ex_data_X509_STORE_CTX_idx(3)>,
703*2175Sjp161948L<SSL_get_ex_new_index(3)|SSL_get_ex_new_index(3)>,
704*2175Sjp161948L<SSL_get_fd(3)|SSL_get_fd(3)>,
705*2175Sjp161948L<SSL_get_peer_cert_chain(3)|SSL_get_peer_cert_chain(3)>,
706*2175Sjp161948L<SSL_get_rbio(3)|SSL_get_rbio(3)>,
707*2175Sjp161948L<SSL_get_session(3)|SSL_get_session(3)>,
708*2175Sjp161948L<SSL_get_verify_result(3)|SSL_get_verify_result(3)>,
709*2175Sjp161948L<SSL_get_version(3)|SSL_get_version(3)>,
710*2175Sjp161948L<SSL_library_init(3)|SSL_library_init(3)>,
711*2175Sjp161948L<SSL_load_client_CA_file(3)|SSL_load_client_CA_file(3)>,
712*2175Sjp161948L<SSL_new(3)|SSL_new(3)>,
713*2175Sjp161948L<SSL_pending(3)|SSL_pending(3)>,
714*2175Sjp161948L<SSL_read(3)|SSL_read(3)>,
715*2175Sjp161948L<SSL_rstate_string(3)|SSL_rstate_string(3)>,
716*2175Sjp161948L<SSL_session_reused(3)|SSL_session_reused(3)>,
717*2175Sjp161948L<SSL_set_bio(3)|SSL_set_bio(3)>,
718*2175Sjp161948L<SSL_set_connect_state(3)|SSL_set_connect_state(3)>,
719*2175Sjp161948L<SSL_set_fd(3)|SSL_set_fd(3)>,
720*2175Sjp161948L<SSL_set_session(3)|SSL_set_session(3)>,
721*2175Sjp161948L<SSL_set_shutdown(3)|SSL_set_shutdown(3)>,
722*2175Sjp161948L<SSL_shutdown(3)|SSL_shutdown(3)>,
723*2175Sjp161948L<SSL_state_string(3)|SSL_state_string(3)>,
724*2175Sjp161948L<SSL_want(3)|SSL_want(3)>,
725*2175Sjp161948L<SSL_write(3)|SSL_write(3)>,
726*2175Sjp161948L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>,
727*2175Sjp161948L<SSL_SESSION_get_ex_new_index(3)|SSL_SESSION_get_ex_new_index(3)>,
728*2175Sjp161948L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)>,
729*2175Sjp161948L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)>
730*2175Sjp161948
731*2175Sjp161948=head1 HISTORY
732*2175Sjp161948
733*2175Sjp161948The L<ssl(3)|ssl(3)> document appeared in OpenSSL 0.9.2
734*2175Sjp161948
735*2175Sjp161948=cut
736*2175Sjp161948
737