6#ifndef QXMPPSASLMANAGER_P_H
7#define QXMPPSASLMANAGER_P_H
9#include "QXmppAuthenticationError.h"
10#include "QXmppOutgoingClient.h"
11#include "QXmppPromise.h"
12#include "QXmppSasl_p.h"
20namespace QXmpp::Private {
22class SendDataInterface;
28 using AuthError = std::pair<QString, AuthenticationError>;
29 using AuthResult = std::variant<Success, AuthError>;
30 static constexpr QStringView TaskName = u
"SASL 1 authentication";
32 explicit SaslManager(SendDataInterface *socket) : m_socket(socket) { }
35 HandleElementResult handleElement(
const QDomElement &el);
38 SendDataInterface *m_socket;
39 std::unique_ptr<QXmppSaslClient> m_saslClient;
40 std::optional<QXmppPromise<AuthResult>> m_promise;
47 using AuthError = std::pair<QString, AuthenticationError>;
48 using AuthResult = std::variant<Sasl2::Success, AuthError>;
49 static constexpr QStringView TaskName = u
"SASL 2 authentication";
51 explicit Sasl2Manager(SendDataInterface *socket) : m_socket(socket) { }
53 static bool hasAvailableMechanism(
const QXmppConfiguration &config,
const QList<QString> &mechanisms);
56 HandleElementResult handleElement(
const QDomElement &);
57 bool fastUsed()
const {
return m_fastUsed; }
61 std::unique_ptr<QXmppSaslClient> sasl;
63 std::optional<Sasl2::Continue> unsupportedContinue;
66 SendDataInterface *m_socket;
67 std::optional<State> m_state;
68 bool m_fastUsed =
false;
78 bool hasToken()
const;
79 void onSasl2Authenticate(Sasl2::Authenticate &auth,
const Sasl2::StreamFeature &feature);
80 void onSasl2Success(
const Sasl2::Success &success);
81 void onSasl2Failure();
82 bool fastFailed()
const {
return m_fastFailed; }
83 bool tokenChanged()
const {
return m_tokenChanged; }
87 std::optional<SaslHtMechanism> requestedMechanism;
88 bool m_tokenChanged =
false;
89 bool m_fastFailed =
false;
The QXmppConfiguration class holds configuration options.
Definition QXmppConfiguration.h:37
The QXmppLoggable class represents a source of logging messages.
Definition QXmppLogger.h:109
Create and update QXmppTask objects to communicate results of asynchronous operations.
Definition QXmppTask.h:81
The QXmppStreamFeatures class represents the features returned by an XMPP server or client.
Definition QXmppStreamFeatures.h:23
Definition QXmppTask.h:330