1/****************************************************************************
2**
3** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/
5**
6** This file is part of the QtNetwork module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** GNU Lesser General Public License Usage
10** This file may be used under the terms of the GNU Lesser General Public
11** License version 2.1 as published by the Free Software Foundation and
12** appearing in the file LICENSE.LGPL included in the packaging of this
13** file. Please review the following information to ensure the GNU Lesser
14** General Public License version 2.1 requirements will be met:
15** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16**
17** In addition, as a special exception, Nokia gives you certain additional
18** rights. These rights are described in the Nokia Qt LGPL Exception
19** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20**
21** GNU General Public License Usage
22** Alternatively, this file may be used under the terms of the GNU General
23** Public License version 3.0 as published by the Free Software Foundation
24** and appearing in the file LICENSE.GPL included in the packaging of this
25** file. Please review the following information to ensure the GNU General
26** Public License version 3.0 requirements will be met:
27** http://www.gnu.org/copyleft/gpl.html.
28**
29** Other Usage
30** Alternatively, this file may be used in accordance with the terms and
31** conditions contained in a signed written agreement between you and Nokia.
32**
33**
34**
35**
36**
37**
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42
43#ifndef QSSLERROR_H
44#define QSSLERROR_H
45
46#include <QtCore/qvariant.h>
47#include <QtNetwork/qsslcertificate.h>
48
49QT_BEGIN_HEADER
50
51QT_BEGIN_NAMESPACE
52
53QT_MODULE(Network)
54
55#ifndef QT_NO_OPENSSL
56
57class QSslErrorPrivate;
58class Q_NETWORK_EXPORT QSslError
59{
60public:
61 enum SslError {
62 NoError,
63 UnableToGetIssuerCertificate,
64 UnableToDecryptCertificateSignature,
65 UnableToDecodeIssuerPublicKey,
66 CertificateSignatureFailed,
67 CertificateNotYetValid,
68 CertificateExpired,
69 InvalidNotBeforeField,
70 InvalidNotAfterField,
71 SelfSignedCertificate,
72 SelfSignedCertificateInChain,
73 UnableToGetLocalIssuerCertificate,
74 UnableToVerifyFirstCertificate,
75 CertificateRevoked,
76 InvalidCaCertificate,
77 PathLengthExceeded,
78 InvalidPurpose,
79 CertificateUntrusted,
80 CertificateRejected,
81 SubjectIssuerMismatch, // hostname mismatch?
82 AuthorityIssuerSerialNumberMismatch,
83 NoPeerCertificate,
84 HostNameMismatch,
85 NoSslSupport,
86 CertificateBlacklisted,
87 UnspecifiedError = -1
88 };
89
90 // RVCT compiler in debug build does not like about default values in const-
91 // So as an workaround we define all constructor overloads here explicitly
92 QSslError();
93 QSslError(SslError error);
94 QSslError(SslError error, const QSslCertificate &certificate);
95
96 QSslError(const QSslError &other);
97
98 ~QSslError();
99 QSslError &operator=(const QSslError &other);
100 bool operator==(const QSslError &other) const;
101 inline bool operator!=(const QSslError &other) const
102 { return !(*this == other); }
103
104 SslError error() const;
105 QString errorString() const;
106 QSslCertificate certificate() const;
107
108private:
109 QScopedPointer<QSslErrorPrivate> d;
110};
111
112#ifndef QT_NO_DEBUG_STREAM
113class QDebug;
114Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslError &error);
115Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslError::SslError &error);
116#endif
117
118#endif // QT_NO_OPENSSL
119
120QT_END_NAMESPACE
121
122QT_END_HEADER
123
124#endif
125