diff options
Diffstat (limited to 'remoting/protocol/pairing_host_authenticator.cc')
-rw-r--r-- | remoting/protocol/pairing_host_authenticator.cc | 54 |
1 files changed, 24 insertions, 30 deletions
diff --git a/remoting/protocol/pairing_host_authenticator.cc b/remoting/protocol/pairing_host_authenticator.cc index 5418dd3..b00a5c7 100644 --- a/remoting/protocol/pairing_host_authenticator.cc +++ b/remoting/protocol/pairing_host_authenticator.cc @@ -7,9 +7,7 @@ #include "base/bind.h" #include "base/logging.h" #include "remoting/base/constants.h" -#include "remoting/base/rsa_key_pair.h" #include "remoting/protocol/channel_authenticator.h" -#include "remoting/protocol/v2_authenticator.h" #include "third_party/webrtc/libjingle/xmllite/xmlelement.h" namespace remoting { @@ -17,27 +15,21 @@ namespace protocol { PairingHostAuthenticator::PairingHostAuthenticator( scoped_refptr<PairingRegistry> pairing_registry, - const std::string& local_cert, - scoped_refptr<RsaKeyPair> key_pair, + const CreateBaseAuthenticatorCallback& create_base_authenticator_callback, const std::string& pin) : pairing_registry_(pairing_registry), - local_cert_(local_cert), - key_pair_(key_pair), + create_base_authenticator_callback_(create_base_authenticator_callback), pin_(pin), - protocol_error_(false), - waiting_for_paired_secret_(false), - weak_factory_(this) { -} + weak_factory_(this) {} -PairingHostAuthenticator::~PairingHostAuthenticator() { -} +PairingHostAuthenticator::~PairingHostAuthenticator() {} Authenticator::State PairingHostAuthenticator::state() const { if (protocol_error_) { return REJECTED; } else if (waiting_for_paired_secret_) { return PROCESSING_MESSAGE; - } else if (!v2_authenticator_) { + } else if (!spake2_authenticator_) { return WAITING_MESSAGE; } return PairingAuthenticatorBase::state(); @@ -51,17 +43,18 @@ PairingHostAuthenticator::rejection_reason() const { return PairingAuthenticatorBase::rejection_reason(); } -void PairingHostAuthenticator::CreateV2AuthenticatorWithPIN( +void PairingHostAuthenticator::CreateSpakeAuthenticatorWithPin( State initial_state, - const SetAuthenticatorCallback& callback) { - callback.Run(V2Authenticator::CreateForHost( - local_cert_, key_pair_, pin_, initial_state)); + const base::Closure& resume_callback) { + spake2_authenticator_ = + create_base_authenticator_callback_.Run(pin_, initial_state); + resume_callback.Run(); } void PairingHostAuthenticator::ProcessMessage( const buzz::XmlElement* message, const base::Closure& resume_callback) { - if (!v2_authenticator_) { + if (!spake2_authenticator_) { std::string client_id; const buzz::XmlElement* pairing_tag = message->FirstNamed(kPairingInfoTag); @@ -72,16 +65,17 @@ void PairingHostAuthenticator::ProcessMessage( if (client_id.empty()) { LOG(ERROR) << "No client id specified."; protocol_error_ = true; - } else { - waiting_for_paired_secret_ = true; - pairing_registry_->GetPairing( - client_id, - base::Bind(&PairingHostAuthenticator::ProcessMessageWithPairing, - weak_factory_.GetWeakPtr(), - base::Owned(new buzz::XmlElement(*message)), - resume_callback)); return; } + + waiting_for_paired_secret_ = true; + pairing_registry_->GetPairing( + client_id, + base::Bind(&PairingHostAuthenticator::ProcessMessageWithPairing, + weak_factory_.GetWeakPtr(), + base::Owned(new buzz::XmlElement(*message)), + resume_callback)); + return; } PairingAuthenticatorBase::ProcessMessage(message, resume_callback); @@ -104,12 +98,12 @@ void PairingHostAuthenticator::ProcessMessageWithPairing( using_paired_secret_ = !paired_secret.empty(); if (using_paired_secret_) { - v2_authenticator_ = V2Authenticator::CreateForHost( - local_cert_, key_pair_, paired_secret, WAITING_MESSAGE); + spake2_authenticator_ = + create_base_authenticator_callback_.Run(paired_secret, WAITING_MESSAGE); PairingAuthenticatorBase::ProcessMessage(message, resume_callback); } else { - v2_authenticator_ = V2Authenticator::CreateForHost( - local_cert_, key_pair_, pin_, MESSAGE_READY); + spake2_authenticator_ = + create_base_authenticator_callback_.Run(pin_, MESSAGE_READY); // The client's optimistic SPAKE message is using a Paired Secret to // which the host doesn't have access, so don't bother processing it. resume_callback.Run(); |