Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: remoting/protocol/negotiating_host_authenticator.cc

Issue 1788443005: Make TokenValidatorFactory ref-counted. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « remoting/protocol/negotiating_host_authenticator.h ('k') | remoting/protocol/token_validator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #include "remoting/protocol/negotiating_host_authenticator.h" 5 #include "remoting/protocol/negotiating_host_authenticator.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <sstream> 8 #include <sstream>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 return std::move(result); 71 return std::move(result);
72 } 72 }
73 73
74 // static 74 // static
75 scoped_ptr<Authenticator> 75 scoped_ptr<Authenticator>
76 NegotiatingHostAuthenticator::CreateWithThirdPartyAuth( 76 NegotiatingHostAuthenticator::CreateWithThirdPartyAuth(
77 const std::string& local_id, 77 const std::string& local_id,
78 const std::string& remote_id, 78 const std::string& remote_id,
79 const std::string& local_cert, 79 const std::string& local_cert,
80 scoped_refptr<RsaKeyPair> key_pair, 80 scoped_refptr<RsaKeyPair> key_pair,
81 scoped_ptr<TokenValidator> token_validator) { 81 scoped_refptr<TokenValidatorFactory> token_validator_factory) {
82 scoped_ptr<NegotiatingHostAuthenticator> result( 82 scoped_ptr<NegotiatingHostAuthenticator> result(
83 new NegotiatingHostAuthenticator(local_id, remote_id, local_cert, 83 new NegotiatingHostAuthenticator(local_id, remote_id, local_cert,
84 key_pair)); 84 key_pair));
85 result->token_validator_ = std::move(token_validator); 85 result->token_validator_factory_ = token_validator_factory;
86 result->AddMethod(Method::THIRD_PARTY_SPAKE2_CURVE25519); 86 result->AddMethod(Method::THIRD_PARTY_SPAKE2_CURVE25519);
87 result->AddMethod(Method::THIRD_PARTY_SPAKE2_P224); 87 result->AddMethod(Method::THIRD_PARTY_SPAKE2_P224);
88 return std::move(result); 88 return std::move(result);
89 } 89 }
90 90
91 NegotiatingHostAuthenticator::~NegotiatingHostAuthenticator() {} 91 NegotiatingHostAuthenticator::~NegotiatingHostAuthenticator() {}
92 92
93 void NegotiatingHostAuthenticator::ProcessMessage( 93 void NegotiatingHostAuthenticator::ProcessMessage(
94 const buzz::XmlElement* message, 94 const buzz::XmlElement* message,
95 const base::Closure& resume_callback) { 95 const base::Closure& resume_callback) {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 scoped_ptr<buzz::XmlElement> NegotiatingHostAuthenticator::GetNextMessage() { 176 scoped_ptr<buzz::XmlElement> NegotiatingHostAuthenticator::GetNextMessage() {
177 return GetNextMessageInternal(); 177 return GetNextMessageInternal();
178 } 178 }
179 179
180 void NegotiatingHostAuthenticator::CreateAuthenticator( 180 void NegotiatingHostAuthenticator::CreateAuthenticator(
181 Authenticator::State preferred_initial_state, 181 Authenticator::State preferred_initial_state,
182 const base::Closure& resume_callback) { 182 const base::Closure& resume_callback) {
183 DCHECK(current_method_ != Method::INVALID); 183 DCHECK(current_method_ != Method::INVALID);
184 184
185 if (current_method_ == Method::THIRD_PARTY_SPAKE2_P224) { 185 if (current_method_ == Method::THIRD_PARTY_SPAKE2_P224) {
186 // |ThirdPartyHostAuthenticator| takes ownership of |token_validator_|.
187 // The authentication method negotiation logic should guarantee that only
188 // one |ThirdPartyHostAuthenticator| will need to be created per session.
189 DCHECK(token_validator_);
190 current_authenticator_.reset(new ThirdPartyHostAuthenticator( 186 current_authenticator_.reset(new ThirdPartyHostAuthenticator(
191 base::Bind(&V2Authenticator::CreateForHost, local_cert_, 187 base::Bind(&V2Authenticator::CreateForHost, local_cert_,
192 local_key_pair_), 188 local_key_pair_),
193 std::move(token_validator_))); 189 token_validator_factory_->CreateTokenValidator(local_id_, remote_id_)));
194 } else if (current_method_ == Method::THIRD_PARTY_SPAKE2_CURVE25519) { 190 } else if (current_method_ == Method::THIRD_PARTY_SPAKE2_CURVE25519) {
195 // |ThirdPartyHostAuthenticator| takes ownership of |token_validator_|.
196 // The authentication method negotiation logic should guarantee that only
197 // one |ThirdPartyHostAuthenticator| will need to be created per session.
198 DCHECK(token_validator_);
199 current_authenticator_.reset(new ThirdPartyHostAuthenticator( 191 current_authenticator_.reset(new ThirdPartyHostAuthenticator(
200 base::Bind(&Spake2Authenticator::CreateForHost, local_id_, remote_id_, 192 base::Bind(&Spake2Authenticator::CreateForHost, local_id_, remote_id_,
201 local_cert_, local_key_pair_), 193 local_cert_, local_key_pair_),
202 std::move(token_validator_))); 194 token_validator_factory_->CreateTokenValidator(local_id_, remote_id_)));
203 } else if (current_method_ == Method::SHARED_SECRET_SPAKE2_CURVE25519) { 195 } else if (current_method_ == Method::SHARED_SECRET_SPAKE2_CURVE25519) {
204 current_authenticator_ = Spake2Authenticator::CreateForHost( 196 current_authenticator_ = Spake2Authenticator::CreateForHost(
205 local_id_, remote_id_, local_cert_, local_key_pair_, 197 local_id_, remote_id_, local_cert_, local_key_pair_,
206 shared_secret_hash_, preferred_initial_state); 198 shared_secret_hash_, preferred_initial_state);
207 } else if (current_method_ == Method::PAIRED_SPAKE2_P224 && 199 } else if (current_method_ == Method::PAIRED_SPAKE2_P224 &&
208 preferred_initial_state == WAITING_MESSAGE) { 200 preferred_initial_state == WAITING_MESSAGE) {
209 // If the client requested Spake2Pair and sent an initial message, attempt 201 // If the client requested Spake2Pair and sent an initial message, attempt
210 // the paired connection protocol. 202 // the paired connection protocol.
211 current_authenticator_.reset(new PairingHostAuthenticator( 203 current_authenticator_.reset(new PairingHostAuthenticator(
212 pairing_registry_, base::Bind(&V2Authenticator::CreateForHost, 204 pairing_registry_, base::Bind(&V2Authenticator::CreateForHost,
(...skipping 11 matching lines...) Expand all
224 current_method_ == Method::PAIRED_SPAKE2_P224); 216 current_method_ == Method::PAIRED_SPAKE2_P224);
225 current_authenticator_ = V2Authenticator::CreateForHost( 217 current_authenticator_ = V2Authenticator::CreateForHost(
226 local_cert_, local_key_pair_, shared_secret_hash_, 218 local_cert_, local_key_pair_, shared_secret_hash_,
227 preferred_initial_state); 219 preferred_initial_state);
228 } 220 }
229 resume_callback.Run(); 221 resume_callback.Run();
230 } 222 }
231 223
232 } // namespace protocol 224 } // namespace protocol
233 } // namespace remoting 225 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/negotiating_host_authenticator.h ('k') | remoting/protocol/token_validator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698