// 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_HOST_AUTHENTICATOR_H_ #define REMOTING_PROTOCOL_PAIRING_HOST_AUTHENTICATOR_H_ #include "base/memory/weak_ptr.h" #include "remoting/protocol/pairing_authenticator_base.h" #include "remoting/protocol/pairing_registry.h" namespace remoting { class RsaKeyPair; namespace protocol { class PairingRegistry; class PairingHostAuthenticator : public PairingAuthenticatorBase { public: PairingHostAuthenticator( scoped_refptr<PairingRegistry> pairing_registry, const std::string& local_cert, scoped_refptr<RsaKeyPair> key_pair, const std::string& pin); virtual ~PairingHostAuthenticator(); // Authenticator interface. virtual State state() const OVERRIDE; virtual RejectionReason rejection_reason() const OVERRIDE; virtual void ProcessMessage(const buzz::XmlElement* message, const base::Closure& resume_callback) OVERRIDE; private: // PairingAuthenticatorBase interface. virtual void CreateV2AuthenticatorWithPIN( State initial_state, const SetAuthenticatorCallback& callback) OVERRIDE; virtual void AddPairingElements(buzz::XmlElement* message) OVERRIDE; // Continue processing a protocol message once the pairing information for // the client id has been received. void ProcessMessageWithPairing(const buzz::XmlElement* message, const base::Closure& resume_callback, PairingRegistry::Pairing pairing); // Protocol state. scoped_refptr<PairingRegistry> pairing_registry_; std::string local_cert_; scoped_refptr<RsaKeyPair> key_pair_; const std::string& pin_; bool protocol_error_; bool waiting_for_paired_secret_; base::WeakPtrFactory<PairingHostAuthenticator> weak_factory_; DISALLOW_COPY_AND_ASSIGN(PairingHostAuthenticator); }; } // namespace protocol } // namespace remoting #endif // REMOTING_PROTOCOL_PAIRING_AUTHENTICATOR_H_