12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- // Copyright 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef REMOTING_PROTOCOL_PAIRING_CLIENT_AUTHENTICATOR_H_
- #define REMOTING_PROTOCOL_PAIRING_CLIENT_AUTHENTICATOR_H_
- #include "base/memory/weak_ptr.h"
- #include "remoting/protocol/client_authentication_config.h"
- #include "remoting/protocol/pairing_authenticator_base.h"
- namespace remoting {
- namespace protocol {
- class PairingClientAuthenticator : public PairingAuthenticatorBase {
- public:
- PairingClientAuthenticator(
- const ClientAuthenticationConfig& client_auth_config,
- const CreateBaseAuthenticatorCallback&
- create_base_authenticator_callback);
- PairingClientAuthenticator(const PairingClientAuthenticator&) = delete;
- PairingClientAuthenticator& operator=(const PairingClientAuthenticator&) =
- delete;
- ~PairingClientAuthenticator() override;
- // Start() or StartPaired() must be called after the authenticator is created.
- // Start() handles both cases when pairing exists and when it doesn't.
- // StartPaired() can only be used when pairing exists (i.e. client_id and
- // pairing_secret are set in the |client_auth_config|). It is used to
- // initialize the authenticator synchronously in
- // NegotiatingClientAuthenticator, while Start() may be executed
- // asynchronously to fetch the PIN.
- void Start(State initial_state, base::OnceClosure resume_callback);
- void StartPaired(State initial_state);
- // Authenticator interface.
- State state() const override;
- private:
- // PairingAuthenticatorBase overrides.
- void CreateSpakeAuthenticatorWithPin(
- State initial_state,
- base::OnceClosure resume_callback) override;
- void OnPinFetched(State initial_state,
- base::OnceClosure resume_callback,
- const std::string& pin);
- ClientAuthenticationConfig client_auth_config_;
- CreateBaseAuthenticatorCallback create_base_authenticator_callback_;
- // Set to true if a PIN-based authenticator has been requested but has not
- // yet been set.
- bool waiting_for_pin_ = false;
- base::WeakPtrFactory<PairingClientAuthenticator> weak_factory_{this};
- };
- } // namespace protocol
- } // namespace remoting
- #endif // REMOTING_PROTOCOL_PAIRING_CLIENT_AUTHENTICATOR_H_
|