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