X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fclientauthhandler.h;h=b02c0c82063921a6add38e6238d5fc9b6ef10634;hp=f6f2fc9364a4088a8deb01adcf8e368733a93302;hb=HEAD;hpb=ce26c3770b254362c7bd1e094ba8f8bf22133653 diff --git a/src/client/clientauthhandler.h b/src/client/clientauthhandler.h index f6f2fc93..4611e15c 100644 --- a/src/client/clientauthhandler.h +++ b/src/client/clientauthhandler.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,11 +18,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef CLIENTAUTHHANDLER_H -#define CLIENTAUTHHANDLER_H +#pragma once -#include "compressor.h" #include "authhandler.h" +#include "compressor.h" #include "coreaccount.h" class QSslSocket; @@ -34,79 +33,83 @@ class ClientAuthHandler : public AuthHandler Q_OBJECT public: - ClientAuthHandler(CoreAccount account, QObject *parent = 0); + enum DigestVersion + { + Md5, + Sha2_512, + Latest = Sha2_512 + }; + + ClientAuthHandler(CoreAccount account, QObject* parent = nullptr); + + Peer* peer() const; public slots: void connectToCore(); - void login(const QString &previousError = QString()); - void login(const QString &user, const QString &password, bool remember); - void setupCore(const Protocol::SetupData &setupData); + void login(const QString& previousError = QString()); + void login(const QString& user, const QString& password, bool remember); + void setupCore(const Protocol::SetupData& setupData); signals: - void statusMessage(const QString &message); - void errorMessage(const QString &message); - void errorPopup(const QString &message); + void statusMessage(const QString& message); + void errorMessage(const QString& message); + void errorPopup(const QString& message); void transferProgress(int current, int max); - void requestDisconnect(const QString &errorString = QString(), bool wantReconnect = false); + void requestDisconnect(const QString& errorString = QString(), bool wantReconnect = false); void connectionReady(); - void loginSuccessful(const CoreAccount &account); - void handshakeComplete(RemotePeer *peer, const Protocol::SessionState &sessionState); + void loginSuccessful(const CoreAccount& account); + void handshakeComplete(RemotePeer* peer, const Protocol::SessionState& sessionState); // These signals MUST be handled synchronously! - void userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage = QString()); - void handleNoSslInClient(bool *accepted); - void handleNoSslInCore(bool *accepted); -#ifdef HAVE_SSL - void handleSslErrors(const QSslSocket *socket, bool *accepted, bool *permanently); -#endif + void userAuthenticationRequired(CoreAccount* account, bool* valid, const QString& errorMessage = QString()); + void handleNoSslInClient(bool* accepted); + void handleNoSslInCore(bool* accepted); + void handleSslErrors(const QSslSocket* socket, bool* accepted, bool* permanently); void encrypted(bool isEncrypted = true); - void startCoreSetup(const QVariantList &backendInfo); + void startCoreSetup(const QVariantList& backendInfo, const QVariantList& authenticatorInfo); void coreSetupSuccessful(); - void coreSetupFailed(const QString &error); + void coreSetupFailed(const QString& error); private: using AuthHandler::handle; - void handle(const Protocol::ClientDenied &msg); - void handle(const Protocol::ClientRegistered &msg); - void handle(const Protocol::SetupFailed &msg); - void handle(const Protocol::SetupDone &msg); - void handle(const Protocol::LoginFailed &msg); - void handle(const Protocol::LoginSuccess &msg); - void handle(const Protocol::SessionState &msg); + void handle(const Protocol::ClientDenied& msg) override; + void handle(const Protocol::ClientRegistered& msg) override; + void handle(const Protocol::SetupFailed& msg) override; + void handle(const Protocol::SetupDone& msg) override; + void handle(const Protocol::LoginFailed& msg) override; + void handle(const Protocol::LoginSuccess& msg) override; + void handle(const Protocol::SessionState& msg) override; - void setPeer(RemotePeer *peer); + void setPeer(RemotePeer* peer); void checkAndEnableSsl(bool coreSupportsSsl); void startRegistration(); private slots: void onSocketConnected(); void onSocketStateChanged(QAbstractSocket::SocketState state); - void onSocketError(QAbstractSocket::SocketError); - void onSocketDisconnected(); + void onSocketError(QAbstractSocket::SocketError) override; + void onSocketDisconnected() override; void onReadyRead(); -#ifdef HAVE_SSL void onSslSocketEncrypted(); void onSslErrors(); -#endif void onProtocolVersionMismatch(int actual, int expected); void onConnectionReady(); private: - RemotePeer *_peer; + RemotePeer* _peer; bool _coreConfigured; QVariantList _backendInfo; + QVariantList _authenticatorInfo; CoreAccount _account; bool _probing; bool _legacy; quint8 _connectionFeatures; }; - -#endif