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 11namespace remoting { 12namespace protocol { 13 14class 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