1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef REMOTING_PROTOCOL_PAIRING_HOST_AUTHENTICATOR_H_ 6 #define REMOTING_PROTOCOL_PAIRING_HOST_AUTHENTICATOR_H_ 7 8 #include "base/memory/weak_ptr.h" 9 #include "remoting/protocol/pairing_authenticator_base.h" 10 #include "remoting/protocol/pairing_registry.h" 11 12 namespace remoting { 13 14 class RsaKeyPair; 15 16 namespace protocol { 17 18 class PairingRegistry; 19 20 class PairingHostAuthenticator : public PairingAuthenticatorBase { 21 public: 22 PairingHostAuthenticator( 23 scoped_refptr<PairingRegistry> pairing_registry, 24 const std::string& local_cert, 25 scoped_refptr<RsaKeyPair> key_pair, 26 const std::string& pin); 27 virtual ~PairingHostAuthenticator(); 28 29 // Authenticator interface. 30 virtual State state() const OVERRIDE; 31 virtual RejectionReason rejection_reason() const OVERRIDE; 32 virtual void ProcessMessage(const buzz::XmlElement* message, 33 const base::Closure& resume_callback) OVERRIDE; 34 35 private: 36 // PairingAuthenticatorBase interface. 37 virtual void CreateV2AuthenticatorWithPIN( 38 State initial_state, 39 const SetAuthenticatorCallback& callback) OVERRIDE; 40 virtual void AddPairingElements(buzz::XmlElement* message) OVERRIDE; 41 42 // Continue processing a protocol message once the pairing information for 43 // the client id has been received. 44 void ProcessMessageWithPairing(const buzz::XmlElement* message, 45 const base::Closure& resume_callback, 46 PairingRegistry::Pairing pairing); 47 48 // Protocol state. 49 scoped_refptr<PairingRegistry> pairing_registry_; 50 std::string local_cert_; 51 scoped_refptr<RsaKeyPair> key_pair_; 52 const std::string& pin_; 53 bool protocol_error_; 54 bool waiting_for_paired_secret_; 55 56 base::WeakPtrFactory<PairingHostAuthenticator> weak_factory_; 57 58 DISALLOW_COPY_AND_ASSIGN(PairingHostAuthenticator); 59 }; 60 61 } // namespace protocol 62 } // namespace remoting 63 64 #endif // REMOTING_PROTOCOL_PAIRING_AUTHENTICATOR_H_ 65