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

Side by Side Diff: net/quic/crypto/quic_crypto_server_config_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/quic_crypto_server_config.cc ('k') | net/quic/crypto/quic_decrypter.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 "net/quic/crypto/quic_crypto_server_config.h" 5 #include "net/quic/crypto/quic_crypto_server_config.h"
6 6
7 #include <stdarg.h> 7 #include <stdarg.h>
8 8
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h" 10 #include "net/quic/crypto/aes_128_gcm_12_encrypter.h"
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 return config->source_address_token_boxer == 49 return config->source_address_token_boxer ==
50 &(server_config_->default_source_address_token_boxer_); 50 &(server_config_->default_source_address_token_boxer_);
51 } 51 }
52 52
53 string NewSourceAddressToken( 53 string NewSourceAddressToken(
54 string config_id, 54 string config_id,
55 IPEndPoint ip, 55 IPEndPoint ip,
56 QuicRandom* rand, 56 QuicRandom* rand,
57 QuicWallTime now) { 57 QuicWallTime now) {
58 return server_config_->NewSourceAddressToken( 58 return server_config_->NewSourceAddressToken(
59 *GetConfig(config_id), ip, rand, now, NULL); 59 *GetConfig(config_id), ip, rand, now, nullptr);
60 } 60 }
61 61
62 HandshakeFailureReason ValidateSourceAddressToken(string config_id, 62 HandshakeFailureReason ValidateSourceAddressToken(string config_id,
63 StringPiece srct, 63 StringPiece srct,
64 IPEndPoint ip, 64 IPEndPoint ip,
65 QuicWallTime now) { 65 QuicWallTime now) {
66 return server_config_->ValidateSourceAddressToken( 66 return server_config_->ValidateSourceAddressToken(
67 *GetConfig(config_id), srct, ip, now); 67 *GetConfig(config_id), srct, ip, now);
68 } 68 }
69 69
70 string NewServerNonce(QuicRandom* rand, QuicWallTime now) const { 70 string NewServerNonce(QuicRandom* rand, QuicWallTime now) const {
71 return server_config_->NewServerNonce(rand, now); 71 return server_config_->NewServerNonce(rand, now);
72 } 72 }
73 73
74 HandshakeFailureReason ValidateServerNonce(StringPiece token, 74 HandshakeFailureReason ValidateServerNonce(StringPiece token,
75 QuicWallTime now) { 75 QuicWallTime now) {
76 return server_config_->ValidateServerNonce(token, now); 76 return server_config_->ValidateServerNonce(token, now);
77 } 77 }
78 78
79 base::Lock* GetStrikeRegisterClientLock() { 79 base::Lock* GetStrikeRegisterClientLock() {
80 return &server_config_->strike_register_client_lock_; 80 return &server_config_->strike_register_client_lock_;
81 } 81 }
82 82
83 // CheckConfigs compares the state of the Configs in |server_config_| to the 83 // CheckConfigs compares the state of the Configs in |server_config_| to the
84 // description given as arguments. The arguments are given as NULL-terminated 84 // description given as arguments. The arguments are given as
85 // pairs. The first of each pair is the server config ID of a Config. The 85 // nullptr-terminated pairs. The first of each pair is the server config ID of
86 // second is a boolean describing whether the config is the primary. For 86 // a Config. The second is a boolean describing whether the config is the
87 // example: 87 // primary. For example:
88 // CheckConfigs(NULL); // checks that no Configs are loaded. 88 // CheckConfigs(nullptr); // checks that no Configs are loaded.
89 // 89 //
90 // // Checks that exactly three Configs are loaded with the given IDs and 90 // // Checks that exactly three Configs are loaded with the given IDs and
91 // // status. 91 // // status.
92 // CheckConfigs( 92 // CheckConfigs(
93 // "id1", false, 93 // "id1", false,
94 // "id2", true, 94 // "id2", true,
95 // "id3", false, 95 // "id3", false,
96 // NULL); 96 // nullptr);
97 void CheckConfigs(const char* server_config_id1, ...) { 97 void CheckConfigs(const char* server_config_id1, ...) {
98 va_list ap; 98 va_list ap;
99 va_start(ap, server_config_id1); 99 va_start(ap, server_config_id1);
100 100
101 vector<pair<ServerConfigID, bool> > expected; 101 vector<pair<ServerConfigID, bool> > expected;
102 bool first = true; 102 bool first = true;
103 for (;;) { 103 for (;;) {
104 const char* server_config_id; 104 const char* server_config_id;
105 if (first) { 105 if (first) {
106 server_config_id = server_config_id1; 106 server_config_id = server_config_id1;
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 CryptoServerConfigsTest() 365 CryptoServerConfigsTest()
366 : rand_(QuicRandom::GetInstance()), 366 : rand_(QuicRandom::GetInstance()),
367 config_(QuicCryptoServerConfig::TESTING, rand_), 367 config_(QuicCryptoServerConfig::TESTING, rand_),
368 test_peer_(&config_) {} 368 test_peer_(&config_) {}
369 369
370 virtual void SetUp() { 370 virtual void SetUp() {
371 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1000)); 371 clock_.AdvanceTime(QuicTime::Delta::FromSeconds(1000));
372 } 372 }
373 373
374 // SetConfigs constructs suitable config protobufs and calls SetConfigs on 374 // SetConfigs constructs suitable config protobufs and calls SetConfigs on
375 // |config_|. The arguments are given as NULL-terminated pairs. The first of 375 // |config_|. The arguments are given as nullptr-terminated pairs. The first
376 // each pair is the server config ID of a Config. The second is the 376 // of each pair is the server config ID of a Config. The second is the
377 // |primary_time| of that Config, given in epoch seconds. (Although note 377 // |primary_time| of that Config, given in epoch seconds. (Although note that,
378 // that, in these tests, time is set to 1000 seconds since the epoch.) For 378 // in these tests, time is set to 1000 seconds since the epoch.) For example:
379 // example: 379 // SetConfigs(nullptr); // calls |config_.SetConfigs| with no protobufs.
380 // SetConfigs(NULL); // calls |config_.SetConfigs| with no protobufs.
381 // 380 //
382 // // Calls |config_.SetConfigs| with two protobufs: one for a Config with 381 // // Calls |config_.SetConfigs| with two protobufs: one for a Config with
383 // // a |primary_time| of 900 and priority 1, and another with 382 // // a |primary_time| of 900 and priority 1, and another with
384 // // a |primary_time| of 1000 and priority 2. 383 // // a |primary_time| of 1000 and priority 2.
385 384
386 // CheckConfigs( 385 // CheckConfigs(
387 // "id1", 900, 1, 386 // "id1", 900, 1,
388 // "id2", 1000, 2, 387 // "id2", 1000, 2,
389 // NULL); 388 // nullptr);
390 // 389 //
391 // If the server config id starts with "INVALID" then the generated protobuf 390 // If the server config id starts with "INVALID" then the generated protobuf
392 // will be invalid. 391 // will be invalid.
393 void SetConfigs(const char* server_config_id1, ...) { 392 void SetConfigs(const char* server_config_id1, ...) {
394 const char kOrbit[] = "12345678"; 393 const char kOrbit[] = "12345678";
395 394
396 va_list ap; 395 va_list ap;
397 va_start(ap, server_config_id1); 396 va_start(ap, server_config_id1);
398 bool has_invalid = false; 397 bool has_invalid = false;
399 bool is_empty = true; 398 bool is_empty = true;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 } 436 }
438 437
439 protected: 438 protected:
440 QuicRandom* const rand_; 439 QuicRandom* const rand_;
441 MockClock clock_; 440 MockClock clock_;
442 QuicCryptoServerConfig config_; 441 QuicCryptoServerConfig config_;
443 QuicCryptoServerConfigPeer test_peer_; 442 QuicCryptoServerConfigPeer test_peer_;
444 }; 443 };
445 444
446 TEST_F(CryptoServerConfigsTest, NoConfigs) { 445 TEST_F(CryptoServerConfigsTest, NoConfigs) {
447 test_peer_.CheckConfigs(NULL); 446 test_peer_.CheckConfigs(nullptr);
448 } 447 }
449 448
450 TEST_F(CryptoServerConfigsTest, MakePrimaryFirst) { 449 TEST_F(CryptoServerConfigsTest, MakePrimaryFirst) {
451 // Make sure that "b" is primary even though "a" comes first. 450 // Make sure that "b" is primary even though "a" comes first.
452 SetConfigs("a", 1100, 1, 451 SetConfigs("a", 1100, 1,
453 "b", 900, 1, 452 "b", 900, 1,
454 NULL); 453 nullptr);
455 test_peer_.CheckConfigs( 454 test_peer_.CheckConfigs(
456 "a", false, 455 "a", false,
457 "b", true, 456 "b", true,
458 NULL); 457 nullptr);
459 } 458 }
460 459
461 TEST_F(CryptoServerConfigsTest, MakePrimarySecond) { 460 TEST_F(CryptoServerConfigsTest, MakePrimarySecond) {
462 // Make sure that a remains primary after b is added. 461 // Make sure that a remains primary after b is added.
463 SetConfigs("a", 900, 1, 462 SetConfigs("a", 900, 1,
464 "b", 1100, 1, 463 "b", 1100, 1,
465 NULL); 464 nullptr);
466 test_peer_.CheckConfigs( 465 test_peer_.CheckConfigs(
467 "a", true, 466 "a", true,
468 "b", false, 467 "b", false,
469 NULL); 468 nullptr);
470 } 469 }
471 470
472 TEST_F(CryptoServerConfigsTest, Delete) { 471 TEST_F(CryptoServerConfigsTest, Delete) {
473 // Ensure that configs get deleted when removed. 472 // Ensure that configs get deleted when removed.
474 SetConfigs("a", 800, 1, 473 SetConfigs("a", 800, 1,
475 "b", 900, 1, 474 "b", 900, 1,
476 "c", 1100, 1, 475 "c", 1100, 1,
477 NULL); 476 nullptr);
478 test_peer_.CheckConfigs( 477 test_peer_.CheckConfigs(
479 "a", false, 478 "a", false,
480 "b", true, 479 "b", true,
481 "c", false, 480 "c", false,
482 NULL); 481 nullptr);
483 SetConfigs("b", 900, 1, 482 SetConfigs("b", 900, 1,
484 "c", 1100, 1, 483 "c", 1100, 1,
485 NULL); 484 nullptr);
486 test_peer_.CheckConfigs( 485 test_peer_.CheckConfigs(
487 "b", true, 486 "b", true,
488 "c", false, 487 "c", false,
489 NULL); 488 nullptr);
490 } 489 }
491 490
492 TEST_F(CryptoServerConfigsTest, DeletePrimary) { 491 TEST_F(CryptoServerConfigsTest, DeletePrimary) {
493 // Ensure that deleting the primary config works. 492 // Ensure that deleting the primary config works.
494 SetConfigs("a", 800, 1, 493 SetConfigs("a", 800, 1,
495 "b", 900, 1, 494 "b", 900, 1,
496 "c", 1100, 1, 495 "c", 1100, 1,
497 NULL); 496 nullptr);
498 test_peer_.CheckConfigs( 497 test_peer_.CheckConfigs(
499 "a", false, 498 "a", false,
500 "b", true, 499 "b", true,
501 "c", false, 500 "c", false,
502 NULL); 501 nullptr);
503 SetConfigs("a", 800, 1, 502 SetConfigs("a", 800, 1,
504 "c", 1100, 1, 503 "c", 1100, 1,
505 NULL); 504 nullptr);
506 test_peer_.CheckConfigs( 505 test_peer_.CheckConfigs(
507 "a", true, 506 "a", true,
508 "c", false, 507 "c", false,
509 NULL); 508 nullptr);
510 } 509 }
511 510
512 TEST_F(CryptoServerConfigsTest, FailIfDeletingAllConfigs) { 511 TEST_F(CryptoServerConfigsTest, FailIfDeletingAllConfigs) {
513 // Ensure that configs get deleted when removed. 512 // Ensure that configs get deleted when removed.
514 SetConfigs("a", 800, 1, 513 SetConfigs("a", 800, 1,
515 "b", 900, 1, 514 "b", 900, 1,
516 NULL); 515 nullptr);
517 test_peer_.CheckConfigs( 516 test_peer_.CheckConfigs(
518 "a", false, 517 "a", false,
519 "b", true, 518 "b", true,
520 NULL); 519 nullptr);
521 SetConfigs(NULL); 520 SetConfigs(nullptr);
522 // Config change is rejected, still using old configs. 521 // Config change is rejected, still using old configs.
523 test_peer_.CheckConfigs( 522 test_peer_.CheckConfigs(
524 "a", false, 523 "a", false,
525 "b", true, 524 "b", true,
526 NULL); 525 nullptr);
527 } 526 }
528 527
529 TEST_F(CryptoServerConfigsTest, ChangePrimaryTime) { 528 TEST_F(CryptoServerConfigsTest, ChangePrimaryTime) {
530 // Check that updates to primary time get picked up. 529 // Check that updates to primary time get picked up.
531 SetConfigs("a", 400, 1, 530 SetConfigs("a", 400, 1,
532 "b", 800, 1, 531 "b", 800, 1,
533 "c", 1200, 1, 532 "c", 1200, 1,
534 NULL); 533 nullptr);
535 test_peer_.SelectNewPrimaryConfig(500); 534 test_peer_.SelectNewPrimaryConfig(500);
536 test_peer_.CheckConfigs( 535 test_peer_.CheckConfigs(
537 "a", true, 536 "a", true,
538 "b", false, 537 "b", false,
539 "c", false, 538 "c", false,
540 NULL); 539 nullptr);
541 SetConfigs("a", 1200, 1, 540 SetConfigs("a", 1200, 1,
542 "b", 800, 1, 541 "b", 800, 1,
543 "c", 400, 1, 542 "c", 400, 1,
544 NULL); 543 nullptr);
545 test_peer_.SelectNewPrimaryConfig(500); 544 test_peer_.SelectNewPrimaryConfig(500);
546 test_peer_.CheckConfigs( 545 test_peer_.CheckConfigs(
547 "a", false, 546 "a", false,
548 "b", false, 547 "b", false,
549 "c", true, 548 "c", true,
550 NULL); 549 nullptr);
551 } 550 }
552 551
553 TEST_F(CryptoServerConfigsTest, AllConfigsInThePast) { 552 TEST_F(CryptoServerConfigsTest, AllConfigsInThePast) {
554 // Check that the most recent config is selected. 553 // Check that the most recent config is selected.
555 SetConfigs("a", 400, 1, 554 SetConfigs("a", 400, 1,
556 "b", 800, 1, 555 "b", 800, 1,
557 "c", 1200, 1, 556 "c", 1200, 1,
558 NULL); 557 nullptr);
559 test_peer_.SelectNewPrimaryConfig(1500); 558 test_peer_.SelectNewPrimaryConfig(1500);
560 test_peer_.CheckConfigs( 559 test_peer_.CheckConfigs(
561 "a", false, 560 "a", false,
562 "b", false, 561 "b", false,
563 "c", true, 562 "c", true,
564 NULL); 563 nullptr);
565 } 564 }
566 565
567 TEST_F(CryptoServerConfigsTest, AllConfigsInTheFuture) { 566 TEST_F(CryptoServerConfigsTest, AllConfigsInTheFuture) {
568 // Check that the first config is selected. 567 // Check that the first config is selected.
569 SetConfigs("a", 400, 1, 568 SetConfigs("a", 400, 1,
570 "b", 800, 1, 569 "b", 800, 1,
571 "c", 1200, 1, 570 "c", 1200, 1,
572 NULL); 571 nullptr);
573 test_peer_.SelectNewPrimaryConfig(100); 572 test_peer_.SelectNewPrimaryConfig(100);
574 test_peer_.CheckConfigs( 573 test_peer_.CheckConfigs(
575 "a", true, 574 "a", true,
576 "b", false, 575 "b", false,
577 "c", false, 576 "c", false,
578 NULL); 577 nullptr);
579 } 578 }
580 579
581 TEST_F(CryptoServerConfigsTest, SortByPriority) { 580 TEST_F(CryptoServerConfigsTest, SortByPriority) {
582 // Check that priority is used to decide on a primary config when 581 // Check that priority is used to decide on a primary config when
583 // configs have the same primary time. 582 // configs have the same primary time.
584 SetConfigs("a", 900, 1, 583 SetConfigs("a", 900, 1,
585 "b", 900, 2, 584 "b", 900, 2,
586 "c", 900, 3, 585 "c", 900, 3,
587 NULL); 586 nullptr);
588 test_peer_.CheckConfigs( 587 test_peer_.CheckConfigs(
589 "a", true, 588 "a", true,
590 "b", false, 589 "b", false,
591 "c", false, 590 "c", false,
592 NULL); 591 nullptr);
593 test_peer_.SelectNewPrimaryConfig(800); 592 test_peer_.SelectNewPrimaryConfig(800);
594 test_peer_.CheckConfigs( 593 test_peer_.CheckConfigs(
595 "a", true, 594 "a", true,
596 "b", false, 595 "b", false,
597 "c", false, 596 "c", false,
598 NULL); 597 nullptr);
599 test_peer_.SelectNewPrimaryConfig(1000); 598 test_peer_.SelectNewPrimaryConfig(1000);
600 test_peer_.CheckConfigs( 599 test_peer_.CheckConfigs(
601 "a", true, 600 "a", true,
602 "b", false, 601 "b", false,
603 "c", false, 602 "c", false,
604 NULL); 603 nullptr);
605 604
606 // Change priorities and expect sort order to change. 605 // Change priorities and expect sort order to change.
607 SetConfigs("a", 900, 2, 606 SetConfigs("a", 900, 2,
608 "b", 900, 1, 607 "b", 900, 1,
609 "c", 900, 0, 608 "c", 900, 0,
610 NULL); 609 nullptr);
611 test_peer_.CheckConfigs( 610 test_peer_.CheckConfigs(
612 "a", false, 611 "a", false,
613 "b", false, 612 "b", false,
614 "c", true, 613 "c", true,
615 NULL); 614 nullptr);
616 test_peer_.SelectNewPrimaryConfig(800); 615 test_peer_.SelectNewPrimaryConfig(800);
617 test_peer_.CheckConfigs( 616 test_peer_.CheckConfigs(
618 "a", false, 617 "a", false,
619 "b", false, 618 "b", false,
620 "c", true, 619 "c", true,
621 NULL); 620 nullptr);
622 test_peer_.SelectNewPrimaryConfig(1000); 621 test_peer_.SelectNewPrimaryConfig(1000);
623 test_peer_.CheckConfigs( 622 test_peer_.CheckConfigs(
624 "a", false, 623 "a", false,
625 "b", false, 624 "b", false,
626 "c", true, 625 "c", true,
627 NULL); 626 nullptr);
628 } 627 }
629 628
630 TEST_F(CryptoServerConfigsTest, AdvancePrimary) { 629 TEST_F(CryptoServerConfigsTest, AdvancePrimary) {
631 // Check that a new primary config is enabled at the right time. 630 // Check that a new primary config is enabled at the right time.
632 SetConfigs("a", 900, 1, 631 SetConfigs("a", 900, 1,
633 "b", 1100, 1, 632 "b", 1100, 1,
634 NULL); 633 nullptr);
635 test_peer_.SelectNewPrimaryConfig(1000); 634 test_peer_.SelectNewPrimaryConfig(1000);
636 test_peer_.CheckConfigs( 635 test_peer_.CheckConfigs(
637 "a", true, 636 "a", true,
638 "b", false, 637 "b", false,
639 NULL); 638 nullptr);
640 test_peer_.SelectNewPrimaryConfig(1101); 639 test_peer_.SelectNewPrimaryConfig(1101);
641 test_peer_.CheckConfigs( 640 test_peer_.CheckConfigs(
642 "a", false, 641 "a", false,
643 "b", true, 642 "b", true,
644 NULL); 643 nullptr);
645 } 644 }
646 645
647 TEST_F(CryptoServerConfigsTest, InvalidConfigs) { 646 TEST_F(CryptoServerConfigsTest, InvalidConfigs) {
648 // Ensure that invalid configs don't change anything. 647 // Ensure that invalid configs don't change anything.
649 SetConfigs("a", 800, 1, 648 SetConfigs("a", 800, 1,
650 "b", 900, 1, 649 "b", 900, 1,
651 "c", 1100, 1, 650 "c", 1100, 1,
652 NULL); 651 nullptr);
653 test_peer_.CheckConfigs( 652 test_peer_.CheckConfigs(
654 "a", false, 653 "a", false,
655 "b", true, 654 "b", true,
656 "c", false, 655 "c", false,
657 NULL); 656 nullptr);
658 SetConfigs("a", 800, 1, 657 SetConfigs("a", 800, 1,
659 "c", 1100, 1, 658 "c", 1100, 1,
660 "INVALID1", 1000, 1, 659 "INVALID1", 1000, 1,
661 NULL); 660 nullptr);
662 test_peer_.CheckConfigs( 661 test_peer_.CheckConfigs(
663 "a", false, 662 "a", false,
664 "b", true, 663 "b", true,
665 "c", false, 664 "c", false,
666 NULL); 665 nullptr);
667 } 666 }
668 667
669 } // namespace test 668 } // namespace test
670 } // namespace net 669 } // namespace net
OLDNEW
« no previous file with comments | « net/quic/crypto/quic_crypto_server_config.cc ('k') | net/quic/crypto/quic_decrypter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698