Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
coreidentity.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 COREIDENTITY_H
22 #define COREIDENTITY_H
23 
24 #include "identity.h"
25 
26 #ifdef HAVE_SSL
27 #include <QSslKey>
28 #include <QSslCertificate>
29 #endif //HAVE_SSL
30 
31 class SignalProxy;
32 
33 // ========================================
34 // CoreCertManager
35 // ========================================
36 #ifdef HAVE_SSL
37 class CoreIdentity;
38 class CoreCertManager : public CertManager
39 {
41  Q_OBJECT
42 
43 public:
44  CoreCertManager(CoreIdentity &identity);
45 
46 #ifdef HAVE_SSL
47  virtual const QSslKey &sslKey() const;
48  virtual const QSslCertificate &sslCert() const;
49 
50 public slots:
51  virtual void setSslKey(const QByteArray &encoded);
52  virtual void setSslCert(const QByteArray &encoded);
53 #endif
54 
55  void setId(IdentityId id);
56 
57 private:
58  CoreIdentity &identity;
59 };
60 
61 
62 #endif //HAVE_SSL
63 
64 // =========================================
65 // CoreIdentity
66 // =========================================
67 class CoreIdentity : public Identity
68 {
70  Q_OBJECT
71 
72 public:
73  CoreIdentity(IdentityId id, QObject *parent = 0);
74  CoreIdentity(const Identity &other, QObject *parent = 0);
75  CoreIdentity(const CoreIdentity &other, QObject *parent = 0);
76 
77  void synchronize(SignalProxy *proxy);
78 
79 #ifdef HAVE_SSL
80  inline const QSslKey &sslKey() const { return _sslKey; }
81  inline void setSslKey(const QSslKey &key) { _sslKey = key; }
82  void setSslKey(const QByteArray &encoded);
83  inline const QSslCertificate &sslCert() const { return _sslCert; }
84  inline void setSslCert(const QSslCertificate &cert) { _sslCert = cert; }
85  void setSslCert(const QByteArray &encoded);
86 #endif /* HAVE_SSL */
87 
88  CoreIdentity &operator=(const CoreIdentity &identity);
89 
90 private:
91 #ifdef HAVE_SSL
92  QSslKey _sslKey;
93  QSslCertificate _sslCert;
94 
95  CoreCertManager _certManager;
96 #endif
97 };
98 
99 
100 #ifdef HAVE_SSL
101 inline const QSslKey &CoreCertManager::sslKey() const
102 {
103  return identity.sslKey();
104 }
105 
106 
107 inline const QSslCertificate &CoreCertManager::sslCert() const
108 {
109  return identity.sslCert();
110 }
111 
112 
113 #endif
114 
115 #endif //COREIDENTITY_H