xref: /onnv-gate/usr/src/common/openssl/doc/ssl/d2i_SSL_SESSION.pod (revision 2175:b0b2f052a486)
1*2175Sjp161948=pod
2*2175Sjp161948
3*2175Sjp161948=head1 NAME
4*2175Sjp161948
5*2175Sjp161948d2i_SSL_SESSION, i2d_SSL_SESSION - convert SSL_SESSION object from/to ASN1 representation
6*2175Sjp161948
7*2175Sjp161948=head1 SYNOPSIS
8*2175Sjp161948
9*2175Sjp161948 #include <openssl/ssl.h>
10*2175Sjp161948
11*2175Sjp161948 SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, long length);
12*2175Sjp161948 int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
13*2175Sjp161948
14*2175Sjp161948=head1 DESCRIPTION
15*2175Sjp161948
16*2175Sjp161948d2i_SSL_SESSION() transforms the external ASN1 representation of an SSL/TLS
17*2175Sjp161948session, stored as binary data at location B<pp> with length B<length>, into
18*2175Sjp161948an SSL_SESSION object.
19*2175Sjp161948
20*2175Sjp161948i2d_SSL_SESSION() transforms the SSL_SESSION object B<in> into the ASN1
21*2175Sjp161948representation and stores it into the memory location pointed to by B<pp>.
22*2175Sjp161948The length of the resulting ASN1 representation is returned. If B<pp> is
23*2175Sjp161948the NULL pointer, only the length is calculated and returned.
24*2175Sjp161948
25*2175Sjp161948=head1 NOTES
26*2175Sjp161948
27*2175Sjp161948The SSL_SESSION object is built from several malloc()ed parts, it can
28*2175Sjp161948therefore not be moved, copied or stored directly. In order to store
29*2175Sjp161948session data on disk or into a database, it must be transformed into
30*2175Sjp161948a binary ASN1 representation.
31*2175Sjp161948
32*2175Sjp161948When using d2i_SSL_SESSION(), the SSL_SESSION object is automatically
33*2175Sjp161948allocated. The reference count is 1, so that the session must be
34*2175Sjp161948explicitly removed using L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>,
35*2175Sjp161948unless the SSL_SESSION object is completely taken over, when being called
36*2175Sjp161948inside the get_session_cb() (see
37*2175Sjp161948L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>).
38*2175Sjp161948
39*2175Sjp161948SSL_SESSION objects keep internal link information about the session cache
40*2175Sjp161948list, when being inserted into one SSL_CTX object's session cache.
41*2175Sjp161948One SSL_SESSION object, regardless of its reference count, must therefore
42*2175Sjp161948only be used with one SSL_CTX object (and the SSL objects created
43*2175Sjp161948from this SSL_CTX object).
44*2175Sjp161948
45*2175Sjp161948When using i2d_SSL_SESSION(), the memory location pointed to by B<pp> must be
46*2175Sjp161948large enough to hold the binary representation of the session. There is no
47*2175Sjp161948known limit on the size of the created ASN1 representation, so the necessary
48*2175Sjp161948amount of space should be obtained by first calling i2d_SSL_SESSION() with
49*2175Sjp161948B<pp=NULL>, and obtain the size needed, then allocate the memory and
50*2175Sjp161948call i2d_SSL_SESSION() again.
51*2175Sjp161948
52*2175Sjp161948=head1 RETURN VALUES
53*2175Sjp161948
54*2175Sjp161948d2i_SSL_SESSION() returns a pointer to the newly allocated SSL_SESSION
55*2175Sjp161948object. In case of failure the NULL-pointer is returned and the error message
56*2175Sjp161948can be retrieved from the error stack.
57*2175Sjp161948
58*2175Sjp161948i2d_SSL_SESSION() returns the size of the ASN1 representation in bytes.
59*2175Sjp161948When the session is not valid, B<0> is returned and no operation is performed.
60*2175Sjp161948
61*2175Sjp161948=head1 SEE ALSO
62*2175Sjp161948
63*2175Sjp161948L<ssl(3)|ssl(3)>, L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>,
64*2175Sjp161948L<SSL_CTX_sess_set_get_cb(3)|SSL_CTX_sess_set_get_cb(3)>
65*2175Sjp161948
66*2175Sjp161948=cut
67