Index: remoting/protocol/v1_authenticator.cc |
diff --git a/remoting/protocol/v1_authenticator.cc b/remoting/protocol/v1_authenticator.cc |
deleted file mode 100644 |
index bff07b9e42c2477f687b30b8c841f8c0a6c89b91..0000000000000000000000000000000000000000 |
--- a/remoting/protocol/v1_authenticator.cc |
+++ /dev/null |
@@ -1,168 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "remoting/protocol/v1_authenticator.h" |
- |
-#include "base/base64.h" |
-#include "base/logging.h" |
-#include "crypto/rsa_private_key.h" |
-#include "remoting/base/constants.h" |
-#include "remoting/protocol/auth_util.h" |
-#include "remoting/protocol/ssl_hmac_channel_authenticator.h" |
-#include "third_party/libjingle/source/talk/xmllite/xmlelement.h" |
- |
-using buzz::QName; |
-using buzz::XmlElement; |
- |
-namespace remoting { |
-namespace protocol { |
- |
-namespace { |
-const char kAuthTokenTag[] = "auth-token"; |
-const char kCertificateTag[] = "certificate"; |
-} // namespace |
- |
-V1ClientAuthenticator::V1ClientAuthenticator( |
- const std::string& local_jid, |
- const std::string& shared_secret) |
- : local_jid_(local_jid), |
- shared_secret_(shared_secret), |
- state_(MESSAGE_READY), |
- rejection_reason_(INVALID_CREDENTIALS) { |
-} |
- |
-V1ClientAuthenticator::~V1ClientAuthenticator() { |
-} |
- |
-Authenticator::State V1ClientAuthenticator::state() const { |
- return state_; |
-} |
- |
-Authenticator::RejectionReason V1ClientAuthenticator::rejection_reason() const { |
- DCHECK_EQ(state_, REJECTED); |
- return rejection_reason_; |
-} |
- |
-void V1ClientAuthenticator::ProcessMessage(const XmlElement* message) { |
- DCHECK_EQ(state_, WAITING_MESSAGE); |
- |
- // Parse the certificate. |
- const XmlElement* cert_tag = |
- message->FirstNamed(QName(kChromotingXmlNamespace, kCertificateTag)); |
- if (cert_tag) { |
- std::string base64_cert = cert_tag->BodyText(); |
- if (!base::Base64Decode(base64_cert, &remote_cert_)) { |
- LOG(ERROR) << "Failed to decode certificate received from the peer."; |
- remote_cert_.clear(); |
- } |
- } |
- |
- if (remote_cert_.empty()) { |
- state_ = REJECTED; |
- rejection_reason_ = PROTOCOL_ERROR; |
- } else { |
- state_ = ACCEPTED; |
- } |
-} |
- |
-scoped_ptr<XmlElement> V1ClientAuthenticator::GetNextMessage() { |
- DCHECK_EQ(state_, MESSAGE_READY); |
- |
- scoped_ptr<XmlElement> message = CreateEmptyAuthenticatorMessage(); |
- std::string token = |
- protocol::GenerateSupportAuthToken(local_jid_, shared_secret_); |
- XmlElement* auth_token_tag = new XmlElement( |
- QName(kChromotingXmlNamespace, kAuthTokenTag)); |
- auth_token_tag->SetBodyText(token); |
- message->AddElement(auth_token_tag); |
- |
- state_ = WAITING_MESSAGE; |
- return message.Pass(); |
-} |
- |
-scoped_ptr<ChannelAuthenticator> |
-V1ClientAuthenticator::CreateChannelAuthenticator() const { |
- DCHECK_EQ(state_, ACCEPTED); |
- scoped_ptr<SslHmacChannelAuthenticator> result = |
- SslHmacChannelAuthenticator::CreateForClient( |
- remote_cert_, shared_secret_); |
- result->SetLegacyOneWayMode(SslHmacChannelAuthenticator::SEND_ONLY); |
- return result.PassAs<ChannelAuthenticator>(); |
-}; |
- |
-V1HostAuthenticator::V1HostAuthenticator( |
- const std::string& local_cert, |
- const crypto::RSAPrivateKey& local_private_key, |
- const std::string& shared_secret, |
- const std::string& remote_jid) |
- : local_cert_(local_cert), |
- local_private_key_(local_private_key.Copy()), |
- shared_secret_(shared_secret), |
- remote_jid_(remote_jid), |
- state_(WAITING_MESSAGE), |
- rejection_reason_(INVALID_CREDENTIALS) { |
-} |
- |
-V1HostAuthenticator::~V1HostAuthenticator() { |
-} |
- |
-Authenticator::State V1HostAuthenticator::state() const { |
- return state_; |
-} |
- |
-Authenticator::RejectionReason V1HostAuthenticator::rejection_reason() const { |
- DCHECK_EQ(state_, REJECTED); |
- return rejection_reason_; |
-} |
- |
-void V1HostAuthenticator::ProcessMessage(const XmlElement* message) { |
- DCHECK_EQ(state_, WAITING_MESSAGE); |
- |
- std::string auth_token = |
- message->TextNamed(buzz::QName(kChromotingXmlNamespace, kAuthTokenTag)); |
- |
- if (auth_token.empty()) { |
- state_ = REJECTED; |
- rejection_reason_ = PROTOCOL_ERROR; |
- return; |
- } |
- |
- if (!protocol::VerifySupportAuthToken( |
- remote_jid_, shared_secret_, auth_token)) { |
- state_ = REJECTED; |
- rejection_reason_ = INVALID_CREDENTIALS; |
- } else { |
- state_ = MESSAGE_READY; |
- } |
-} |
- |
-scoped_ptr<XmlElement> V1HostAuthenticator::GetNextMessage() { |
- DCHECK_EQ(state_, MESSAGE_READY); |
- |
- scoped_ptr<XmlElement> message = CreateEmptyAuthenticatorMessage(); |
- buzz::XmlElement* certificate_tag = new XmlElement( |
- buzz::QName(kChromotingXmlNamespace, kCertificateTag)); |
- std::string base64_cert; |
- if (!base::Base64Encode(local_cert_, &base64_cert)) { |
- LOG(DFATAL) << "Cannot perform base64 encode on certificate"; |
- } |
- certificate_tag->SetBodyText(base64_cert); |
- message->AddElement(certificate_tag); |
- |
- state_ = ACCEPTED; |
- return message.Pass(); |
-} |
- |
-scoped_ptr<ChannelAuthenticator> |
-V1HostAuthenticator::CreateChannelAuthenticator() const { |
- DCHECK_EQ(state_, ACCEPTED); |
- scoped_ptr<SslHmacChannelAuthenticator> result = |
- SslHmacChannelAuthenticator::CreateForHost( |
- local_cert_, local_private_key_.get(), shared_secret_); |
- result->SetLegacyOneWayMode(SslHmacChannelAuthenticator::RECEIVE_ONLY); |
- return result.PassAs<ChannelAuthenticator>(); |
-}; |
- |
-} // namespace remoting |
-} // namespace protocol |