1/****************************************************************************
2**
3** Copyright (C) 2019 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtNetwork module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40
41#ifndef QSSL_H
42#define QSSL_H
43
44#include <QtNetwork/qtnetworkglobal.h>
45#include <QtCore/QFlags>
46
47QT_BEGIN_NAMESPACE
48
49
50namespace QSsl {
51 enum KeyType {
52 PrivateKey,
53 PublicKey
54 };
55
56 enum EncodingFormat {
57 Pem,
58 Der
59 };
60
61 enum KeyAlgorithm {
62 Opaque,
63 Rsa,
64 Dsa,
65 Ec,
66 Dh,
67 };
68
69 enum AlternativeNameEntryType {
70 EmailEntry,
71 DnsEntry,
72 IpAddressEntry
73 };
74
75 enum SslProtocol {
76 TlsV1_0,
77 TlsV1_1,
78 TlsV1_2,
79 AnyProtocol,
80 SecureProtocols,
81
82 TlsV1_0OrLater,
83 TlsV1_1OrLater,
84 TlsV1_2OrLater,
85
86 DtlsV1_0,
87 DtlsV1_0OrLater,
88 DtlsV1_2,
89 DtlsV1_2OrLater,
90
91 TlsV1_3,
92 TlsV1_3OrLater,
93
94 UnknownProtocol = -1
95 };
96
97 enum SslOption {
98 SslOptionDisableEmptyFragments = 0x01,
99 SslOptionDisableSessionTickets = 0x02,
100 SslOptionDisableCompression = 0x04,
101 SslOptionDisableServerNameIndication = 0x08,
102 SslOptionDisableLegacyRenegotiation = 0x10,
103 SslOptionDisableSessionSharing = 0x20,
104 SslOptionDisableSessionPersistence = 0x40,
105 SslOptionDisableServerCipherPreference = 0x80
106 };
107 Q_DECLARE_FLAGS(SslOptions, SslOption)
108
109 enum class AlertLevel {
110 Warning,
111 Fatal,
112 Unknown
113 };
114
115 enum class AlertType {
116 CloseNotify,
117 UnexpectedMessage = 10,
118 BadRecordMac = 20,
119 RecordOverflow = 22,
120 DecompressionFailure = 30, // reserved
121 HandshakeFailure = 40,
122 NoCertificate = 41, // reserved
123 BadCertificate = 42,
124 UnsupportedCertificate = 43,
125 CertificateRevoked = 44,
126 CertificateExpired = 45,
127 CertificateUnknown = 46,
128 IllegalParameter = 47,
129 UnknownCa = 48,
130 AccessDenied = 49,
131 DecodeError = 50,
132 DecryptError = 51,
133 ExportRestriction = 60, // reserved
134 ProtocolVersion = 70,
135 InsufficientSecurity = 71,
136 InternalError = 80,
137 InappropriateFallback = 86,
138 UserCancelled = 90,
139 NoRenegotiation = 100,
140 MissingExtension = 109,
141 UnsupportedExtension = 110,
142 CertificateUnobtainable = 111, // reserved
143 UnrecognizedName = 112,
144 BadCertificateStatusResponse = 113,
145 BadCertificateHashValue = 114, // reserved
146 UnknownPskIdentity = 115,
147 CertificateRequired = 116,
148 NoApplicationProtocol = 120,
149 UnknownAlertMessage = 255
150 };
151
152}
153
154Q_DECLARE_OPERATORS_FOR_FLAGS(QSsl::SslOptions)
155
156QT_END_NAMESPACE
157
158#endif // QSSL_H
159