SPTK Home Page
sptk5
net
SSLContext.h
1
/*
2
╔══════════════════════════════════════════════════════════════════════════════╗
3
║ SIMPLY POWERFUL TOOLKIT (SPTK) ║
4
╟──────────────────────────────────────────────────────────────────────────────╢
5
║ copyright © 1999-2022 Alexey Parshin. All rights reserved. ║
6
║ email alexeyp@gmail.com ║
7
╚══════════════════════════════════════════════════════════════════════════════╝
8
┌──────────────────────────────────────────────────────────────────────────────┐
9
│ This library is free software; you can redistribute it and/or modify it │
10
│ under the terms of the GNU Library General Public License as published by │
11
│ the Free Software Foundation; either version 2 of the License, or (at your │
12
│ option) any later version. │
13
│ │
14
│ This library is distributed in the hope that it will be useful, but │
15
│ WITHOUT ANY WARRANTY; without even the implied warranty of │
16
│ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library │
17
│ General Public License for more details. │
18
│ │
19
│ You should have received a copy of the GNU Library General Public License │
20
│ along with this library; if not, write to the Free Software Foundation, │
21
│ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. │
22
│ │
23
│ Please report all bugs and problems to alexeyp@gmail.com. │
24
└──────────────────────────────────────────────────────────────────────────────┘
25
*/
26
27
#pragma once
28
29
#include <sptk5/sptk.h>
30
31
#include <memory>
32
#include <mutex>
33
#include <openssl/ssl.h>
34
#include <sptk5/String.h>
35
#include <sptk5/net/SSLKeys.h>
36
#include <sptk5/threads/Locks.h>
37
38
namespace
sptk {
39
48
class
SSLContext
:
public
SharedMutex
49
{
50
std::shared_ptr<SSL_CTX> m_ctx;
51
String
m_password;
52
static
int
s_server_session_id_context;
53
57
static
int
passwordReplyCallback(
char
* replyBuffer,
int
replySize,
int
rwflag,
void
* userdata);
58
63
[[noreturn]]
static
void
throwError(
const
String
& humanDescription);
64
65
public
:
70
explicit
SSLContext
(
const
String
& cipherList);
71
81
void
loadKeys
(
const
SSLKeys
& keys);
82
86
SSL_CTX*
handle
();
87
};
88
89
using
SharedSSLContext = std::shared_ptr<SSLContext>;
90
94
}
// namespace sptk
sptk::SSLContext
Definition:
SSLContext.h:49
sptk::SSLContext::handle
SSL_CTX * handle()
sptk::SSLContext::loadKeys
void loadKeys(const SSLKeys &keys)
sptk::SSLContext::SSLContext
SSLContext(const String &cipherList)
sptk::SSLKeys
Definition:
SSLKeys.h:38
sptk::String
Definition:
String.h:49
Fri Oct 14 2022 09:58:32: SPTK 5.4.1