| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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_NEGOTIATING_AUTHENTICATOR_BASE_H_ | 5 #ifndef REMOTING_PROTOCOL_NEGOTIATING_AUTHENTICATOR_BASE_H_ |
| 6 #define REMOTING_PROTOCOL_NEGOTIATING_AUTHENTICATOR_BASE_H_ | 6 #define REMOTING_PROTOCOL_NEGOTIATING_AUTHENTICATOR_BASE_H_ |
| 7 | 7 |
| 8 #include <memory> |
| 8 #include <string> | 9 #include <string> |
| 9 #include <vector> | 10 #include <vector> |
| 10 | 11 |
| 11 #include "base/gtest_prod_util.h" | 12 #include "base/gtest_prod_util.h" |
| 12 #include "base/macros.h" | 13 #include "base/macros.h" |
| 13 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
| 14 #include "base/memory/scoped_ptr.h" | |
| 15 #include "remoting/protocol/authenticator.h" | 15 #include "remoting/protocol/authenticator.h" |
| 16 | 16 |
| 17 namespace buzz { | 17 namespace buzz { |
| 18 struct StaticQName; | 18 struct StaticQName; |
| 19 } // namespace buzz | 19 } // namespace buzz |
| 20 | 20 |
| 21 namespace remoting { | 21 namespace remoting { |
| 22 namespace protocol { | 22 namespace protocol { |
| 23 | 23 |
| 24 // This class provides the common base for a meta-authenticator that allows | 24 // This class provides the common base for a meta-authenticator that allows |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 THIRD_PARTY_SPAKE2_CURVE25519, | 83 THIRD_PARTY_SPAKE2_CURVE25519, |
| 84 }; | 84 }; |
| 85 | 85 |
| 86 ~NegotiatingAuthenticatorBase() override; | 86 ~NegotiatingAuthenticatorBase() override; |
| 87 | 87 |
| 88 // Authenticator interface. | 88 // Authenticator interface. |
| 89 State state() const override; | 89 State state() const override; |
| 90 bool started() const override; | 90 bool started() const override; |
| 91 RejectionReason rejection_reason() const override; | 91 RejectionReason rejection_reason() const override; |
| 92 const std::string& GetAuthKey() const override; | 92 const std::string& GetAuthKey() const override; |
| 93 scoped_ptr<ChannelAuthenticator> CreateChannelAuthenticator() const override; | 93 std::unique_ptr<ChannelAuthenticator> CreateChannelAuthenticator() |
| 94 const override; |
| 94 | 95 |
| 95 // Calls |current_authenticator_| to process |message|, passing the supplied | 96 // Calls |current_authenticator_| to process |message|, passing the supplied |
| 96 // |resume_callback|. | 97 // |resume_callback|. |
| 97 void ProcessMessageInternal(const buzz::XmlElement* message, | 98 void ProcessMessageInternal(const buzz::XmlElement* message, |
| 98 const base::Closure& resume_callback); | 99 const base::Closure& resume_callback); |
| 99 | 100 |
| 100 protected: | 101 protected: |
| 101 friend class NegotiatingAuthenticatorTest; | 102 friend class NegotiatingAuthenticatorTest; |
| 102 | 103 |
| 103 static const buzz::StaticQName kMethodAttributeQName; | 104 static const buzz::StaticQName kMethodAttributeQName; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 117 explicit NegotiatingAuthenticatorBase(Authenticator::State initial_state); | 118 explicit NegotiatingAuthenticatorBase(Authenticator::State initial_state); |
| 118 | 119 |
| 119 void AddMethod(Method method); | 120 void AddMethod(Method method); |
| 120 | 121 |
| 121 // Updates |state_| to reflect the current underlying authenticator state. | 122 // Updates |state_| to reflect the current underlying authenticator state. |
| 122 // |resume_callback| is called after the state is updated. | 123 // |resume_callback| is called after the state is updated. |
| 123 void UpdateState(const base::Closure& resume_callback); | 124 void UpdateState(const base::Closure& resume_callback); |
| 124 | 125 |
| 125 // Gets the next message from |current_authenticator_|, if any, and fills in | 126 // Gets the next message from |current_authenticator_|, if any, and fills in |
| 126 // the 'method' tag with |current_method_|. | 127 // the 'method' tag with |current_method_|. |
| 127 virtual scoped_ptr<buzz::XmlElement> GetNextMessageInternal(); | 128 virtual std::unique_ptr<buzz::XmlElement> GetNextMessageInternal(); |
| 128 | 129 |
| 129 std::vector<Method> methods_; | 130 std::vector<Method> methods_; |
| 130 Method current_method_ = Method::INVALID; | 131 Method current_method_ = Method::INVALID; |
| 131 scoped_ptr<Authenticator> current_authenticator_; | 132 std::unique_ptr<Authenticator> current_authenticator_; |
| 132 State state_; | 133 State state_; |
| 133 RejectionReason rejection_reason_ = INVALID_CREDENTIALS; | 134 RejectionReason rejection_reason_ = INVALID_CREDENTIALS; |
| 134 | 135 |
| 135 private: | 136 private: |
| 136 DISALLOW_COPY_AND_ASSIGN(NegotiatingAuthenticatorBase); | 137 DISALLOW_COPY_AND_ASSIGN(NegotiatingAuthenticatorBase); |
| 137 }; | 138 }; |
| 138 | 139 |
| 139 } // namespace protocol | 140 } // namespace protocol |
| 140 } // namespace remoting | 141 } // namespace remoting |
| 141 | 142 |
| 142 #endif // REMOTING_PROTOCOL_NEGOTIATING_AUTHENTICATOR_BASE_H_ | 143 #endif // REMOTING_PROTOCOL_NEGOTIATING_AUTHENTICATOR_BASE_H_ |
| OLD | NEW |