190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef REMOTING_PROTOCOL_PAIRING_CLIENT_AUTHENTICATOR_H_ 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define REMOTING_PROTOCOL_PAIRING_CLIENT_AUTHENTICATOR_H_ 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/weak_ptr.h" 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "remoting/protocol/pairing_authenticator_base.h" 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace remoting { 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace protocol { 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class PairingClientAuthenticator : public PairingAuthenticatorBase { 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) PairingClientAuthenticator( 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& client_id, 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& paired_secret, 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const FetchSecretCallback& fetch_pin_callback, 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& authentication_tag); 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~PairingClientAuthenticator(); 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // PairingAuthenticatorBase interface. 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void CreateV2AuthenticatorWithPIN( 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) State initial_state, 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const SetAuthenticatorCallback& callback) OVERRIDE; 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual void AddPairingElements(buzz::XmlElement* message) OVERRIDE; 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void OnPinFetched(State initial_state, 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const SetAuthenticatorCallback& callback, 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& pin); 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Protocol state. 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool sent_client_id_; 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string client_id_; 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const std::string& paired_secret_; 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) FetchSecretCallback fetch_pin_callback_; 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) std::string authentication_tag_; 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::WeakPtrFactory<PairingClientAuthenticator> weak_factory_; 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PairingClientAuthenticator); 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace protocol 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)} // namespace remoting 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif // REMOTING_PROTOCOL_PAIRING_AUTHENTICATOR_H_ 50