xref: /freebsd/crypto/openssl/doc/man7/ssl.pod (revision b077aed33b7b6aefca7b17ddb250cf521f938613)
1e71b7053SJung-uk Kim=pod
2e71b7053SJung-uk Kim
3e71b7053SJung-uk Kim=head1 NAME
4e71b7053SJung-uk Kim
5e71b7053SJung-uk Kimssl - OpenSSL SSL/TLS library
6e71b7053SJung-uk Kim
7e71b7053SJung-uk Kim=head1 SYNOPSIS
8e71b7053SJung-uk Kim
9e71b7053SJung-uk KimSee the individual manual pages for details.
10e71b7053SJung-uk Kim
11e71b7053SJung-uk Kim=head1 DESCRIPTION
12e71b7053SJung-uk Kim
13*b077aed3SPierre ProncheryThe OpenSSL B<ssl> library implements several versions of the
14*b077aed3SPierre ProncherySecure Sockets Layer, Transport Layer Security, and Datagram Transport Layer
15*b077aed3SPierre ProncherySecurity protocols.
16*b077aed3SPierre ProncheryThis page gives a brief overview of the extensive API and data types
17*b077aed3SPierre Proncheryprovided by the library.
18e71b7053SJung-uk Kim
19e71b7053SJung-uk KimAn B<SSL_CTX> object is created as a framework to establish
20e71b7053SJung-uk KimTLS/SSL enabled connections (see L<SSL_CTX_new(3)>).
21e71b7053SJung-uk KimVarious options regarding certificates, algorithms etc. can be set
22e71b7053SJung-uk Kimin this object.
23e71b7053SJung-uk Kim
24e71b7053SJung-uk KimWhen a network connection has been created, it can be assigned to an
25e71b7053SJung-uk KimB<SSL> object. After the B<SSL> object has been created using
26e71b7053SJung-uk KimL<SSL_new(3)>, L<SSL_set_fd(3)> or
27e71b7053SJung-uk KimL<SSL_set_bio(3)> can be used to associate the network
28e71b7053SJung-uk Kimconnection with the object.
29e71b7053SJung-uk Kim
30e71b7053SJung-uk KimWhen the TLS/SSL handshake is performed using
31e71b7053SJung-uk KimL<SSL_accept(3)> or L<SSL_connect(3)>
32e71b7053SJung-uk Kimrespectively.
33e71b7053SJung-uk KimL<SSL_read_ex(3)>, L<SSL_read(3)>, L<SSL_write_ex(3)> and L<SSL_write(3)> are
34e71b7053SJung-uk Kimused to read and write data on the TLS/SSL connection.
35e71b7053SJung-uk KimL<SSL_shutdown(3)> can be used to shut down the
36e71b7053SJung-uk KimTLS/SSL connection.
37e71b7053SJung-uk Kim
38e71b7053SJung-uk Kim=head1 DATA STRUCTURES
39e71b7053SJung-uk Kim
40*b077aed3SPierre ProncheryHere are some of the main data structures in the library.
41e71b7053SJung-uk Kim
42e71b7053SJung-uk Kim=over 4
43e71b7053SJung-uk Kim
44e71b7053SJung-uk Kim=item B<SSL_METHOD> (SSL Method)
45e71b7053SJung-uk Kim
46e71b7053SJung-uk KimThis is a dispatch structure describing the internal B<ssl> library
47e71b7053SJung-uk Kimmethods/functions which implement the various protocol versions (SSLv3
48e71b7053SJung-uk KimTLSv1, ...). It's needed to create an B<SSL_CTX>.
49e71b7053SJung-uk Kim
50e71b7053SJung-uk Kim=item B<SSL_CIPHER> (SSL Cipher)
51e71b7053SJung-uk Kim
52e71b7053SJung-uk KimThis structure holds the algorithm information for a particular cipher which
53e71b7053SJung-uk Kimare a core part of the SSL/TLS protocol. The available ciphers are configured
54e71b7053SJung-uk Kimon a B<SSL_CTX> basis and the actual ones used are then part of the
55e71b7053SJung-uk KimB<SSL_SESSION>.
56e71b7053SJung-uk Kim
57e71b7053SJung-uk Kim=item B<SSL_CTX> (SSL Context)
58e71b7053SJung-uk Kim
59e71b7053SJung-uk KimThis is the global context structure which is created by a server or client
60e71b7053SJung-uk Kimonce per program life-time and which holds mainly default values for the
61e71b7053SJung-uk KimB<SSL> structures which are later created for the connections.
62e71b7053SJung-uk Kim
63e71b7053SJung-uk Kim=item B<SSL_SESSION> (SSL Session)
64e71b7053SJung-uk Kim
65e71b7053SJung-uk KimThis is a structure containing the current TLS/SSL session details for a
66e71b7053SJung-uk Kimconnection: B<SSL_CIPHER>s, client and server certificates, keys, etc.
67e71b7053SJung-uk Kim
68e71b7053SJung-uk Kim=item B<SSL> (SSL Connection)
69e71b7053SJung-uk Kim
70e71b7053SJung-uk KimThis is the main SSL/TLS structure which is created by a server or client per
71e71b7053SJung-uk Kimestablished connection. This actually is the core structure in the SSL API.
72e71b7053SJung-uk KimAt run-time the application usually deals with this structure which has
73e71b7053SJung-uk Kimlinks to mostly all other structures.
74e71b7053SJung-uk Kim
75e71b7053SJung-uk Kim=back
76e71b7053SJung-uk Kim
77e71b7053SJung-uk Kim=head1 HEADER FILES
78e71b7053SJung-uk Kim
79e71b7053SJung-uk KimCurrently the OpenSSL B<ssl> library provides the following C header files
80e71b7053SJung-uk Kimcontaining the prototypes for the data structures and functions:
81e71b7053SJung-uk Kim
82e71b7053SJung-uk Kim=over 4
83e71b7053SJung-uk Kim
84*b077aed3SPierre Pronchery=item F<< <openssl/ssl.h> >>
85e71b7053SJung-uk Kim
86e71b7053SJung-uk KimThis is the common header file for the SSL/TLS API.  Include it into your
87e71b7053SJung-uk Kimprogram to make the API of the B<ssl> library available. It internally
88e71b7053SJung-uk Kimincludes both more private SSL headers and headers from the B<crypto> library.
89e71b7053SJung-uk KimWhenever you need hard-core details on the internals of the SSL API, look
90e71b7053SJung-uk Kiminside this header file.
91*b077aed3SPierre ProncheryThis file also includes the others listed below.
92e71b7053SJung-uk Kim
93*b077aed3SPierre Pronchery=item F<< <openssl/ssl2.h> >>
94e71b7053SJung-uk Kim
95e71b7053SJung-uk KimUnused. Present for backwards compatibility only.
96e71b7053SJung-uk Kim
97*b077aed3SPierre Pronchery=item F<< <openssl/ssl3.h> >>
98e71b7053SJung-uk Kim
99e71b7053SJung-uk KimThis is the sub header file dealing with the SSLv3 protocol only.
100e71b7053SJung-uk Kim
101*b077aed3SPierre Pronchery=item F<< <openssl/tls1.h> >>
102e71b7053SJung-uk Kim
103e71b7053SJung-uk KimThis is the sub header file dealing with the TLSv1 protocol only.
104e71b7053SJung-uk Kim
105e71b7053SJung-uk Kim=back
106e71b7053SJung-uk Kim
107e71b7053SJung-uk Kim=head1 COPYRIGHT
108e71b7053SJung-uk Kim
109e71b7053SJung-uk KimCopyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved.
110e71b7053SJung-uk Kim
111*b077aed3SPierre ProncheryLicensed under the Apache License 2.0 (the "License").  You may not use
112e71b7053SJung-uk Kimthis file except in compliance with the License.  You can obtain a copy
113e71b7053SJung-uk Kimin the file LICENSE in the source distribution or at
114e71b7053SJung-uk KimL<https://www.openssl.org/source/license.html>.
115e71b7053SJung-uk Kim
116e71b7053SJung-uk Kim=cut
117