Index: remoting/protocol/negotiating_authenticator_base.cc |
diff --git a/remoting/protocol/negotiating_authenticator_base.cc b/remoting/protocol/negotiating_authenticator_base.cc |
index dbb3aac7609a6367e66773f771beb1da448e25cd..5fe81293caa67023ebb65a19172aa925150466db 100644 |
--- a/remoting/protocol/negotiating_authenticator_base.cc |
+++ b/remoting/protocol/negotiating_authenticator_base.cc |
@@ -13,11 +13,26 @@ |
#include "base/strings/string_split.h" |
#include "remoting/base/rsa_key_pair.h" |
#include "remoting/protocol/channel_authenticator.h" |
+#include "remoting/protocol/name_value_map.h" |
#include "third_party/webrtc/libjingle/xmllite/xmlelement.h" |
namespace remoting { |
namespace protocol { |
+namespace { |
+ |
+const NameMapElement<NegotiatingAuthenticatorBase::Method> |
+ kAuthenticationMethodStrings[] = { |
+ {NegotiatingAuthenticatorBase::Method::SPAKE2_SHARED_SECRET_PLAIN, |
+ "spake2_plain"}, |
+ {NegotiatingAuthenticatorBase::Method::SPAKE2_SHARED_SECRET_HMAC, |
+ "spake2_hmac"}, |
+ {NegotiatingAuthenticatorBase::Method::SPAKE2_PAIR, "spake2_pair"}, |
+ {NegotiatingAuthenticatorBase::Method::THIRD_PARTY, "third_party"}, |
+}; |
+ |
+} // namespace |
+ |
const buzz::StaticQName NegotiatingAuthenticatorBase::kMethodAttributeQName = |
{ "", "method" }; |
const buzz::StaticQName |
@@ -47,6 +62,20 @@ NegotiatingAuthenticatorBase::rejection_reason() const { |
return rejection_reason_; |
} |
+// static |
+NegotiatingAuthenticatorBase::Method |
+NegotiatingAuthenticatorBase::ParseMethodString(const std::string& value) { |
+ Method result; |
+ if (!NameToValue(kAuthenticationMethodStrings, value, &result)) |
+ return Method::INVALID; |
+ return result; |
+} |
+ |
+// static |
+std::string NegotiatingAuthenticatorBase::MethodToString(Method method) { |
+ return ValueToName(kAuthenticationMethodStrings, method); |
+} |
+ |
void NegotiatingAuthenticatorBase::ProcessMessageInternal( |
const buzz::XmlElement* message, |
const base::Closure& resume_callback) { |
@@ -78,7 +107,7 @@ void NegotiatingAuthenticatorBase::UpdateState( |
scoped_ptr<buzz::XmlElement> |
NegotiatingAuthenticatorBase::GetNextMessageInternal() { |
DCHECK_EQ(state(), MESSAGE_READY); |
- DCHECK(current_method_ != AuthenticationMethod::INVALID); |
+ DCHECK(current_method_ != Method::INVALID); |
scoped_ptr<buzz::XmlElement> result; |
if (current_authenticator_->state() == MESSAGE_READY) { |
@@ -88,13 +117,12 @@ NegotiatingAuthenticatorBase::GetNextMessageInternal() { |
} |
state_ = current_authenticator_->state(); |
DCHECK(state_ == ACCEPTED || state_ == WAITING_MESSAGE); |
- result->AddAttr(kMethodAttributeQName, |
- AuthenticationMethodToString(current_method_)); |
+ result->AddAttr(kMethodAttributeQName, MethodToString(current_method_)); |
return result; |
} |
-void NegotiatingAuthenticatorBase::AddMethod(AuthenticationMethod method) { |
- DCHECK(method != AuthenticationMethod::INVALID); |
+void NegotiatingAuthenticatorBase::AddMethod(Method method) { |
+ DCHECK(method != Method::INVALID); |
methods_.push_back(method); |
} |