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

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

Issue 612323013: QUIC - (no behavior change) s/NULL/nullptr/g in .../quic/... (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
« no previous file with comments | « net/quic/crypto/crypto_handshake_message.cc ('k') | net/quic/crypto/crypto_utils.cc » ('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 (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 <ostream> 5 #include <ostream>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "crypto/secure_hash.h" 10 #include "crypto/secure_hash.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 pub_hex_ = "#" + base::HexEncode(public_value, sizeof(public_value)); 110 pub_hex_ = "#" + base::HexEncode(public_value, sizeof(public_value));
111 111
112 CryptoHandshakeMessage client_hello = CryptoTestUtils::Message( 112 CryptoHandshakeMessage client_hello = CryptoTestUtils::Message(
113 "CHLO", 113 "CHLO",
114 "AEAD", "AESG", 114 "AEAD", "AESG",
115 "KEXS", "C255", 115 "KEXS", "C255",
116 "PUBS", pub_hex_.c_str(), 116 "PUBS", pub_hex_.c_str(),
117 "NONC", nonce_hex_.c_str(), 117 "NONC", nonce_hex_.c_str(),
118 "VER\0", client_version_.data(), 118 "VER\0", client_version_.data(),
119 "$padding", static_cast<int>(kClientHelloMinimumSize), 119 "$padding", static_cast<int>(kClientHelloMinimumSize),
120 NULL); 120 nullptr);
121 ShouldSucceed(client_hello); 121 ShouldSucceed(client_hello);
122 // The message should be rejected because the source-address token is 122 // The message should be rejected because the source-address token is
123 // missing. 123 // missing.
124 ASSERT_EQ(kREJ, out_.tag()); 124 ASSERT_EQ(kREJ, out_.tag());
125 const HandshakeFailureReason kRejectReasons[] = { 125 const HandshakeFailureReason kRejectReasons[] = {
126 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 126 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
127 }; 127 };
128 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 128 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
129 129
130 StringPiece srct; 130 StringPiece srct;
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 }; 327 };
328 328
329 string client_version = QuicUtils::TagToString( 329 string client_version = QuicUtils::TagToString(
330 QuicVersionToQuicTag(supported_versions_.front())); 330 QuicVersionToQuicTag(supported_versions_.front()));
331 331
332 for (size_t i = 0; i < arraysize(kBadSNIs); i++) { 332 for (size_t i = 0; i < arraysize(kBadSNIs); i++) {
333 ShouldFailMentioning("SNI", InchoateClientHello( 333 ShouldFailMentioning("SNI", InchoateClientHello(
334 "CHLO", 334 "CHLO",
335 "SNI", kBadSNIs[i], 335 "SNI", kBadSNIs[i],
336 "VER\0", client_version.data(), 336 "VER\0", client_version.data(),
337 NULL)); 337 nullptr));
338 const HandshakeFailureReason kRejectReasons[] = { 338 const HandshakeFailureReason kRejectReasons[] = {
339 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 339 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
340 }; 340 };
341 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 341 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
342 } 342 }
343 } 343 }
344 344
345 // TODO(rtenneti): Enable the DefaultCert test after implementing ProofSource. 345 // TODO(rtenneti): Enable the DefaultCert test after implementing ProofSource.
346 TEST_F(CryptoServerTest, DISABLED_DefaultCert) { 346 TEST_F(CryptoServerTest, DISABLED_DefaultCert) {
347 // Check that the server replies with a default certificate when no SNI is 347 // Check that the server replies with a default certificate when no SNI is
348 // specified. 348 // specified.
349 ShouldSucceed(InchoateClientHello( 349 ShouldSucceed(InchoateClientHello(
350 "CHLO", 350 "CHLO",
351 "AEAD", "AESG", 351 "AEAD", "AESG",
352 "KEXS", "C255", 352 "KEXS", "C255",
353 "SCID", scid_hex_.c_str(), 353 "SCID", scid_hex_.c_str(),
354 "#004b5453", srct_hex_.c_str(), 354 "#004b5453", srct_hex_.c_str(),
355 "PUBS", pub_hex_.c_str(), 355 "PUBS", pub_hex_.c_str(),
356 "NONC", nonce_hex_.c_str(), 356 "NONC", nonce_hex_.c_str(),
357 "$padding", static_cast<int>(kClientHelloMinimumSize), 357 "$padding", static_cast<int>(kClientHelloMinimumSize),
358 "PDMD", "X509", 358 "PDMD", "X509",
359 "VER\0", client_version_.data(), 359 "VER\0", client_version_.data(),
360 NULL)); 360 nullptr));
361 361
362 StringPiece cert, proof; 362 StringPiece cert, proof;
363 EXPECT_TRUE(out_.GetStringPiece(kCertificateTag, &cert)); 363 EXPECT_TRUE(out_.GetStringPiece(kCertificateTag, &cert));
364 EXPECT_TRUE(out_.GetStringPiece(kPROF, &proof)); 364 EXPECT_TRUE(out_.GetStringPiece(kPROF, &proof));
365 EXPECT_NE(0u, cert.size()); 365 EXPECT_NE(0u, cert.size());
366 EXPECT_NE(0u, proof.size()); 366 EXPECT_NE(0u, proof.size());
367 const HandshakeFailureReason kRejectReasons[] = { 367 const HandshakeFailureReason kRejectReasons[] = {
368 CLIENT_NONCE_INVALID_TIME_FAILURE 368 CLIENT_NONCE_INVALID_TIME_FAILURE
369 }; 369 };
370 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 370 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
371 } 371 }
372 372
373 TEST_P(CryptoServerTest, TooSmall) { 373 TEST_P(CryptoServerTest, TooSmall) {
374 ShouldFailMentioning("too small", CryptoTestUtils::Message( 374 ShouldFailMentioning("too small", CryptoTestUtils::Message(
375 "CHLO", 375 "CHLO",
376 "VER\0", client_version_.data(), 376 "VER\0", client_version_.data(),
377 NULL)); 377 nullptr));
378 const HandshakeFailureReason kRejectReasons[] = { 378 const HandshakeFailureReason kRejectReasons[] = {
379 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 379 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
380 }; 380 };
381 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 381 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
382 } 382 }
383 383
384 TEST_P(CryptoServerTest, BadSourceAddressToken) { 384 TEST_P(CryptoServerTest, BadSourceAddressToken) {
385 // Invalid source-address tokens should be ignored. 385 // Invalid source-address tokens should be ignored.
386 static const char* kBadSourceAddressTokens[] = { 386 static const char* kBadSourceAddressTokens[] = {
387 "", 387 "",
388 "foo", 388 "foo",
389 "#0000", 389 "#0000",
390 "#0000000000000000000000000000000000000000", 390 "#0000000000000000000000000000000000000000",
391 }; 391 };
392 392
393 for (size_t i = 0; i < arraysize(kBadSourceAddressTokens); i++) { 393 for (size_t i = 0; i < arraysize(kBadSourceAddressTokens); i++) {
394 ShouldSucceed(InchoateClientHello( 394 ShouldSucceed(InchoateClientHello(
395 "CHLO", 395 "CHLO",
396 "STK", kBadSourceAddressTokens[i], 396 "STK", kBadSourceAddressTokens[i],
397 "VER\0", client_version_.data(), 397 "VER\0", client_version_.data(),
398 NULL)); 398 nullptr));
399 const HandshakeFailureReason kRejectReasons[] = { 399 const HandshakeFailureReason kRejectReasons[] = {
400 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 400 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
401 }; 401 };
402 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 402 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
403 } 403 }
404 } 404 }
405 405
406 TEST_P(CryptoServerTest, BadClientNonce) { 406 TEST_P(CryptoServerTest, BadClientNonce) {
407 // Invalid nonces should be ignored. 407 // Invalid nonces should be ignored.
408 static const char* kBadNonces[] = { 408 static const char* kBadNonces[] = {
409 "", 409 "",
410 "#0000", 410 "#0000",
411 "#0000000000000000000000000000000000000000", 411 "#0000000000000000000000000000000000000000",
412 }; 412 };
413 413
414 for (size_t i = 0; i < arraysize(kBadNonces); i++) { 414 for (size_t i = 0; i < arraysize(kBadNonces); i++) {
415 ShouldSucceed(InchoateClientHello( 415 ShouldSucceed(InchoateClientHello(
416 "CHLO", 416 "CHLO",
417 "NONC", kBadNonces[i], 417 "NONC", kBadNonces[i],
418 "VER\0", client_version_.data(), 418 "VER\0", client_version_.data(),
419 NULL)); 419 nullptr));
420 const HandshakeFailureReason kRejectReasons[] = { 420 const HandshakeFailureReason kRejectReasons[] = {
421 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 421 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
422 }; 422 };
423 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 423 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
424 } 424 }
425 } 425 }
426 426
427 TEST_P(CryptoServerTest, DowngradeAttack) { 427 TEST_P(CryptoServerTest, DowngradeAttack) {
428 if (supported_versions_.size() == 1) { 428 if (supported_versions_.size() == 1) {
429 // No downgrade attack is possible if the server only supports one version. 429 // No downgrade attack is possible if the server only supports one version.
430 return; 430 return;
431 } 431 }
432 // Set the client's preferred version to a supported version that 432 // Set the client's preferred version to a supported version that
433 // is not the "current" version (supported_versions_.front()). 433 // is not the "current" version (supported_versions_.front()).
434 string bad_version = QuicUtils::TagToString( 434 string bad_version = QuicUtils::TagToString(
435 QuicVersionToQuicTag(supported_versions_.back())); 435 QuicVersionToQuicTag(supported_versions_.back()));
436 436
437 ShouldFailMentioning("Downgrade", InchoateClientHello( 437 ShouldFailMentioning("Downgrade", InchoateClientHello(
438 "CHLO", 438 "CHLO",
439 "VER\0", bad_version.data(), 439 "VER\0", bad_version.data(),
440 NULL)); 440 nullptr));
441 const HandshakeFailureReason kRejectReasons[] = { 441 const HandshakeFailureReason kRejectReasons[] = {
442 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 442 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
443 }; 443 };
444 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 444 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
445 } 445 }
446 446
447 TEST_P(CryptoServerTest, CorruptServerConfig) { 447 TEST_P(CryptoServerTest, CorruptServerConfig) {
448 // This tests corrupted server config. 448 // This tests corrupted server config.
449 CryptoHandshakeMessage msg = CryptoTestUtils::Message( 449 CryptoHandshakeMessage msg = CryptoTestUtils::Message(
450 "CHLO", 450 "CHLO",
451 "AEAD", "AESG", 451 "AEAD", "AESG",
452 "KEXS", "C255", 452 "KEXS", "C255",
453 "SCID", (string(1, 'X') + scid_hex_).c_str(), 453 "SCID", (string(1, 'X') + scid_hex_).c_str(),
454 "#004b5453", srct_hex_.c_str(), 454 "#004b5453", srct_hex_.c_str(),
455 "PUBS", pub_hex_.c_str(), 455 "PUBS", pub_hex_.c_str(),
456 "NONC", nonce_hex_.c_str(), 456 "NONC", nonce_hex_.c_str(),
457 "VER\0", client_version_.data(), 457 "VER\0", client_version_.data(),
458 "$padding", static_cast<int>(kClientHelloMinimumSize), 458 "$padding", static_cast<int>(kClientHelloMinimumSize),
459 NULL); 459 nullptr);
460 ShouldSucceed(msg); 460 ShouldSucceed(msg);
461 ASSERT_EQ(kREJ, out_.tag()); 461 ASSERT_EQ(kREJ, out_.tag());
462 const HandshakeFailureReason kRejectReasons[] = { 462 const HandshakeFailureReason kRejectReasons[] = {
463 SERVER_CONFIG_UNKNOWN_CONFIG_FAILURE 463 SERVER_CONFIG_UNKNOWN_CONFIG_FAILURE
464 }; 464 };
465 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 465 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
466 } 466 }
467 467
468 TEST_P(CryptoServerTest, CorruptSourceAddressToken) { 468 TEST_P(CryptoServerTest, CorruptSourceAddressToken) {
469 // This tests corrupted source address token. 469 // This tests corrupted source address token.
470 CryptoHandshakeMessage msg = CryptoTestUtils::Message( 470 CryptoHandshakeMessage msg = CryptoTestUtils::Message(
471 "CHLO", 471 "CHLO",
472 "AEAD", "AESG", 472 "AEAD", "AESG",
473 "KEXS", "C255", 473 "KEXS", "C255",
474 "SCID", scid_hex_.c_str(), 474 "SCID", scid_hex_.c_str(),
475 "#004b5453", (string(1, 'X') + srct_hex_).c_str(), 475 "#004b5453", (string(1, 'X') + srct_hex_).c_str(),
476 "PUBS", pub_hex_.c_str(), 476 "PUBS", pub_hex_.c_str(),
477 "NONC", nonce_hex_.c_str(), 477 "NONC", nonce_hex_.c_str(),
478 "VER\0", client_version_.data(), 478 "VER\0", client_version_.data(),
479 "$padding", static_cast<int>(kClientHelloMinimumSize), 479 "$padding", static_cast<int>(kClientHelloMinimumSize),
480 NULL); 480 nullptr);
481 ShouldSucceed(msg); 481 ShouldSucceed(msg);
482 ASSERT_EQ(kREJ, out_.tag()); 482 ASSERT_EQ(kREJ, out_.tag());
483 const HandshakeFailureReason kRejectReasons[] = { 483 const HandshakeFailureReason kRejectReasons[] = {
484 SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE 484 SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE
485 }; 485 };
486 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 486 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
487 } 487 }
488 488
489 TEST_P(CryptoServerTest, CorruptClientNonceAndSourceAddressToken) { 489 TEST_P(CryptoServerTest, CorruptClientNonceAndSourceAddressToken) {
490 // This test corrupts client nonce and source address token. 490 // This test corrupts client nonce and source address token.
491 CryptoHandshakeMessage msg = CryptoTestUtils::Message( 491 CryptoHandshakeMessage msg = CryptoTestUtils::Message(
492 "CHLO", 492 "CHLO",
493 "AEAD", "AESG", 493 "AEAD", "AESG",
494 "KEXS", "C255", 494 "KEXS", "C255",
495 "SCID", scid_hex_.c_str(), 495 "SCID", scid_hex_.c_str(),
496 "#004b5453", (string(1, 'X') + srct_hex_).c_str(), 496 "#004b5453", (string(1, 'X') + srct_hex_).c_str(),
497 "PUBS", pub_hex_.c_str(), 497 "PUBS", pub_hex_.c_str(),
498 "NONC", (string(1, 'X') + nonce_hex_).c_str(), 498 "NONC", (string(1, 'X') + nonce_hex_).c_str(),
499 "VER\0", client_version_.data(), 499 "VER\0", client_version_.data(),
500 "$padding", static_cast<int>(kClientHelloMinimumSize), 500 "$padding", static_cast<int>(kClientHelloMinimumSize),
501 NULL); 501 nullptr);
502 ShouldSucceed(msg); 502 ShouldSucceed(msg);
503 ASSERT_EQ(kREJ, out_.tag()); 503 ASSERT_EQ(kREJ, out_.tag());
504 const HandshakeFailureReason kRejectReasons[] = { 504 const HandshakeFailureReason kRejectReasons[] = {
505 SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE, 505 SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE,
506 CLIENT_NONCE_INVALID_FAILURE 506 CLIENT_NONCE_INVALID_FAILURE
507 }; 507 };
508 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 508 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
509 } 509 }
510 510
511 TEST_P(CryptoServerTest, CorruptMultipleTags) { 511 TEST_P(CryptoServerTest, CorruptMultipleTags) {
512 // This test corrupts client nonce, server nonce and source address token. 512 // This test corrupts client nonce, server nonce and source address token.
513 CryptoHandshakeMessage msg = CryptoTestUtils::Message( 513 CryptoHandshakeMessage msg = CryptoTestUtils::Message(
514 "CHLO", 514 "CHLO",
515 "AEAD", "AESG", 515 "AEAD", "AESG",
516 "KEXS", "C255", 516 "KEXS", "C255",
517 "SCID", scid_hex_.c_str(), 517 "SCID", scid_hex_.c_str(),
518 "#004b5453", (string(1, 'X') + srct_hex_).c_str(), 518 "#004b5453", (string(1, 'X') + srct_hex_).c_str(),
519 "PUBS", pub_hex_.c_str(), 519 "PUBS", pub_hex_.c_str(),
520 "NONC", (string(1, 'X') + nonce_hex_).c_str(), 520 "NONC", (string(1, 'X') + nonce_hex_).c_str(),
521 "SNO\0", (string(1, 'X') + nonce_hex_).c_str(), 521 "SNO\0", (string(1, 'X') + nonce_hex_).c_str(),
522 "VER\0", client_version_.data(), 522 "VER\0", client_version_.data(),
523 "$padding", static_cast<int>(kClientHelloMinimumSize), 523 "$padding", static_cast<int>(kClientHelloMinimumSize),
524 NULL); 524 nullptr);
525 ShouldSucceed(msg); 525 ShouldSucceed(msg);
526 ASSERT_EQ(kREJ, out_.tag()); 526 ASSERT_EQ(kREJ, out_.tag());
527 const HandshakeFailureReason kRejectReasons[] = { 527 const HandshakeFailureReason kRejectReasons[] = {
528 SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE, 528 SOURCE_ADDRESS_TOKEN_DECRYPTION_FAILURE,
529 CLIENT_NONCE_INVALID_FAILURE, 529 CLIENT_NONCE_INVALID_FAILURE,
530 SERVER_NONCE_DECRYPTION_FAILURE, 530 SERVER_NONCE_DECRYPTION_FAILURE,
531 }; 531 };
532 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 532 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
533 } 533 }
534 534
535 TEST_P(CryptoServerTest, ReplayProtection) { 535 TEST_P(CryptoServerTest, ReplayProtection) {
536 // This tests that disabling replay protection works. 536 // This tests that disabling replay protection works.
537 CryptoHandshakeMessage msg = CryptoTestUtils::Message( 537 CryptoHandshakeMessage msg = CryptoTestUtils::Message(
538 "CHLO", 538 "CHLO",
539 "AEAD", "AESG", 539 "AEAD", "AESG",
540 "KEXS", "C255", 540 "KEXS", "C255",
541 "SCID", scid_hex_.c_str(), 541 "SCID", scid_hex_.c_str(),
542 "#004b5453", srct_hex_.c_str(), 542 "#004b5453", srct_hex_.c_str(),
543 "PUBS", pub_hex_.c_str(), 543 "PUBS", pub_hex_.c_str(),
544 "NONC", nonce_hex_.c_str(), 544 "NONC", nonce_hex_.c_str(),
545 "VER\0", client_version_.data(), 545 "VER\0", client_version_.data(),
546 "$padding", static_cast<int>(kClientHelloMinimumSize), 546 "$padding", static_cast<int>(kClientHelloMinimumSize),
547 NULL); 547 nullptr);
548 ShouldSucceed(msg); 548 ShouldSucceed(msg);
549 // The message should be rejected because the strike-register is still 549 // The message should be rejected because the strike-register is still
550 // quiescent. 550 // quiescent.
551 ASSERT_EQ(kREJ, out_.tag()); 551 ASSERT_EQ(kREJ, out_.tag());
552 552
553 const HandshakeFailureReason kRejectReasons[] = { 553 const HandshakeFailureReason kRejectReasons[] = {
554 CLIENT_NONCE_INVALID_TIME_FAILURE 554 CLIENT_NONCE_INVALID_TIME_FAILURE
555 }; 555 };
556 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 556 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
557 557
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 public: 642 public:
643 virtual void SetUp() { 643 virtual void SetUp() {
644 // Deliberately don't add a config so that we can test this situation. 644 // Deliberately don't add a config so that we can test this situation.
645 } 645 }
646 }; 646 };
647 647
648 TEST_P(CryptoServerTestNoConfig, DontCrash) { 648 TEST_P(CryptoServerTestNoConfig, DontCrash) {
649 ShouldFailMentioning("No config", InchoateClientHello( 649 ShouldFailMentioning("No config", InchoateClientHello(
650 "CHLO", 650 "CHLO",
651 "VER\0", client_version_.data(), 651 "VER\0", client_version_.data(),
652 NULL)); 652 nullptr));
653 653
654 const HandshakeFailureReason kRejectReasons[] = { 654 const HandshakeFailureReason kRejectReasons[] = {
655 SERVER_CONFIG_INCHOATE_HELLO_FAILURE 655 SERVER_CONFIG_INCHOATE_HELLO_FAILURE
656 }; 656 };
657 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons)); 657 CheckRejectReasons(kRejectReasons, arraysize(kRejectReasons));
658 } 658 }
659 659
660 class AsyncStrikeServerVerificationTest : public CryptoServerTest { 660 class AsyncStrikeServerVerificationTest : public CryptoServerTest {
661 protected: 661 protected:
662 AsyncStrikeServerVerificationTest() { 662 AsyncStrikeServerVerificationTest() {
(...skipping 21 matching lines...) Expand all
684 CryptoHandshakeMessage msg = CryptoTestUtils::Message( 684 CryptoHandshakeMessage msg = CryptoTestUtils::Message(
685 "CHLO", 685 "CHLO",
686 "AEAD", "AESG", 686 "AEAD", "AESG",
687 "KEXS", "C255", 687 "KEXS", "C255",
688 "SCID", scid_hex_.c_str(), 688 "SCID", scid_hex_.c_str(),
689 "#004b5453", srct_hex_.c_str(), 689 "#004b5453", srct_hex_.c_str(),
690 "PUBS", pub_hex_.c_str(), 690 "PUBS", pub_hex_.c_str(),
691 "NONC", nonce_hex_.c_str(), 691 "NONC", nonce_hex_.c_str(),
692 "VER\0", client_version_.data(), 692 "VER\0", client_version_.data(),
693 "$padding", static_cast<int>(kClientHelloMinimumSize), 693 "$padding", static_cast<int>(kClientHelloMinimumSize),
694 NULL); 694 nullptr);
695 695
696 // Clear the message tag. 696 // Clear the message tag.
697 out_.set_tag(0); 697 out_.set_tag(0);
698 698
699 bool called = false; 699 bool called = false;
700 RunValidate(msg, new ValidateCallback(this, true, "", &called)); 700 RunValidate(msg, new ValidateCallback(this, true, "", &called));
701 // The verification request was queued. 701 // The verification request was queued.
702 ASSERT_FALSE(called); 702 ASSERT_FALSE(called);
703 EXPECT_EQ(0u, out_.tag()); 703 EXPECT_EQ(0u, out_.tag());
704 EXPECT_EQ(1, strike_register_client_->PendingVerifications()); 704 EXPECT_EQ(1, strike_register_client_->PendingVerifications());
(...skipping 13 matching lines...) Expand all
718 718
719 strike_register_client_->RunPendingVerifications(); 719 strike_register_client_->RunPendingVerifications();
720 ASSERT_TRUE(called); 720 ASSERT_TRUE(called);
721 EXPECT_EQ(0, strike_register_client_->PendingVerifications()); 721 EXPECT_EQ(0, strike_register_client_->PendingVerifications());
722 // The message should be rejected now. 722 // The message should be rejected now.
723 EXPECT_EQ(kREJ, out_.tag()); 723 EXPECT_EQ(kREJ, out_.tag());
724 } 724 }
725 725
726 } // namespace test 726 } // namespace test
727 } // namespace net 727 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/crypto/crypto_handshake_message.cc ('k') | net/quic/crypto/crypto_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698