ImagingTools Core SDK
ISslConfigurationManager.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include <istd/IPolymorphic.h>
7
8
9// forward declaration
10
11class QSslConfiguration;
12
13namespace iprm
14{
15class IParamsSet;
16}
17
18
19namespace imtcom
20{
21
22
23class ISslConfigurationManager: virtual public istd::IPolymorphic
24{
25public:
26 struct ParamKeys
27 {
28 static inline const QByteArray s_enableSslModeParamKey = QByteArrayLiteral("EnableSsl");
29 static inline const QByteArray s_keyAlgorithmParamKey = QByteArrayLiteral("KeyAlgorithm");
30 static inline const QByteArray s_encodingFormatParamKey = QByteArrayLiteral("EncodingFormat");
31 static inline const QByteArray s_keyTypeParamKey = QByteArrayLiteral("KeyType");
32 static inline const QByteArray s_verifyModeParamKey = QByteArrayLiteral("VerifyMode");
33 static inline const QByteArray s_protocolParamKey = QByteArrayLiteral("Protocol");
34 static inline const QByteArray s_keyPasswordParamKey = QByteArrayLiteral("KeyPassword");
35 static inline const QByteArray s_filePathParamKey = QByteArrayLiteral("FilePath");
36 static inline const QByteArray s_encodedDataParamKey = QByteArrayLiteral("EncodedData");
37 static inline const QByteArray s_localCertParamKey = QByteArrayLiteral("LocalCert");
38 static inline const QByteArray s_localCertChainParamKey = QByteArrayLiteral("LocalCertChain");
39 static inline const QByteArray s_caCertParamKey = QByteArrayLiteral("CaCert");
40 static inline const QByteArray s_caChainCertParamKey = QByteArrayLiteral("CaChainCert");
41 static inline const QByteArray s_privateKeyParamKey = QByteArrayLiteral("PrivateKey");
42 };
43
44 enum PeerVerifyMode
45 {
46 PVM_NONE,
47 PVM_QUERY,
48 PVM_VERIFY,
49 PVM_AUTO_VERIFY
50 };
51 I_DECLARE_ENUM(PeerVerifyMode,
52 PVM_NONE,
53 PVM_QUERY,
54 PVM_VERIFY,
55 PVM_AUTO_VERIFY)
56
57 enum SslProtocol
58 {
59 SP_UNKNOWN_PROTOCOL,
60 SP_SECURE_PROTOCOLS,
61 SP_ANY_PROTOCOL,
62 SP_TLS_V1_0,
63 SP_TLS_V1_0_OR_LATER,
64 SP_TLS_V1_1,
65 SP_TLS_V1_1_OR_LATER,
66 SP_TLS_V1_2,
67 SP_TLS_V1_2_OR_LATER,
68 SP_DTLS_V1_0,
69 SP_DTLS_V1_0_OR_LATER,
70 SP_DTLS_V1_2,
71 SP_DTLS_V1_2_OR_LATER,
72 SP_TLS_V1_3,
73 SP_TLS_V1_3_OR_LATER,
74 };
75 I_DECLARE_ENUM(SslProtocol,
76 SP_UNKNOWN_PROTOCOL,
77 SP_SECURE_PROTOCOLS,
78 SP_ANY_PROTOCOL,
79 SP_TLS_V1_0,
80 SP_TLS_V1_0_OR_LATER,
81 SP_TLS_V1_1,
82 SP_TLS_V1_1_OR_LATER,
83 SP_TLS_V1_2,
84 SP_TLS_V1_2_OR_LATER,
85 SP_DTLS_V1_0,
86 SP_DTLS_V1_0_OR_LATER,
87 SP_DTLS_V1_2,
88 SP_DTLS_V1_2_OR_LATER,
89 SP_TLS_V1_3,
90 SP_TLS_V1_3_OR_LATER)
91
92 enum KeyAlgorithm
93 {
94 KA_RSA,
95 KA_DSA,
96 KA_EC,
97 KA_DH,
98 KA_OPAQUE
99 };
100 I_DECLARE_ENUM(KeyAlgorithm,
101 KA_RSA,
102 KA_DSA,
103 KA_EC,
104 KA_DH,
105 KA_OPAQUE)
106
107 enum EncodingFormat
108 {
109 EF_PEM,
110 EF_DER
111 };
112 I_DECLARE_ENUM(EncodingFormat,
113 EF_PEM,
114 EF_DER)
115
116 enum KeyType
117 {
118 KT_PRIVATE_KEY,
119 KT_PUBLIC_KEY
120 };
121 I_DECLARE_ENUM(KeyType,
122 KT_PRIVATE_KEY,
123 KT_PUBLIC_KEY)
124
125 virtual bool CreateSslConfiguration(const iprm::IParamsSet& params, QSslConfiguration& output) const = 0;
126
127};
128
129
130} // namespace imtcom
131
132
Server Communication and Connection Management Module.