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_CLIENT_AUTHENTICATOR_H_ 6 #define REMOTING_PROTOCOL_PAIRING_CLIENT_AUTHENTICATOR_H_ 7 8 #include "base/memory/weak_ptr.h" 9 #include "remoting/protocol/pairing_authenticator_base.h" 10 11 namespace remoting { 12 namespace protocol { 13 14 class PairingClientAuthenticator : public PairingAuthenticatorBase { 15 public: 16 PairingClientAuthenticator( 17 const std::string& client_id, 18 const std::string& paired_secret, 19 const FetchSecretCallback& fetch_pin_callback, 20 const std::string& authentication_tag); 21 virtual ~PairingClientAuthenticator(); 22 23 private: 24 // PairingAuthenticatorBase interface. 25 virtual void CreateV2AuthenticatorWithPIN( 26 State initial_state, 27 const SetAuthenticatorCallback& callback) OVERRIDE; 28 virtual void AddPairingElements(buzz::XmlElement* message) OVERRIDE; 29 30 void OnPinFetched(State initial_state, 31 const SetAuthenticatorCallback& callback, 32 const std::string& pin); 33 34 // Protocol state. 35 bool sent_client_id_; 36 std::string client_id_; 37 const std::string& paired_secret_; 38 FetchSecretCallback fetch_pin_callback_; 39 std::string authentication_tag_; 40 41 base::WeakPtrFactory<PairingClientAuthenticator> weak_factory_; 42 43 DISALLOW_COPY_AND_ASSIGN(PairingClientAuthenticator); 44 }; 45 46 } // namespace protocol 47 } // namespace remoting 48 49 #endif // REMOTING_PROTOCOL_PAIRING_AUTHENTICATOR_H_ 50