Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / remoting / protocol / me2me_host_authenticator_factory.h
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   ~Me2MeHostAuthenticatorFactory() override;
52
53   // AuthenticatorFactory interface.
54   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_