| OLD | NEW |
| 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 <stdlib.h> | 7 #include <stdlib.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 SelectNewPrimaryConfig(now); | 515 SelectNewPrimaryConfig(now); |
| 516 DCHECK(primary_config_.get()); | 516 DCHECK(primary_config_.get()); |
| 517 DCHECK_EQ(configs_.find(primary_config_->id)->second, primary_config_); | 517 DCHECK_EQ(configs_.find(primary_config_->id)->second, primary_config_); |
| 518 } | 518 } |
| 519 | 519 |
| 520 memcpy(primary_orbit, primary_config_->orbit, sizeof(primary_orbit)); | 520 memcpy(primary_orbit, primary_config_->orbit, sizeof(primary_orbit)); |
| 521 } | 521 } |
| 522 | 522 |
| 523 requested_config = GetConfigWithScid(requested_scid); | 523 requested_config = GetConfigWithScid(requested_scid); |
| 524 primary_config = primary_config_; | 524 primary_config = primary_config_; |
| 525 crypto_proof->primary_scid = primary_config->id; | 525 if (FLAGS_quic_crypto_proof_use_ref) { |
| 526 crypto_proof->config = primary_config_; |
| 527 } else { |
| 528 crypto_proof->primary_scid = primary_config->id; |
| 529 } |
| 526 } | 530 } |
| 527 | 531 |
| 528 if (result->error_code == QUIC_NO_ERROR) { | 532 if (result->error_code == QUIC_NO_ERROR) { |
| 529 EvaluateClientHello(server_ip, version, primary_orbit, requested_config, | 533 EvaluateClientHello(server_ip, version, primary_orbit, requested_config, |
| 530 primary_config, crypto_proof, result, done_cb); | 534 primary_config, crypto_proof, result, done_cb); |
| 531 } else { | 535 } else { |
| 532 done_cb->Run(result); | 536 done_cb->Run(result); |
| 533 } | 537 } |
| 534 } | 538 } |
| 535 | 539 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 | 579 |
| 576 if (!next_config_promotion_time_.IsZero() && | 580 if (!next_config_promotion_time_.IsZero() && |
| 577 next_config_promotion_time_.IsAfter(now)) { | 581 next_config_promotion_time_.IsAfter(now)) { |
| 578 SelectNewPrimaryConfig(now); | 582 SelectNewPrimaryConfig(now); |
| 579 DCHECK(primary_config_.get()); | 583 DCHECK(primary_config_.get()); |
| 580 DCHECK_EQ(configs_.find(primary_config_->id)->second, primary_config_); | 584 DCHECK_EQ(configs_.find(primary_config_->id)->second, primary_config_); |
| 581 } | 585 } |
| 582 | 586 |
| 583 // Use the config that the client requested in order to do key-agreement. | 587 // Use the config that the client requested in order to do key-agreement. |
| 584 // Otherwise give it a copy of |primary_config_| to use. | 588 // Otherwise give it a copy of |primary_config_| to use. |
| 585 primary_config = GetConfigWithScid(crypto_proof->primary_scid); | 589 if (FLAGS_quic_crypto_proof_use_ref) { |
| 590 primary_config = crypto_proof->config; |
| 591 } else { |
| 592 primary_config = GetConfigWithScid(crypto_proof->primary_scid); |
| 593 } |
| 586 if (!primary_config) { | 594 if (!primary_config) { |
| 587 *error_details = "Configuration not found"; | 595 *error_details = "Configuration not found"; |
| 588 QUIC_BUG << "Primary config not found"; | 596 QUIC_BUG << "Primary config not found"; |
| 589 return QUIC_CRYPTO_INTERNAL_ERROR; | 597 return QUIC_CRYPTO_INTERNAL_ERROR; |
| 590 } | 598 } |
| 591 | 599 |
| 592 requested_config = GetConfigWithScid(requested_scid); | 600 requested_config = GetConfigWithScid(requested_scid); |
| 593 } | 601 } |
| 594 | 602 |
| 595 if (validate_chlo_result.error_code != QUIC_NO_ERROR) { | 603 if (validate_chlo_result.error_code != QUIC_NO_ERROR) { |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 } | 745 } |
| 738 | 746 |
| 739 char plaintext[kMaxPacketSize]; | 747 char plaintext[kMaxPacketSize]; |
| 740 size_t plaintext_length = 0; | 748 size_t plaintext_length = 0; |
| 741 const bool success = crypters.decrypter->DecryptPacket( | 749 const bool success = crypters.decrypter->DecryptPacket( |
| 742 kDefaultPathId, 0 /* packet number */, | 750 kDefaultPathId, 0 /* packet number */, |
| 743 StringPiece() /* associated data */, cetv_ciphertext, plaintext, | 751 StringPiece() /* associated data */, cetv_ciphertext, plaintext, |
| 744 &plaintext_length, kMaxPacketSize); | 752 &plaintext_length, kMaxPacketSize); |
| 745 if (!success) { | 753 if (!success) { |
| 746 *error_details = "CETV decryption failure"; | 754 *error_details = "CETV decryption failure"; |
| 747 return QUIC_PACKET_TOO_LARGE; | 755 return QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER; |
| 748 } | 756 } |
| 749 scoped_ptr<CryptoHandshakeMessage> cetv( | 757 scoped_ptr<CryptoHandshakeMessage> cetv( |
| 750 CryptoFramer::ParseMessage(StringPiece(plaintext, plaintext_length))); | 758 CryptoFramer::ParseMessage(StringPiece(plaintext, plaintext_length))); |
| 751 if (!cetv.get()) { | 759 if (!cetv.get()) { |
| 752 *error_details = "CETV parse error"; | 760 *error_details = "CETV parse error"; |
| 753 return QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER; | 761 return QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER; |
| 754 } | 762 } |
| 755 | 763 |
| 756 StringPiece key, signature; | 764 StringPiece key, signature; |
| 757 if (cetv->GetStringPiece(kCIDK, &key) && | 765 if (cetv->GetStringPiece(kCIDK, &key) && |
| (...skipping 1038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1796 : channel_id_enabled(false), | 1804 : channel_id_enabled(false), |
| 1797 is_primary(false), | 1805 is_primary(false), |
| 1798 primary_time(QuicWallTime::Zero()), | 1806 primary_time(QuicWallTime::Zero()), |
| 1799 priority(0), | 1807 priority(0), |
| 1800 source_address_token_boxer(nullptr) {} | 1808 source_address_token_boxer(nullptr) {} |
| 1801 | 1809 |
| 1802 QuicCryptoServerConfig::Config::~Config() { | 1810 QuicCryptoServerConfig::Config::~Config() { |
| 1803 STLDeleteElements(&key_exchanges); | 1811 STLDeleteElements(&key_exchanges); |
| 1804 } | 1812 } |
| 1805 | 1813 |
| 1814 QuicCryptoProof::QuicCryptoProof() : certs(nullptr) {} |
| 1815 QuicCryptoProof::~QuicCryptoProof() {} |
| 1806 } // namespace net | 1816 } // namespace net |
| OLD | NEW |