| Index: net/quic/quic_framer_test.cc
|
| diff --git a/net/quic/quic_framer_test.cc b/net/quic/quic_framer_test.cc
|
| index 16a2159d371a21f7d02e82754040eecedcedbac0..4cc1cc0426b3cc93d468ba939b696f0fecd16f75 100644
|
| --- a/net/quic/quic_framer_test.cc
|
| +++ b/net/quic/quic_framer_test.cc
|
| @@ -151,6 +151,13 @@ class TestDecrypter : public QuicDecrypter {
|
| ~TestDecrypter() override {}
|
| bool SetKey(StringPiece key) override { return true; }
|
| bool SetNoncePrefix(StringPiece nonce_prefix) override { return true; }
|
| + bool SetPreliminaryKey(StringPiece key) override {
|
| + QUIC_BUG << "should not be called";
|
| + return false;
|
| + }
|
| + bool SetDiversificationNonce(DiversificationNonce key) override {
|
| + return true;
|
| + }
|
| bool DecryptPacket(QuicPathId path_id,
|
| QuicPacketNumber packet_number,
|
| StringPiece associated_data,
|
| @@ -381,7 +388,8 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
|
|
| bool CheckDecryption(const QuicEncryptedPacket& encrypted,
|
| bool includes_version,
|
| - bool includes_path_id) {
|
| + bool includes_path_id,
|
| + bool includes_diversification_nonce) {
|
| if (visitor_.header_->packet_number != decrypter_->packet_number_) {
|
| LOG(ERROR) << "Decrypted incorrect packet number. expected "
|
| << visitor_.header_->packet_number
|
| @@ -390,18 +398,20 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
| }
|
| if (QuicFramer::GetAssociatedDataFromEncryptedPacket(
|
| encrypted, PACKET_8BYTE_CONNECTION_ID, includes_version,
|
| - includes_path_id,
|
| + includes_path_id, includes_diversification_nonce,
|
| PACKET_6BYTE_PACKET_NUMBER) != decrypter_->associated_data_) {
|
| LOG(ERROR) << "Decrypted incorrect associated data. expected "
|
| << QuicFramer::GetAssociatedDataFromEncryptedPacket(
|
| encrypted, PACKET_8BYTE_CONNECTION_ID, includes_version,
|
| - includes_path_id, PACKET_6BYTE_PACKET_NUMBER)
|
| + includes_path_id, includes_diversification_nonce,
|
| + PACKET_6BYTE_PACKET_NUMBER)
|
| << " actual: " << decrypter_->associated_data_;
|
| return false;
|
| }
|
| - StringPiece ciphertext(encrypted.AsStringPiece().substr(
|
| - GetStartOfEncryptedData(PACKET_8BYTE_CONNECTION_ID, includes_version,
|
| - includes_path_id, PACKET_6BYTE_PACKET_NUMBER)));
|
| + StringPiece ciphertext(
|
| + encrypted.AsStringPiece().substr(GetStartOfEncryptedData(
|
| + PACKET_8BYTE_CONNECTION_ID, includes_version, includes_path_id,
|
| + includes_diversification_nonce, PACKET_6BYTE_PACKET_NUMBER)));
|
| if (ciphertext != decrypter_->ciphertext_) {
|
| LOG(ERROR) << "Decrypted incorrect ciphertext data. expected "
|
| << ciphertext << " actual: " << decrypter_->ciphertext_;
|
| @@ -443,8 +453,9 @@ class QuicFramerTest : public ::testing::TestWithParam<QuicVersion> {
|
| }
|
| CheckProcessingFails(
|
| packet,
|
| - i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, include_version,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + i + GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, include_version, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_STREAM_DATA);
|
| }
|
| }
|
| @@ -599,7 +610,7 @@ TEST_P(QuicFramerTest, LargePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize + 1] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -607,15 +618,14 @@ TEST_P(QuicFramerTest, LargePacket) {
|
| // private flags
|
| 0x00,
|
| };
|
| -
|
| - memset(packet + GetPacketHeaderSize(
|
| - PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| - PACKET_6BYTE_PACKET_NUMBER), 0,
|
| - kMaxPacketSize - GetPacketHeaderSize(
|
| - PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| - PACKET_6BYTE_PACKET_NUMBER) + 1);
|
| // clang-format on
|
|
|
| + const size_t header_size = GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER);
|
| +
|
| + memset(packet + header_size, 0, kMaxPacketSize - header_size);
|
| +
|
| QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| EXPECT_DFATAL(framer_.ProcessPacket(encrypted), "Packet too large:1");
|
|
|
| @@ -630,7 +640,7 @@ TEST_P(QuicFramerTest, PacketHeader) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -658,7 +668,8 @@ TEST_P(QuicFramerTest, PacketHeader) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -674,110 +685,6 @@ TEST_P(QuicFramerTest, PacketHeader) {
|
| }
|
| }
|
|
|
| -TEST_P(QuicFramerTest, PacketHeaderWith4ByteConnectionId) {
|
| - QuicFramerPeer::SetLastSerializedConnectionId(&framer_, kConnectionId);
|
| -
|
| - // clang-format off
|
| - unsigned char packet[] = {
|
| - // public flags (4 byte connection_id)
|
| - 0x38,
|
| - // connection_id
|
| - 0x10, 0x32, 0x54, 0x76,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - // clang-format on
|
| -
|
| - QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| - EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| - EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| - ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id);
|
| - EXPECT_FALSE(visitor_.header_->public_header.multipath_flag);
|
| - EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| - EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| - EXPECT_FALSE(visitor_.header_->fec_flag);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| - EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
| - EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
|
| - EXPECT_EQ(0u, visitor_.header_->fec_group);
|
| -
|
| - // Now test framing boundaries.
|
| - for (size_t i = 0;
|
| - i < GetPacketHeaderSize(PACKET_4BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| - ++i) {
|
| - string expected_error;
|
| - if (i < kConnectionIdOffset) {
|
| - expected_error = "Unable to read public flags.";
|
| - } else if (i < GetPacketNumberOffset(PACKET_4BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read ConnectionId.";
|
| - } else if (i < GetPrivateFlagsOffset(PACKET_4BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| - }
|
| -}
|
| -
|
| -TEST_P(QuicFramerTest, PacketHeader1ByteConnectionId) {
|
| - QuicFramerPeer::SetLastSerializedConnectionId(&framer_, kConnectionId);
|
| -
|
| - // clang-format off
|
| - unsigned char packet[] = {
|
| - // public flags (1 byte connection_id)
|
| - 0x34,
|
| - // connection_id
|
| - 0x10,
|
| - // packet number
|
| - 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| - // private flags
|
| - 0x00,
|
| - };
|
| - // clang-format on
|
| -
|
| - QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| - EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| - EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| - ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id);
|
| - EXPECT_FALSE(visitor_.header_->public_header.multipath_flag);
|
| - EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| - EXPECT_FALSE(visitor_.header_->public_header.version_flag);
|
| - EXPECT_FALSE(visitor_.header_->fec_flag);
|
| - EXPECT_FALSE(visitor_.header_->entropy_flag);
|
| - EXPECT_EQ(0, visitor_.header_->entropy_hash);
|
| - EXPECT_EQ(kPacketNumber, visitor_.header_->packet_number);
|
| - EXPECT_EQ(NOT_IN_FEC_GROUP, visitor_.header_->is_in_fec_group);
|
| - EXPECT_EQ(0u, visitor_.header_->fec_group);
|
| -
|
| - // Now test framing boundaries.
|
| - for (size_t i = 0;
|
| - i < GetPacketHeaderSize(PACKET_1BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| - ++i) {
|
| - string expected_error;
|
| - if (i < kConnectionIdOffset) {
|
| - expected_error = "Unable to read public flags.";
|
| - } else if (i < GetPacketNumberOffset(PACKET_1BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read ConnectionId.";
|
| - } else if (i < GetPrivateFlagsOffset(PACKET_1BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId)) {
|
| - expected_error = "Unable to read packet number.";
|
| - } else {
|
| - expected_error = "Unable to read private flags.";
|
| - }
|
| - CheckProcessingFails(packet, i, expected_error, QUIC_INVALID_PACKET_HEADER);
|
| - }
|
| -}
|
| -
|
| TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) {
|
| QuicFramerPeer::SetLastSerializedConnectionId(&framer_, kConnectionId);
|
|
|
| @@ -812,7 +719,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith0ByteConnectionId) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_0BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -834,7 +742,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - 0x3D,
|
| + 0x39,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // version tag
|
| @@ -865,7 +773,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithVersionFlag) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -887,7 +796,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -903,7 +812,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) {
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
| EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id);
|
| EXPECT_TRUE(visitor_.header_->public_header.multipath_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| @@ -919,7 +829,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithMultipathFlag) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| + kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -942,7 +853,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - 0x7D,
|
| + 0x79,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // version tag
|
| @@ -960,7 +871,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) {
|
| EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_MISSING_PAYLOAD, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
| EXPECT_EQ(kConnectionId, visitor_.header_->public_header.connection_id);
|
| EXPECT_TRUE(visitor_.header_->public_header.multipath_flag);
|
| EXPECT_FALSE(visitor_.header_->public_header.reset_flag);
|
| @@ -977,7 +889,8 @@ TEST_P(QuicFramerTest, PacketHeaderWithBothVersionFlagAndMultipathFlag) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| + kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -1003,7 +916,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithPathChange) {
|
| // clang-format off
|
| unsigned char packet1[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -1031,7 +944,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithPathChange) {
|
| // clang-format off
|
| unsigned char packet2[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -1057,7 +970,7 @@ TEST_P(QuicFramerTest, PacketHeaderWithPathChange) {
|
| // clang-format off
|
| unsigned char packet3[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -1085,7 +998,7 @@ TEST_P(QuicFramerTest, ReceivedPacketOnClosedPath) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -1111,7 +1024,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id and 4 byte packet number)
|
| - 0x2C,
|
| + 0x28,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -1139,7 +1052,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith4BytePacketNumber) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_4BYTE_PACKET_NUMBER);
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_4BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -1162,7 +1076,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id and 2 byte packet number)
|
| - 0x1C,
|
| + 0x18,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -1190,7 +1104,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith2BytePacketNumber) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_2BYTE_PACKET_NUMBER);
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_2BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -1213,7 +1128,7 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id and 1 byte packet number)
|
| - 0x0C,
|
| + 0x08,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -1241,7 +1156,8 @@ TEST_P(QuicFramerTest, PacketHeaderWith1BytePacketNumber) {
|
| // Now test framing boundaries.
|
| for (size_t i = 0;
|
| i < GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_1BYTE_PACKET_NUMBER);
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_1BYTE_PACKET_NUMBER);
|
| ++i) {
|
| string expected_error;
|
| if (i < kConnectionIdOffset) {
|
| @@ -1262,7 +1178,7 @@ TEST_P(QuicFramerTest, InvalidPublicFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags: all flags set but the public reset flag and version flag.
|
| - 0xFC,
|
| + 0xF8,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -1285,6 +1201,48 @@ TEST_P(QuicFramerTest, InvalidPublicFlag) {
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| };
|
|
|
| +TEST_P(QuicFramerTest, PacketWithDiversificationNonce) {
|
| + // clang-format off
|
| + unsigned char packet[] = {
|
| + // public flags: includes nonce flag
|
| + 0x7C,
|
| + // connection_id
|
| + 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| + // nonce
|
| + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
| + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
| + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
| + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
|
| + // packet number
|
| + 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12,
|
| + // private flags
|
| + 0x00,
|
| +
|
| + // frame type (padding)
|
| + 0x00,
|
| + 0x00, 0x00, 0x00, 0x00
|
| + };
|
| + // clang-format on
|
| +
|
| + QuicEncryptedPacket encrypted(AsChars(packet), arraysize(packet), false);
|
| + QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
|
| + if (framer_.version() > QUIC_VERSION_32) {
|
| + EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| + ASSERT_TRUE(visitor_.public_header_->nonce != nullptr);
|
| + for (char i = 0; i < 32; ++i) {
|
| + EXPECT_EQ(i, (*visitor_.public_header_->nonce)[static_cast<int>(i)]);
|
| + }
|
| + } else if (framer_.version() < QUIC_VERSION_32) {
|
| + // Packet is successfully parsed by accident.
|
| + EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| + ASSERT_TRUE(visitor_.public_header_ != nullptr);
|
| + } else {
|
| + EXPECT_FALSE(framer_.ProcessPacket(encrypted));
|
| + EXPECT_EQ(QUIC_INVALID_PACKET_HEADER, framer_.error());
|
| + EXPECT_EQ("Illegal private flags value.", framer_.detailed_error());
|
| + }
|
| +};
|
| +
|
| TEST_P(QuicFramerTest, InvalidPublicFlagWithMatchingVersions) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| @@ -1314,7 +1272,7 @@ TEST_P(QuicFramerTest, LargePublicFlagWithMismatchedVersions) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id, version flag and an unknown flag)
|
| - 0x7D,
|
| + 0x79,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1343,7 +1301,7 @@ TEST_P(QuicFramerTest, InvalidPrivateFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1367,7 +1325,7 @@ TEST_P(QuicFramerTest, InvalidFECGroupOffset) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1396,7 +1354,7 @@ TEST_P(QuicFramerTest, PaddingFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1429,14 +1387,16 @@ TEST_P(QuicFramerTest, PaddingFrame) {
|
| EXPECT_TRUE(framer_.ProcessPacket(encrypted));
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(0u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| // A packet with no frames is not acceptable.
|
| CheckProcessingFails(
|
| - packet, GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + packet, GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER),
|
| "Packet has no frames.", QUIC_MISSING_PAYLOAD);
|
| }
|
|
|
| @@ -1444,7 +1404,7 @@ TEST_P(QuicFramerTest, StreamFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1475,7 +1435,8 @@ TEST_P(QuicFramerTest, StreamFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| @@ -1492,7 +1453,7 @@ TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1523,7 +1484,8 @@ TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| @@ -1542,7 +1504,7 @@ TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1573,7 +1535,8 @@ TEST_P(QuicFramerTest, StreamFrame2ByteStreamId) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| @@ -1592,7 +1555,7 @@ TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1623,7 +1586,8 @@ TEST_P(QuicFramerTest, StreamFrame1ByteStreamId) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| @@ -1642,7 +1606,7 @@ TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x3D,
|
| + 0x39,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1677,7 +1641,8 @@ TEST_P(QuicFramerTest, StreamFrameWithVersion) {
|
| ASSERT_TRUE(visitor_.header_.get());
|
| EXPECT_TRUE(visitor_.header_->public_header.version_flag);
|
| EXPECT_EQ(GetParam(), visitor_.header_->public_header.versions[0]);
|
| - EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(1u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| @@ -1696,7 +1661,7 @@ TEST_P(QuicFramerTest, RejectPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1727,7 +1692,8 @@ TEST_P(QuicFramerTest, RejectPacket) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| ASSERT_EQ(0u, visitor_.stream_frames_.size());
|
| EXPECT_EQ(0u, visitor_.ack_frames_.size());
|
| @@ -1739,7 +1705,7 @@ TEST_P(QuicFramerTest, RejectPublicHeader) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -1758,7 +1724,7 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestamp) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -1805,7 +1771,8 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestamp) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -1873,7 +1840,8 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestamp) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -1927,7 +1895,8 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestampVersion32) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -1986,7 +1955,8 @@ TEST_P(QuicFramerTest, AckFrameTwoTimestampVersion32) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -1995,7 +1965,7 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -2038,7 +2008,8 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2096,7 +2067,8 @@ TEST_P(QuicFramerTest, AckFrameOneTimestamp) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -2146,7 +2118,8 @@ TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2195,7 +2168,8 @@ TEST_P(QuicFramerTest, AckFrameOneTimestampVersion32) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -2243,7 +2217,8 @@ TEST_P(QuicFramerTest, AckFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2293,7 +2268,8 @@ TEST_P(QuicFramerTest, AckFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -2302,7 +2278,7 @@ TEST_P(QuicFramerTest, AckFrameVersion32) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -2339,7 +2315,8 @@ TEST_P(QuicFramerTest, AckFrameVersion32) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2380,7 +2357,8 @@ TEST_P(QuicFramerTest, AckFrameVersion32) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -2389,7 +2367,7 @@ TEST_P(QuicFramerTest, AckFrameRevivedPackets) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -2432,7 +2410,8 @@ TEST_P(QuicFramerTest, AckFrameRevivedPackets) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2488,7 +2467,8 @@ TEST_P(QuicFramerTest, AckFrameRevivedPackets) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_ACK_DATA);
|
| }
|
| }
|
| @@ -2497,7 +2477,8 @@ TEST_P(QuicFramerTest, AckFrameNoNacks) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -2524,7 +2505,8 @@ TEST_P(QuicFramerTest, AckFrameNoNacks) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2548,7 +2530,8 @@ TEST_P(QuicFramerTest, AckFrame500Nacks) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -2593,7 +2576,8 @@ TEST_P(QuicFramerTest, AckFrame500Nacks) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2619,7 +2603,8 @@ TEST_P(QuicFramerTest, AckFrame500NacksVersion32) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -2662,7 +2647,8 @@ TEST_P(QuicFramerTest, AckFrame500NacksVersion32) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.ack_frames_.size());
|
| @@ -2688,7 +2674,7 @@ TEST_P(QuicFramerTest, StopWaitingFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -2714,7 +2700,8 @@ TEST_P(QuicFramerTest, StopWaitingFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
| ASSERT_EQ(1u, visitor_.stop_waiting_frames_.size());
|
| @@ -2735,7 +2722,8 @@ TEST_P(QuicFramerTest, StopWaitingFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_STOP_WAITING_DATA);
|
| }
|
| }
|
| @@ -2744,7 +2732,7 @@ TEST_P(QuicFramerTest, RstStreamFrameQuic) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -2773,7 +2761,8 @@ TEST_P(QuicFramerTest, RstStreamFrameQuic) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(kStreamId, visitor_.rst_stream_frame_.stream_id);
|
| EXPECT_EQ(0x01, visitor_.rst_stream_frame_.error_code);
|
| @@ -2795,7 +2784,8 @@ TEST_P(QuicFramerTest, RstStreamFrameQuic) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_RST_STREAM_DATA);
|
| }
|
| }
|
| @@ -2804,7 +2794,7 @@ TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -2834,7 +2824,8 @@ TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(0u, visitor_.stream_frames_.size());
|
|
|
| @@ -2855,7 +2846,8 @@ TEST_P(QuicFramerTest, ConnectionCloseFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_CONNECTION_CLOSE_DATA);
|
| }
|
| }
|
| @@ -2864,7 +2856,7 @@ TEST_P(QuicFramerTest, GoAwayFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -2895,7 +2887,8 @@ TEST_P(QuicFramerTest, GoAwayFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(kStreamId, visitor_.goaway_frame_.last_good_stream_id);
|
| EXPECT_EQ(0x9, visitor_.goaway_frame_.error_code);
|
| @@ -2917,7 +2910,8 @@ TEST_P(QuicFramerTest, GoAwayFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_GOAWAY_DATA);
|
| }
|
| }
|
| @@ -2926,7 +2920,7 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -2952,7 +2946,8 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(kStreamId, visitor_.window_update_frame_.stream_id);
|
| EXPECT_EQ(kStreamOffset, visitor_.window_update_frame_.byte_offset);
|
| @@ -2969,7 +2964,8 @@ TEST_P(QuicFramerTest, WindowUpdateFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_WINDOW_UPDATE_DATA);
|
| }
|
| }
|
| @@ -2978,7 +2974,7 @@ TEST_P(QuicFramerTest, BlockedFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3001,7 +2997,8 @@ TEST_P(QuicFramerTest, BlockedFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(kStreamId, visitor_.blocked_frame_.stream_id);
|
|
|
| @@ -3012,7 +3009,8 @@ TEST_P(QuicFramerTest, BlockedFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_BLOCKED_DATA);
|
| }
|
| }
|
| @@ -3021,7 +3019,7 @@ TEST_P(QuicFramerTest, PingFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3041,7 +3039,8 @@ TEST_P(QuicFramerTest, PingFrame) {
|
|
|
| EXPECT_EQ(QUIC_NO_ERROR, framer_.error());
|
| ASSERT_TRUE(visitor_.header_.get());
|
| - EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId));
|
| + EXPECT_TRUE(CheckDecryption(encrypted, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce));
|
|
|
| EXPECT_EQ(1u, visitor_.ping_frames_.size());
|
|
|
| @@ -3052,7 +3051,7 @@ TEST_P(QuicFramerTest, PathCloseFrame) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -3087,7 +3086,8 @@ TEST_P(QuicFramerTest, PathCloseFrame) {
|
| CheckProcessingFails(
|
| packet,
|
| i + GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - kIncludePathId, PACKET_6BYTE_PACKET_NUMBER),
|
| + kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER),
|
| expected_error, QUIC_INVALID_PATH_CLOSE_DATA);
|
| }
|
| }
|
| @@ -3096,7 +3096,7 @@ TEST_P(QuicFramerTest, PublicResetPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (public reset, 8 byte connection_id)
|
| - 0x0E,
|
| + 0x0A,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3158,7 +3158,7 @@ TEST_P(QuicFramerTest, PublicResetPacketWithTrailingJunk) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (public reset, 8 byte connection_id)
|
| - 0x0E,
|
| + 0x0A,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3194,7 +3194,7 @@ TEST_P(QuicFramerTest, PublicResetPacketWithClientAddress) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (public reset, 8 byte connection_id)
|
| - 0x0E,
|
| + 0x0A,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3265,7 +3265,7 @@ TEST_P(QuicFramerTest, VersionNegotiationPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x3D,
|
| + 0x39,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3303,7 +3303,7 @@ TEST_P(QuicFramerTest, DropFecPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x38,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3352,7 +3352,8 @@ TEST_P(QuicFramerTest, BuildPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3368,9 +3369,9 @@ TEST_P(QuicFramerTest, BuildPaddingFramePacket) {
|
| };
|
| // clang-format on
|
|
|
| - uint64_t header_size =
|
| - GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER);
|
| + uint64_t header_size = GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_6BYTE_PACKET_NUMBER);
|
| memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| @@ -3400,7 +3401,8 @@ TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id and 4 byte packet number)
|
| - 0x2C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x28 : 0x2C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3415,9 +3417,9 @@ TEST_P(QuicFramerTest, Build4ByteSequenceNumberPaddingFramePacket) {
|
| };
|
| // clang-format on
|
|
|
| - uint64_t header_size =
|
| - GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_4BYTE_PACKET_NUMBER);
|
| + uint64_t header_size = GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_4BYTE_PACKET_NUMBER);
|
| memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| @@ -3447,7 +3449,8 @@ TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id and 2 byte packet number)
|
| - 0x1C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x18 : 0x1C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3462,9 +3465,9 @@ TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
|
| };
|
| // clang-format on
|
|
|
| - uint64_t header_size =
|
| - GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_2BYTE_PACKET_NUMBER);
|
| + uint64_t header_size = GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_2BYTE_PACKET_NUMBER);
|
| memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| @@ -3494,7 +3497,8 @@ TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
|
| // clang-format off
|
| unsigned char packet[kMaxPacketSize] = {
|
| // public flags (8 byte connection_id and 1 byte packet number)
|
| - 0x0C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x08 : 0x0C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3509,9 +3513,9 @@ TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
|
| };
|
| // clang-format on
|
|
|
| - uint64_t header_size =
|
| - GetPacketHeaderSize(PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion,
|
| - !kIncludePathId, PACKET_1BYTE_PACKET_NUMBER);
|
| + uint64_t header_size = GetPacketHeaderSize(
|
| + PACKET_8BYTE_CONNECTION_ID, !kIncludeVersion, !kIncludePathId,
|
| + !kIncludeDiversificationNonce, PACKET_1BYTE_PACKET_NUMBER);
|
| memset(packet + header_size + 1, 0x00, kMaxPacketSize - header_size - 1);
|
|
|
| std::unique_ptr<QuicPacket> data(BuildDataPacket(header, frames));
|
| @@ -3541,7 +3545,8 @@ TEST_P(QuicFramerTest, BuildStreamFramePacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3592,7 +3597,8 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithVersionFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x3D,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x39 : 0x3D),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // version tag
|
| @@ -3643,7 +3649,8 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x7C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x78 : 0x7C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3698,7 +3705,8 @@ TEST_P(QuicFramerTest, BuildStreamFramePacketWithBothVersionAndMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x7D,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x79 : 0x7D),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -3739,7 +3747,7 @@ TEST_P(QuicFramerTest, BuildVersionNegotiationPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x0D,
|
| + 0x09,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // version tag
|
| @@ -3811,7 +3819,8 @@ TEST_P(QuicFramerTest, BuildAckFramePacket) {
|
| // clang-format off
|
| unsigned char packet_version32[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -3962,7 +3971,8 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameLargePacket) {
|
| // clang-format off
|
| unsigned char packet_version32[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -4076,7 +4086,7 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + 0x3C,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -4108,7 +4118,8 @@ TEST_P(QuicFramerTest, BuildTruncatedAckFrameSmallPacket) {
|
| // clang-format off
|
| unsigned char packet_version32[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // packet number
|
| @@ -4174,7 +4185,8 @@ TEST_P(QuicFramerTest, BuildStopWaitingPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4219,7 +4231,8 @@ TEST_P(QuicFramerTest, BuildRstFramePacketQuic) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4272,7 +4285,8 @@ TEST_P(QuicFramerTest, BuildCloseFramePacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4325,7 +4339,8 @@ TEST_P(QuicFramerTest, BuildGoAwayPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4379,7 +4394,8 @@ TEST_P(QuicFramerTest, BuildWindowUpdatePacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4426,7 +4442,8 @@ TEST_P(QuicFramerTest, BuildBlockedPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4469,7 +4486,8 @@ TEST_P(QuicFramerTest, BuildPingPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4512,7 +4530,8 @@ TEST_P(QuicFramerTest, BuildPathClosePacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version)
|
| - 0x7C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x78 : 0X7C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76, 0x98, 0xBA, 0xDC, 0xFE,
|
| // path_id
|
| @@ -4556,7 +4575,8 @@ TEST_P(QuicFramerTest, BuildMtuDiscoveryPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4590,7 +4610,7 @@ TEST_P(QuicFramerTest, BuildPublicResetPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (public reset, 8 byte ConnectionId)
|
| - 0x0E,
|
| + 0x0A,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4636,7 +4656,7 @@ TEST_P(QuicFramerTest, BuildPublicResetPacketWithClientAddress) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (public reset, 8 byte ConnectionId)
|
| - 0x0E,
|
| + 0x0A,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4683,7 +4703,8 @@ TEST_P(QuicFramerTest, EncryptPacket) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4703,7 +4724,8 @@ TEST_P(QuicFramerTest, EncryptPacket) {
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER));
|
| + !kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length =
|
| framer_.EncryptPayload(ENCRYPTION_NONE, kDefaultPathId, packet_number,
|
| @@ -4718,7 +4740,7 @@ TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x3D,
|
| + 0x39,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4740,7 +4762,8 @@ TEST_P(QuicFramerTest, EncryptPacketWithVersionFlag) {
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| - kIncludeVersion, !kIncludePathId, PACKET_6BYTE_PACKET_NUMBER));
|
| + kIncludeVersion, !kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length =
|
| framer_.EncryptPayload(ENCRYPTION_NONE, kDefaultPathId, packet_number,
|
| @@ -4755,7 +4778,7 @@ TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x7C,
|
| + 0x78,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4777,7 +4800,8 @@ TEST_P(QuicFramerTest, EncryptPacketWithMultipathFlag) {
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| - !kIncludeVersion, kIncludePathId, PACKET_6BYTE_PACKET_NUMBER));
|
| + !kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length = framer_.EncryptPayload(
|
| ENCRYPTION_NONE, kPathId, packet_number, *raw, buffer, kMaxPacketSize);
|
| @@ -4791,7 +4815,7 @@ TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (version, 8 byte connection_id)
|
| - 0x7D,
|
| + 0x79,
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4815,7 +4839,8 @@ TEST_P(QuicFramerTest, EncryptPacketWithBothVersionFlagAndMultipathFlag) {
|
|
|
| std::unique_ptr<QuicPacket> raw(new QuicPacket(
|
| AsChars(packet), arraysize(packet), false, PACKET_8BYTE_CONNECTION_ID,
|
| - kIncludeVersion, kIncludePathId, PACKET_6BYTE_PACKET_NUMBER));
|
| + kIncludeVersion, kIncludePathId, !kIncludeDiversificationNonce,
|
| + PACKET_6BYTE_PACKET_NUMBER));
|
| char buffer[kMaxPacketSize];
|
| size_t encrypted_length = framer_.EncryptPayload(
|
| ENCRYPTION_NONE, kPathId, packet_number, *raw, buffer, kMaxPacketSize);
|
| @@ -4953,7 +4978,8 @@ TEST_P(QuicFramerTest, EntropyFlagTest) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
| @@ -4990,7 +5016,8 @@ TEST_P(QuicFramerTest, StopPacketProcessing) {
|
| // clang-format off
|
| unsigned char packet[] = {
|
| // public flags (8 byte connection_id)
|
| - 0x3C,
|
| + static_cast<unsigned char>(
|
| + framer_.version() > QUIC_VERSION_32 ? 0x38 : 0x3C),
|
| // connection_id
|
| 0x10, 0x32, 0x54, 0x76,
|
| 0x98, 0xBA, 0xDC, 0xFE,
|
|
|