• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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