qsslerror.h

Go to the documentation of this file.
00001 /****************************************************************************
00002 **
00003 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
00004 ** All rights reserved.
00005 ** Contact: Nokia Corporation (qt-info@nokia.com)
00006 **
00007 ** This file is part of the QtNetwork module of the Qt Toolkit.
00008 **
00009 ** $QT_BEGIN_LICENSE:LGPL$
00010 ** Commercial Usage
00011 ** Licensees holding valid Qt Commercial licenses may use this file in
00012 ** accordance with the Qt Commercial License Agreement provided with the
00013 ** Software or, alternatively, in accordance with the terms contained in
00014 ** a written agreement between you and Nokia.
00015 **
00016 ** GNU Lesser General Public License Usage
00017 ** Alternatively, this file may be used under the terms of the GNU Lesser
00018 ** General Public License version 2.1 as published by the Free Software
00019 ** Foundation and appearing in the file LICENSE.LGPL included in the
00020 ** packaging of this file.  Please review the following information to
00021 ** ensure the GNU Lesser General Public License version 2.1 requirements
00022 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
00023 **
00024 ** In addition, as a special exception, Nokia gives you certain additional
00025 ** rights.  These rights are described in the Nokia Qt LGPL Exception
00026 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this module.
00027 **
00028 ** GNU General Public License Usage
00029 ** Alternatively, this file may be used under the terms of the GNU
00030 ** General Public License version 3.0 as published by the Free Software
00031 ** Foundation and appearing in the file LICENSE.GPL included in the
00032 ** packaging of this file.  Please review the following information to
00033 ** ensure the GNU General Public License version 3.0 requirements will be
00034 ** met: http://www.gnu.org/copyleft/gpl.html.
00035 **
00036 ** If you have questions regarding the use of this file, please contact
00037 ** Nokia at qt-info@nokia.com.
00038 ** $QT_END_LICENSE$
00039 **
00040 ****************************************************************************/
00041 
00042 
00043 #ifndef QSSLERROR_H
00044 #define QSSLERROR_H
00045 
00046 #include <QtCore/qvariant.h>
00047 #include <QtNetwork/qsslcertificate.h>
00048 
00049 QT_BEGIN_HEADER
00050 
00051 QT_BEGIN_NAMESPACE
00052 
00053 QT_MODULE(Network)
00054 
00055 #ifndef QT_NO_OPENSSL
00056 
00057 class QSslErrorPrivate;
00058 class Q_NETWORK_EXPORT QSslError
00059 {
00060 public:
00061     enum SslError {
00062         NoError,
00063         UnableToGetIssuerCertificate,
00064         UnableToDecryptCertificateSignature,
00065         UnableToDecodeIssuerPublicKey,
00066         CertificateSignatureFailed,
00067         CertificateNotYetValid,
00068         CertificateExpired,
00069         InvalidNotBeforeField,
00070         InvalidNotAfterField,
00071         SelfSignedCertificate,
00072         SelfSignedCertificateInChain,
00073         UnableToGetLocalIssuerCertificate,
00074         UnableToVerifyFirstCertificate,
00075         CertificateRevoked,
00076         InvalidCaCertificate,
00077         PathLengthExceeded,
00078         InvalidPurpose,
00079         CertificateUntrusted,
00080         CertificateRejected,
00081         SubjectIssuerMismatch, // hostname mismatch?
00082         AuthorityIssuerSerialNumberMismatch,
00083         NoPeerCertificate,
00084         HostNameMismatch,
00085         NoSslSupport,
00086         UnspecifiedError = -1
00087     };
00088 
00089     // RVCT compiler in debug build does not like about default values in const-
00090     // So as an workaround we define all constructor overloads here explicitly
00091     QSslError();
00092     QSslError(SslError error);
00093     QSslError(SslError error, const QSslCertificate &certificate);
00094 
00095     QSslError(const QSslError &other);
00096 
00097     ~QSslError();
00098     QSslError &operator=(const QSslError &other);
00099     bool operator==(const QSslError &other) const;
00100     inline bool operator!=(const QSslError &other) const
00101     { return !(*this == other); }
00102 
00103     SslError error() const;
00104     QString errorString() const;
00105     QSslCertificate certificate() const;
00106     
00107 private:
00108     QScopedPointer<QSslErrorPrivate> d;
00109 };
00110 
00111 #ifndef QT_NO_DEBUG_STREAM
00112 class QDebug;
00113 Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslError &error);
00114 Q_NETWORK_EXPORT QDebug operator<<(QDebug debug, const QSslError::SslError &error);
00115 #endif
00116 
00117 #endif // QT_NO_OPENSSL
00118 
00119 QT_END_NAMESPACE
00120 
00121 QT_END_HEADER
00122 
00123 #endif