xref: /openbsd-src/lib/libssl/man/SSL_get_session.3 (revision 41ce3b17e73f6b7d2d9e1a3d961e4bab2d895cb5)
1*41ce3b17Snaddy.\"	$OpenBSD: SSL_get_session.3,v 1.8 2022/03/31 17:27:18 naddy Exp $
26fa237d3Sschwarze.\"	OpenSSL b97fdb57 Nov 11 09:33:09 2016 +0100
3f1a3c524Sschwarze.\"
46fa237d3Sschwarze.\" This file was written by Lutz Jaenicke <jaenicke@openssl.org>.
56fa237d3Sschwarze.\" Copyright (c) 2000, 2001, 2005, 2013, 2016 The OpenSSL Project.
66fa237d3Sschwarze.\" All rights reserved.
7f1a3c524Sschwarze.\"
86fa237d3Sschwarze.\" Redistribution and use in source and binary forms, with or without
96fa237d3Sschwarze.\" modification, are permitted provided that the following conditions
106fa237d3Sschwarze.\" are met:
116fa237d3Sschwarze.\"
126fa237d3Sschwarze.\" 1. Redistributions of source code must retain the above copyright
136fa237d3Sschwarze.\"    notice, this list of conditions and the following disclaimer.
146fa237d3Sschwarze.\"
156fa237d3Sschwarze.\" 2. Redistributions in binary form must reproduce the above copyright
166fa237d3Sschwarze.\"    notice, this list of conditions and the following disclaimer in
176fa237d3Sschwarze.\"    the documentation and/or other materials provided with the
186fa237d3Sschwarze.\"    distribution.
196fa237d3Sschwarze.\"
206fa237d3Sschwarze.\" 3. All advertising materials mentioning features or use of this
216fa237d3Sschwarze.\"    software must display the following acknowledgment:
226fa237d3Sschwarze.\"    "This product includes software developed by the OpenSSL Project
236fa237d3Sschwarze.\"    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
246fa237d3Sschwarze.\"
256fa237d3Sschwarze.\" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
266fa237d3Sschwarze.\"    endorse or promote products derived from this software without
276fa237d3Sschwarze.\"    prior written permission. For written permission, please contact
286fa237d3Sschwarze.\"    openssl-core@openssl.org.
296fa237d3Sschwarze.\"
306fa237d3Sschwarze.\" 5. Products derived from this software may not be called "OpenSSL"
316fa237d3Sschwarze.\"    nor may "OpenSSL" appear in their names without prior written
326fa237d3Sschwarze.\"    permission of the OpenSSL Project.
336fa237d3Sschwarze.\"
346fa237d3Sschwarze.\" 6. Redistributions of any form whatsoever must retain the following
356fa237d3Sschwarze.\"    acknowledgment:
366fa237d3Sschwarze.\"    "This product includes software developed by the OpenSSL Project
376fa237d3Sschwarze.\"    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
386fa237d3Sschwarze.\"
396fa237d3Sschwarze.\" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
406fa237d3Sschwarze.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
416fa237d3Sschwarze.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
426fa237d3Sschwarze.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
436fa237d3Sschwarze.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
446fa237d3Sschwarze.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
456fa237d3Sschwarze.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
466fa237d3Sschwarze.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
476fa237d3Sschwarze.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
486fa237d3Sschwarze.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
496fa237d3Sschwarze.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
506fa237d3Sschwarze.\" OF THE POSSIBILITY OF SUCH DAMAGE.
516fa237d3Sschwarze.\"
52*41ce3b17Snaddy.Dd $Mdocdate: March 31 2022 $
53f1a3c524Sschwarze.Dt SSL_GET_SESSION 3
54f1a3c524Sschwarze.Os
55f1a3c524Sschwarze.Sh NAME
56f1a3c524Sschwarze.Nm SSL_get_session ,
57f1a3c524Sschwarze.Nm SSL_get0_session ,
58f1a3c524Sschwarze.Nm SSL_get1_session
59f1a3c524Sschwarze.Nd retrieve TLS/SSL session data
60f1a3c524Sschwarze.Sh SYNOPSIS
61f1a3c524Sschwarze.In openssl/ssl.h
62f1a3c524Sschwarze.Ft SSL_SESSION *
63f1a3c524Sschwarze.Fn SSL_get_session "const SSL *ssl"
64f1a3c524Sschwarze.Ft SSL_SESSION *
65f1a3c524Sschwarze.Fn SSL_get0_session "const SSL *ssl"
66f1a3c524Sschwarze.Ft SSL_SESSION *
67f1a3c524Sschwarze.Fn SSL_get1_session "SSL *ssl"
68f1a3c524Sschwarze.Sh DESCRIPTION
69f1a3c524Sschwarze.Fn SSL_get_session
70f1a3c524Sschwarzereturns a pointer to the
71f1a3c524Sschwarze.Vt SSL_SESSION
72f1a3c524Sschwarzeactually used in
73f1a3c524Sschwarze.Fa ssl .
74f1a3c524SschwarzeThe reference count of the
75f1a3c524Sschwarze.Vt SSL_SESSION
76f1a3c524Sschwarzeis not incremented, so that the pointer can become invalid by other operations.
77f1a3c524Sschwarze.Pp
78f1a3c524Sschwarze.Fn SSL_get0_session
79f1a3c524Sschwarzeis the same as
80f1a3c524Sschwarze.Fn SSL_get_session .
81f1a3c524Sschwarze.Pp
82f1a3c524Sschwarze.Fn SSL_get1_session
83f1a3c524Sschwarzeis the same as
84f1a3c524Sschwarze.Fn SSL_get_session ,
85f1a3c524Sschwarzebut the reference count of the
86f1a3c524Sschwarze.Vt SSL_SESSION
87f1a3c524Sschwarzeis incremented by one.
886fa237d3Sschwarze.Pp
89f1a3c524SschwarzeThe
906fa237d3Sschwarze.Fa ssl
91f1a3c524Sschwarzesession contains all information required to re-establish the connection
92f1a3c524Sschwarzewithout a new handshake.
93f1a3c524Sschwarze.Pp
94f1a3c524Sschwarze.Fn SSL_get0_session
95f1a3c524Sschwarzereturns a pointer to the actual session.
96f1a3c524SschwarzeAs the reference counter is not incremented,
97f1a3c524Sschwarzethe pointer is only valid while the connection is in use.
98f1a3c524SschwarzeIf
99f1a3c524Sschwarze.Xr SSL_clear 3
100f1a3c524Sschwarzeor
101f1a3c524Sschwarze.Xr SSL_free 3
102f1a3c524Sschwarzeis called, the session may be removed completely (if considered bad),
103f1a3c524Sschwarzeand the pointer obtained will become invalid.
104f1a3c524SschwarzeEven if the session is valid,
105f1a3c524Sschwarzeit can be removed at any time due to timeout during
106f1a3c524Sschwarze.Xr SSL_CTX_flush_sessions 3 .
107f1a3c524Sschwarze.Pp
108f1a3c524SschwarzeIf the data is to be kept,
109f1a3c524Sschwarze.Fn SSL_get1_session
110f1a3c524Sschwarzewill increment the reference count, so that the session will not be implicitly
111f1a3c524Sschwarzeremoved by other operations but stays in memory.
112*41ce3b17SnaddyIn order to remove the session,
113f1a3c524Sschwarze.Xr SSL_SESSION_free 3
114f1a3c524Sschwarzemust be explicitly called once to decrement the reference count again.
115f1a3c524Sschwarze.Pp
116f1a3c524Sschwarze.Vt SSL_SESSION
117f1a3c524Sschwarzeobjects keep internal link information about the session cache list when being
118f1a3c524Sschwarzeinserted into one
119f1a3c524Sschwarze.Vt SSL_CTX
120f1a3c524Sschwarzeobject's session cache.
121f1a3c524SschwarzeOne
122f1a3c524Sschwarze.Vt SSL_SESSION
123f1a3c524Sschwarzeobject, regardless of its reference count, must therefore only be used with one
124f1a3c524Sschwarze.Vt SSL_CTX
125f1a3c524Sschwarzeobject (and the
126f1a3c524Sschwarze.Vt SSL
127f1a3c524Sschwarzeobjects created from this
128f1a3c524Sschwarze.Vt SSL_CTX
129f1a3c524Sschwarzeobject).
130f1a3c524Sschwarze.Sh RETURN VALUES
131f1a3c524SschwarzeThe following return values can occur:
132f1a3c524Sschwarze.Bl -tag -width Ds
133f1a3c524Sschwarze.It Dv NULL
134f1a3c524SschwarzeThere is no session available in
135f1a3c524Sschwarze.Fa ssl .
1366fa237d3Sschwarze.It Pointer to an Vt SSL_SESSION
137f1a3c524SschwarzeThe return value points to the data of an
138f1a3c524Sschwarze.Vt SSL
139f1a3c524Sschwarzesession.
140f1a3c524Sschwarze.El
141f1a3c524Sschwarze.Sh SEE ALSO
142f1a3c524Sschwarze.Xr ssl 3 ,
143f1a3c524Sschwarze.Xr SSL_clear 3 ,
144f1a3c524Sschwarze.Xr SSL_free 3 ,
145a1e5cce1Sschwarze.Xr SSL_SESSION_free 3 ,
146a1e5cce1Sschwarze.Xr SSL_SESSION_get0_peer 3 ,
147a1e5cce1Sschwarze.Xr SSL_SESSION_get_compress_id 3 ,
148a1e5cce1Sschwarze.Xr SSL_SESSION_get_id 3 ,
14981636af2Sschwarze.Xr SSL_SESSION_get_protocol_version 3 ,
150a1e5cce1Sschwarze.Xr SSL_SESSION_get_time 3 ,
151a1e5cce1Sschwarze.Xr SSL_SESSION_new 3 ,
15281636af2Sschwarze.Xr SSL_SESSION_print 3 ,
15381636af2Sschwarze.Xr SSL_set_session 3
1548fba1ec8Sschwarze.Sh HISTORY
1558fba1ec8Sschwarze.Fn SSL_get_session
15610e00d17Sschwarzefirst appeared in SSLeay 0.5.2 and has been available since
1578fba1ec8Sschwarze.Ox 2.4 .
1581c77d1feSschwarze.Pp
1591c77d1feSschwarze.Fn SSL_get0_session
1601c77d1feSschwarzeand
1611c77d1feSschwarze.Fn SSL_get1_session
1621c77d1feSschwarzefirst appeared in OpenSSL 0.9.5 and have been available since
1631c77d1feSschwarze.Ox 2.7 .
164