/***************************************************************************
- * Copyright (C) 2005-2015 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "client.h"
#include "signalproxy.h"
-INIT_SYNCABLE_OBJECT(CertIdentity)
-CertIdentity::CertIdentity(IdentityId id, QObject *parent)
+CertIdentity::CertIdentity(IdentityId id, QObject* parent)
: Identity(id, parent)
-#ifdef HAVE_SSL
- , _certManager(0),
- _isDirty(false)
-#endif
-{
-}
-
+{}
-CertIdentity::CertIdentity(const Identity &other, QObject *parent)
+CertIdentity::CertIdentity(const Identity& other, QObject* parent)
: Identity(other, parent)
-#ifdef HAVE_SSL
- , _certManager(0),
- _isDirty(false)
-#endif
-{
-}
+{}
-
-CertIdentity::CertIdentity(const CertIdentity &other, QObject *parent)
+CertIdentity::CertIdentity(const CertIdentity& other, QObject* parent)
: Identity(other, parent)
-#ifdef HAVE_SSL
- , _certManager(0),
- _isDirty(other._isDirty),
- _sslKey(other._sslKey),
- _sslCert(other._sslCert)
-#endif
-{
-}
-
+ , _isDirty(other._isDirty)
+ , _sslKey(other._sslKey)
+ , _sslCert(other._sslCert)
+{}
-#ifdef HAVE_SSL
void CertIdentity::enableEditSsl(bool enable)
{
if (!enable || _certManager)
return;
_certManager = new ClientCertManager(id(), this);
- if (isValid()) { // this means we are not a newly created Identity but have a proper Id
+ if (isValid()) { // this means we are not a newly created Identity but have a proper Id
Client::signalProxy()->synchronize(_certManager);
- connect(_certManager, SIGNAL(updated()), this, SLOT(markClean()));
- connect(_certManager, SIGNAL(initDone()), this, SLOT(markClean()));
+ connect(_certManager, &SyncableObject::updated, this, &CertIdentity::markClean);
+ connect(_certManager, &SyncableObject::initDone, this, &CertIdentity::markClean);
}
}
-
-void CertIdentity::setSslKey(const QSslKey &key)
+void CertIdentity::setSslKey(const QSslKey& key)
{
if (key.toPem() == _sslKey.toPem())
return;
_isDirty = true;
}
-
-void CertIdentity::setSslCert(const QSslCertificate &cert)
+void CertIdentity::setSslCert(const QSslCertificate& cert)
{
if (cert.toPem() == _sslCert.toPem())
return;
_isDirty = true;
}
-
void CertIdentity::requestUpdateSslSettings()
{
if (!_certManager)
_certManager->requestUpdate(_certManager->toVariantMap());
}
-
void CertIdentity::markClean()
{
_isDirty = false;
emit sslSettingsUpdated();
}
-
// ========================================
// ClientCertManager
// ========================================
-void ClientCertManager::setSslKey(const QByteArray &encoded)
+void ClientCertManager::setSslKey(const QByteArray& encoded)
{
QSslKey key(encoded, QSsl::Rsa);
+ if (key.isNull() && Client::isCoreFeatureEnabled(Quassel::Feature::EcdsaCertfpKeys))
+ key = QSslKey(encoded, QSsl::Ec);
if (key.isNull())
key = QSslKey(encoded, QSsl::Dsa);
_certIdentity->setSslKey(key);
}
-
-void ClientCertManager::setSslCert(const QByteArray &encoded)
+void ClientCertManager::setSslCert(const QByteArray& encoded)
{
_certIdentity->setSslCert(QSslCertificate(encoded));
}
-
-
-#endif // HAVE_SSL