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