AsyncFw 1.2
Async Framework is c++ runtime with timers, poll notifiers, sockets, coroutines, etc.
 
Loading...
Searching...
No Matches
TlsContext.h
1/*
2Copyright (c) 2026 Alexandr Kuzmuk
3
4This file is part of the AsyncFw project. Licensed under the MIT License.
5See {Link: LICENSE file https://mit-license.org} in the project root for full license information.
6*/
7
8#pragma once
9
10#include <string>
11#include <vector>
12#include <cstdint>
13
14struct ssl_ctx_st;
15struct x509_store_ctx_st;
16
17namespace AsyncFw {
18class DataArray;
19class DataArrayList;
20class LogStream;
24class TlsContext {
25 friend class AbstractTlsSocket;
26 struct Private;
27
28public:
29 TlsContext();
30 TlsContext(const DataArray &k, const DataArray &c, const DataArrayList &t, const std::string & = {}, uint8_t = 0);
31 TlsContext(const TlsContext &);
32 TlsContext(const TlsContext &&) = delete;
33 ~TlsContext();
34 TlsContext &operator=(const TlsContext &);
35
36 DataArray key() const;
37 DataArray certificate() const;
38 DataArrayList trusted() const;
39
40 bool setKey(const DataArray &);
41 bool setCertificate(const DataArray &);
42 bool appendTrusted(const DataArray &);
43 bool setDefaultVerifyPaths();
44
45 bool empty() const;
46 bool verifyCertificate() const;
47
48 bool generateKey(int = 2048);
49 bool generateCertificate(const std::vector<std::pair<std::string, std::string>> & = {{"CN", "Root-CA"}}, const std::string & = {}, const std::string & = "CA:TRUE,pathlen:1", int = 365);
50 DataArray generateRequest(const std::vector<std::pair<std::string, std::string>> &, const std::string & = {}, const std::string & = {} /*for ca: "CA:TRUE,pathlen:0"*/);
51 DataArray signRequest(DataArray &, int = 365);
52
53 std::string commonName() const;
54
55 std::string infoKey() const;
56 std::string infoCertificate() const;
57 std::string infoTrusted() const;
58
59 static std::string infoKey(const DataArray &);
60 static std::string infoCertificate(const DataArray &);
61 static std::string infoRequest(const DataArray &);
62
63 static std::string errorString();
64 static std::string allErrorStrings();
65
66 bool verifyPeer();
67 void setVerifyPeer(bool);
68 std::string &verifyName() const;
69 void setVerifyName(const std::string &) const;
70 void setIgnoreErrors(uint8_t) const;
71
72protected:
73 static int verify(int ok, x509_store_ctx_st *ctx);
74 ssl_ctx_st *opensslCtx() const;
75
76private:
77 Private *private_;
78};
79LogStream &operator<<(LogStream &, const TlsContext &);
80} // namespace AsyncFw
The DataArrayList class.
Definition DataArray.h:48
The DataArray class.
Definition DataArray.h:20
The LogStream class.
Definition LogStream.h:44
The TlsContext class provides functionality for managing TLS certificates.
Definition TlsContext.h:24