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

Side by Side Diff: net/quic/core/crypto/crypto_server_test.cc

Issue 2391103003: Landing Recent QUIC changes until 3:24 PM, Oct 01, 2016 UTC-4 (Closed)
Patch Set: Add new error code to quic_error_mapping.cc Created 4 years, 2 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 <algorithm> 5 #include <algorithm>
6 #include <cstdint> 6 #include <cstdint>
7 #include <memory> 7 #include <memory>
8 #include <ostream> 8 #include <ostream>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 const CryptoHandshakeMessage& message, 264 const CryptoHandshakeMessage& message,
265 bool* called) { 265 bool* called) {
266 IPAddress server_ip; 266 IPAddress server_ip;
267 config_.ValidateClientHello( 267 config_.ValidateClientHello(
268 message, client_address_.address(), server_ip, 268 message, client_address_.address(), server_ip,
269 supported_versions_.front(), &clock_, &crypto_proof_, 269 supported_versions_.front(), &clock_, &crypto_proof_,
270 std::unique_ptr<ValidateCallback>( 270 std::unique_ptr<ValidateCallback>(
271 new ValidateCallback(this, false, error_substr, called))); 271 new ValidateCallback(this, false, error_substr, called)));
272 } 272 }
273 273
274 class ProcessCallback : public ProcessClientHelloResultCallback {
275 public:
276 ProcessCallback(scoped_refptr<ValidateCallback::Result> result,
277 bool should_succeed,
278 const char* error_substr,
279 bool* called,
280 CryptoHandshakeMessage* out)
281 : result_(std::move(result)),
282 should_succeed_(should_succeed),
283 error_substr_(error_substr),
284 called_(called),
285 out_(out) {
286 *called_ = false;
287 }
288
289 void Run(
290 QuicErrorCode error,
291 const string& error_details,
292 std::unique_ptr<CryptoHandshakeMessage> message,
293 std::unique_ptr<DiversificationNonce> diversification_nonce) override {
294 if (should_succeed_) {
295 ASSERT_EQ(error, QUIC_NO_ERROR) << "Message failed with error "
296 << error_details << ": "
297 << result_->client_hello.DebugString();
298 } else {
299 ASSERT_NE(error, QUIC_NO_ERROR) << "Message didn't fail: "
300 << result_->client_hello.DebugString();
301
302 EXPECT_TRUE(error_details.find(error_substr_) != string::npos)
303 << error_substr_ << " not in " << error_details;
304 }
305 if (message != nullptr) {
306 *out_ = *message;
307 }
308 *called_ = true;
309 }
310
311 private:
312 const scoped_refptr<ValidateCallback::Result> result_;
313 const bool should_succeed_;
314 const char* const error_substr_;
315 bool* called_;
316 CryptoHandshakeMessage* out_;
317 };
318
274 void ProcessValidationResult(scoped_refptr<ValidateCallback::Result> result, 319 void ProcessValidationResult(scoped_refptr<ValidateCallback::Result> result,
275 bool should_succeed, 320 bool should_succeed,
276 const char* error_substr) { 321 const char* error_substr) {
277 IPAddress server_ip; 322 IPAddress server_ip;
278 DiversificationNonce diversification_nonce;
279 string error_details;
280 QuicConnectionId server_designated_connection_id = 323 QuicConnectionId server_designated_connection_id =
281 rand_for_id_generation_.RandUint64(); 324 rand_for_id_generation_.RandUint64();
282 QuicErrorCode error = config_.ProcessClientHello( 325 bool called;
326 config_.ProcessClientHello(
283 result, /*reject_only=*/false, /*connection_id=*/1, server_ip, 327 result, /*reject_only=*/false, /*connection_id=*/1, server_ip,
284 client_address_, supported_versions_.front(), supported_versions_, 328 client_address_, supported_versions_.front(), supported_versions_,
285 use_stateless_rejects_, server_designated_connection_id, &clock_, rand_, 329 use_stateless_rejects_, server_designated_connection_id, &clock_, rand_,
286 &compressed_certs_cache_, &params_, &crypto_proof_, 330 &compressed_certs_cache_, &params_, &crypto_proof_,
287 /*total_framing_overhead=*/50, chlo_packet_size_, &out_, 331 /*total_framing_overhead=*/50, chlo_packet_size_,
288 &diversification_nonce, &error_details); 332 std::unique_ptr<ProcessCallback>(new ProcessCallback(
289 333 result, should_succeed, error_substr, &called, &out_)));
290 if (should_succeed) { 334 EXPECT_TRUE(called);
291 ASSERT_EQ(error, QUIC_NO_ERROR) << "Message failed with error "
292 << error_details << ": "
293 << result->client_hello.DebugString();
294 } else {
295 ASSERT_NE(error, QUIC_NO_ERROR) << "Message didn't fail: "
296 << result->client_hello.DebugString();
297
298 EXPECT_TRUE(error_details.find(error_substr) != string::npos)
299 << error_substr << " not in " << error_details;
300 }
301 } 335 }
302 336
303 string GenerateNonce() { 337 string GenerateNonce() {
304 string nonce; 338 string nonce;
305 CryptoUtils::GenerateNonce( 339 CryptoUtils::GenerateNonce(
306 clock_.WallNow(), rand_, 340 clock_.WallNow(), rand_,
307 StringPiece(reinterpret_cast<const char*>(orbit_), sizeof(orbit_)), 341 StringPiece(reinterpret_cast<const char*>(orbit_), sizeof(orbit_)),
308 &nonce); 342 &nonce);
309 return nonce; 343 return nonce;
310 } 344 }
(...skipping 934 matching lines...) Expand 10 before | Expand all | Expand 10 after
1245 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); 1279 EXPECT_EQ(0, strike_register_client_->PendingVerifications());
1246 } else { 1280 } else {
1247 // version 33. 1281 // version 33.
1248 ASSERT_EQ(kSHLO, out_.tag()); 1282 ASSERT_EQ(kSHLO, out_.tag());
1249 CheckServerHello(out_); 1283 CheckServerHello(out_);
1250 } 1284 }
1251 } 1285 }
1252 1286
1253 } // namespace test 1287 } // namespace test
1254 } // namespace net 1288 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/core/crypto/crypto_protocol.h ('k') | net/quic/core/crypto/quic_crypto_server_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698