OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef REMOTING_PROTOCOL_AUTHENTICATOR_H_ | 5 #ifndef REMOTING_PROTOCOL_AUTHENTICATOR_H_ |
6 #define REMOTING_PROTOCOL_AUTHENTICATOR_H_ | 6 #define REMOTING_PROTOCOL_AUTHENTICATOR_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
| 10 #include "base/memory/scoped_ptr.h" |
| 11 |
10 namespace buzz { | 12 namespace buzz { |
11 class XmlElement; | 13 class XmlElement; |
12 } // namespace buzz | 14 } // namespace buzz |
13 | 15 |
14 namespace remoting { | 16 namespace remoting { |
15 namespace protocol { | 17 namespace protocol { |
16 | 18 |
17 class ChannelAuthenticator; | 19 class ChannelAuthenticator; |
18 | 20 |
19 // Authenticator is an abstract interface for authentication protocol | 21 // Authenticator is an abstract interface for authentication protocol |
(...skipping 30 matching lines...) Expand all Loading... |
50 ACCEPTED, | 52 ACCEPTED, |
51 | 53 |
52 // Session is rejected. | 54 // Session is rejected. |
53 REJECTED, | 55 REJECTED, |
54 }; | 56 }; |
55 | 57 |
56 // Returns true if |message| is an Authenticator message. | 58 // Returns true if |message| is an Authenticator message. |
57 static bool IsAuthenticatorMessage(const buzz::XmlElement* message); | 59 static bool IsAuthenticatorMessage(const buzz::XmlElement* message); |
58 | 60 |
59 // Creates an empty Authenticator message, owned by the caller. | 61 // Creates an empty Authenticator message, owned by the caller. |
60 static buzz::XmlElement* CreateEmptyAuthenticatorMessage(); | 62 static scoped_ptr<buzz::XmlElement> CreateEmptyAuthenticatorMessage(); |
61 | 63 |
62 // Finds Authenticator message among child elements of |message|, or | 64 // Finds Authenticator message among child elements of |message|, or |
63 // returns NULL otherwise. | 65 // returns NULL otherwise. |
64 static const buzz::XmlElement* FindAuthenticatorMessage( | 66 static const buzz::XmlElement* FindAuthenticatorMessage( |
65 const buzz::XmlElement* message); | 67 const buzz::XmlElement* message); |
66 | 68 |
67 Authenticator() {} | 69 Authenticator() {} |
68 virtual ~Authenticator() {} | 70 virtual ~Authenticator() {} |
69 | 71 |
70 // Returns current state of the authenticator. | 72 // Returns current state of the authenticator. |
71 virtual State state() const = 0; | 73 virtual State state() const = 0; |
72 | 74 |
73 // Called in response to incoming message received from the peer. | 75 // Called in response to incoming message received from the peer. |
74 // Should only be called when in WAITING_MESSAGE state. Caller | 76 // Should only be called when in WAITING_MESSAGE state. Caller |
75 // retains ownership of |message|. | 77 // retains ownership of |message|. |
76 virtual void ProcessMessage(const buzz::XmlElement* message) = 0; | 78 virtual void ProcessMessage(const buzz::XmlElement* message) = 0; |
77 | 79 |
78 // Must be called when in MESSAGE_READY state. Returns next | 80 // Must be called when in MESSAGE_READY state. Returns next |
79 // authentication message that needs to be sent to the peer. | 81 // authentication message that needs to be sent to the peer. |
80 virtual buzz::XmlElement* GetNextMessage() = 0; | 82 virtual scoped_ptr<buzz::XmlElement> GetNextMessage() = 0; |
81 | 83 |
82 // Creates new authenticator for a channel. Caller must take | 84 // Creates new authenticator for a channel. Can be called only in |
83 // ownership of the result. Can be called only in the ACCEPTED | 85 // the ACCEPTED state. |
84 // state. | 86 virtual scoped_ptr<ChannelAuthenticator> |
85 virtual ChannelAuthenticator* CreateChannelAuthenticator() const = 0; | 87 CreateChannelAuthenticator() const = 0; |
86 }; | 88 }; |
87 | 89 |
88 // Factory for Authenticator instances. | 90 // Factory for Authenticator instances. |
89 class AuthenticatorFactory { | 91 class AuthenticatorFactory { |
90 public: | 92 public: |
91 AuthenticatorFactory() {} | 93 AuthenticatorFactory() {} |
92 virtual ~AuthenticatorFactory() {} | 94 virtual ~AuthenticatorFactory() {} |
93 | 95 |
94 // Called when session-initiate stanza is received to create | 96 // Called when session-initiate stanza is received to create |
95 // authenticator for the new session. |first_message| specifies | 97 // authenticator for the new session. |first_message| specifies |
96 // authentication part of the session-initiate stanza so that | 98 // authentication part of the session-initiate stanza so that |
97 // appropriate type of Authenticator can be chosen for the session | 99 // appropriate type of Authenticator can be chosen for the session |
98 // (useful when multiple authenticators is supported). Returns NULL | 100 // (useful when multiple authenticators is supported). Returns NULL |
99 // if the |first_message| is invalid and the session should be | 101 // if the |first_message| is invalid and the session should be |
100 // rejected. ProcessMessage() should be called with |first_message| | 102 // rejected. ProcessMessage() should be called with |first_message| |
101 // for the result of this method. | 103 // for the result of this method. |
102 virtual Authenticator* CreateAuthenticator( | 104 virtual scoped_ptr<Authenticator> CreateAuthenticator( |
103 const std::string& remote_jid, | 105 const std::string& remote_jid, |
104 const buzz::XmlElement* first_message) = 0; | 106 const buzz::XmlElement* first_message) = 0; |
105 }; | 107 }; |
106 | 108 |
107 } // namespace protocol | 109 } // namespace protocol |
108 } // namespace remoting | 110 } // namespace remoting |
109 | 111 |
110 #endif // REMOTING_PROTOCOL_AUTHENTICATOR_H_ | 112 #endif // REMOTING_PROTOCOL_AUTHENTICATOR_H_ |
OLD | NEW |