9f6fdc075231ad9b498c7ea0c332fb9f25f41a27
[quassel.git] / src / client / clientidentity.h
1 /***************************************************************************
2  *   Copyright (C) 2005-2018 by the Quassel Project                        *
3  *   devel@quassel-irc.org                                                 *
4  *                                                                         *
5  *   This program is free software; you can redistribute it and/or modify  *
6  *   it under the terms of the GNU General Public License as published by  *
7  *   the Free Software Foundation; either version 2 of the License, or     *
8  *   (at your option) version 3.                                           *
9  *                                                                         *
10  *   This program is distributed in the hope that it will be useful,       *
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
13  *   GNU General Public License for more details.                          *
14  *                                                                         *
15  *   You should have received a copy of the GNU General Public License     *
16  *   along with this program; if not, write to the                         *
17  *   Free Software Foundation, Inc.,                                       *
18  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
19  ***************************************************************************/
20
21 #pragma once
22
23 #include "identity.h"
24
25 class ClientCertManager;
26
27 class CertIdentity : public Identity
28 {
29     Q_OBJECT
30
31 public:
32     CertIdentity(IdentityId id = 0, QObject *parent = 0);
33     CertIdentity(const Identity &other, QObject *parent = 0);
34     CertIdentity(const CertIdentity &other, QObject *parent = 0);
35
36 #ifdef HAVE_SSL
37     inline bool isDirty() const { return _isDirty; }
38 #else
39     inline bool isDirty() const { return false; }
40 #endif
41
42 #ifdef HAVE_SSL
43     void enableEditSsl(bool enable = true);
44     inline const QSslKey &sslKey() const { return _sslKey; }
45     inline const QSslCertificate &sslCert() const { return _sslCert; }
46
47     void setSslKey(const QSslKey &key);
48     void setSslCert(const QSslCertificate &cert);
49
50 public slots:
51     void requestUpdateSslSettings();
52
53 signals:
54     void sslSettingsUpdated();
55
56 private slots:
57     void markClean();
58
59 private:
60     ClientCertManager *_certManager;
61     bool _isDirty;
62     QSslKey _sslKey;
63     QSslCertificate _sslCert;
64 #endif //HAVE_SSL
65 };
66
67
68 // ========================================
69 //  ClientCertManager
70 // ========================================
71 #ifdef HAVE_SSL
72 class ClientCertManager : public CertManager
73 {
74     Q_OBJECT
75
76 public:
77     ClientCertManager(IdentityId id, CertIdentity *parent) : CertManager(id, parent), _certIdentity(parent) {}
78
79     virtual inline const QSslKey &sslKey() const { return _certIdentity->sslKey(); }
80     virtual inline const QSslCertificate &sslCert() const { return _certIdentity->sslCert(); }
81
82 public slots:
83     virtual void setSslKey(const QByteArray &encoded);
84     virtual void setSslCert(const QByteArray &encoded);
85
86 private:
87     CertIdentity *_certIdentity;
88 };
89
90 #endif //HAVE_SSL