Home | History | Annotate | Download | only in protocol
      1 // Copyright (c) 2012 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_ME2ME_HOST_AUTHENTICATOR_FACTORY_H_
      6 #define REMOTING_PROTOCOL_ME2ME_HOST_AUTHENTICATOR_FACTORY_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/compiler_specific.h"
     12 #include "base/memory/ref_counted.h"
     13 #include "base/memory/scoped_ptr.h"
     14 #include "remoting/protocol/authentication_method.h"
     15 #include "remoting/protocol/authenticator.h"
     16 #include "remoting/protocol/third_party_host_authenticator.h"
     17 #include "remoting/protocol/token_validator.h"
     18 
     19 namespace remoting {
     20 
     21 class RsaKeyPair;
     22 
     23 namespace protocol {
     24 
     25 class PairingRegistry;
     26 
     27 class Me2MeHostAuthenticatorFactory : public AuthenticatorFactory {
     28  public:
     29   // Create a factory that dispenses shared secret authenticators.
     30   static scoped_ptr<AuthenticatorFactory> CreateWithSharedSecret(
     31       bool use_service_account,
     32       const std::string& host_owner,
     33       const std::string& local_cert,
     34       scoped_refptr<RsaKeyPair> key_pair,
     35       const SharedSecretHash& shared_secret_hash,
     36       scoped_refptr<PairingRegistry> pairing_registry);
     37 
     38   // Create a factory that dispenses third party authenticators.
     39   static scoped_ptr<AuthenticatorFactory> CreateWithThirdPartyAuth(
     40       bool use_service_account,
     41       const std::string& host_owner,
     42       const std::string& local_cert,
     43       scoped_refptr<RsaKeyPair> key_pair,
     44       scoped_ptr<TokenValidatorFactory> token_validator_factory);
     45 
     46   // Create a factory that dispenses rejecting authenticators (used when the
     47   // host config/policy is inconsistent)
     48   static scoped_ptr<AuthenticatorFactory> CreateRejecting();
     49 
     50   Me2MeHostAuthenticatorFactory();
     51   virtual ~Me2MeHostAuthenticatorFactory();
     52 
     53   // AuthenticatorFactory interface.
     54   virtual scoped_ptr<Authenticator> CreateAuthenticator(
     55       const std::string& local_jid,
     56       const std::string& remote_jid,
     57       const buzz::XmlElement* first_message) OVERRIDE;
     58 
     59  private:
     60   // Used for all host authenticators.
     61   bool use_service_account_;
     62   std::string host_owner_;
     63   std::string local_cert_;
     64   scoped_refptr<RsaKeyPair> key_pair_;
     65 
     66   // Used only for shared secret host authenticators.
     67   SharedSecretHash shared_secret_hash_;
     68 
     69   // Used only for third party host authenticators.
     70   scoped_ptr<TokenValidatorFactory> token_validator_factory_;
     71 
     72   // Used only for pairing host authenticators.
     73   scoped_refptr<PairingRegistry> pairing_registry_;
     74 
     75   DISALLOW_COPY_AND_ASSIGN(Me2MeHostAuthenticatorFactory);
     76 };
     77 
     78 }  // namespace protocol
     79 }  // namespace remoting
     80 
     81 #endif  // REMOTING_PROTOCOL_ME2ME_HOST_AUTHENTICATOR_FACTORY_H_
     82