Home | History | Annotate | Download | only in protocol
      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