Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
clientidentity.h
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 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 #ifndef CLIENTIDENTITY_H
22 #define CLIENTIDENTITY_H
23 
24 #include "identity.h"
25 
26 class ClientCertManager;
27 
28 class CertIdentity : public Identity
29 {
31  Q_OBJECT
32 
33 public:
34  CertIdentity(IdentityId id = 0, QObject *parent = 0);
35  CertIdentity(const Identity &other, QObject *parent = 0);
36  CertIdentity(const CertIdentity &other, QObject *parent = 0);
37 
38 #ifdef HAVE_SSL
39  inline bool isDirty() const { return _isDirty; }
40 #else
41  inline bool isDirty() const { return false; }
42 #endif
43 
44 #ifdef HAVE_SSL
45  void enableEditSsl(bool enable = true);
46  inline const QSslKey &sslKey() const { return _sslKey; }
47  inline const QSslCertificate &sslCert() const { return _sslCert; }
48 
49  void setSslKey(const QSslKey &key);
50  void setSslCert(const QSslCertificate &cert);
51 
52 public slots:
53  void requestUpdateSslSettings();
54 
55 signals:
56  void sslSettingsUpdated();
57 
58 private slots:
59  void markClean();
60 
61 private:
62  ClientCertManager *_certManager;
63  bool _isDirty;
64  QSslKey _sslKey;
65  QSslCertificate _sslCert;
66 #endif //HAVE_SSL
67 };
68 
69 
70 // ========================================
71 // ClientCertManager
72 // ========================================
73 #ifdef HAVE_SSL
74 class ClientCertManager : public CertManager
75 {
76  Q_OBJECT
77 
78 public:
79  ClientCertManager(IdentityId id, CertIdentity *parent) : CertManager(id, parent), _certIdentity(parent) {}
80 
81  virtual inline const QSslKey &sslKey() const { return _certIdentity->sslKey(); }
82  virtual inline const QSslCertificate &sslCert() const { return _certIdentity->sslCert(); }
83 
84 public slots:
85  virtual void setSslKey(const QByteArray &encoded);
86  virtual void setSslCert(const QByteArray &encoded);
87 
88 private:
89  CertIdentity *_certIdentity;
90 };
91 
92 
93 #endif //HAVE_SSL
94 
95 #endif //CLIENTIDENTITY_H