1 /* 2 * libwebsockets - small server side websockets and web server implementation 3 * 4 * Copyright (C) 2010 - 2021 Andy Green <andy@warmcat.com> 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to 8 * deal in the Software without restriction, including without limitation the 9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 10 * sell copies of the Software, and to permit persons to whom the Software is 11 * furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in 14 * all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 22 * IN THE SOFTWARE. 23 */ 24 25 /*! \defgroup tls_sessions TLS Session Management 26 27 APIs related to managing TLS Sessions 28 */ 29 //@{ 30 31 32 #define LWS_SESSION_TAG_LEN 96 33 34 struct lws_tls_session_dump 35 { 36 char tag[LWS_SESSION_TAG_LEN]; 37 void *blob; 38 void *opaque; 39 size_t blob_len; 40 }; 41 42 typedef int (*lws_tls_sess_cb_t)(struct lws_context *cx, 43 struct lws_tls_session_dump *info); 44 45 /** 46 * lws_tls_session_dump_save() - serialize a tls session via a callback 47 * 48 * \param vh: the vhost to load into the session cache 49 * \param host: the name of the host the session relates to 50 * \param port: the port the session connects to on the host 51 * \param cb_save: the callback to perform the saving of the session blob 52 * \param opq: an opaque pointer passed into the callback 53 * 54 * If a session matching the vhost/host/port exists in the vhost's session 55 * cache, serialize it via the provided callback. 56 * 57 * \p opq is passed to the callback without being used by lws at all. 58 */ 59 LWS_VISIBLE LWS_EXTERN int 60 lws_tls_session_dump_save(struct lws_vhost *vh, const char *host, uint16_t port, 61 lws_tls_sess_cb_t cb_save, void *opq); 62 63 /** 64 * lws_tls_session_dump_load() - deserialize a tls session via a callback 65 * 66 * \param vh: the vhost to load into the session cache 67 * \param host: the name of the host the session relates to 68 * \param port: the port the session connects to on the host 69 * \param cb_load: the callback to retreive the session blob from 70 * \param opq: an opaque pointer passed into the callback 71 * 72 * Try to preload a session described by the first three parameters into the 73 * client session cache, from the given callback. 74 * 75 * \p opq is passed to the callback without being used by lws at all. 76 */ 77 LWS_VISIBLE LWS_EXTERN int 78 lws_tls_session_dump_load(struct lws_vhost *vh, const char *host, uint16_t port, 79 lws_tls_sess_cb_t cb_load, void *opq); 80 81 ///@} 82