OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/core/quic_framer.h" | 5 #include "net/quic/core/quic_framer.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cstdint> | 8 #include <cstdint> |
9 #include <map> | 9 #include <map> |
10 #include <memory> | 10 #include <memory> |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 const size_t kConnectionIdOffset = kPublicFlagsSize; | 50 const size_t kConnectionIdOffset = kPublicFlagsSize; |
51 // Index into the version string in the header. (if present). | 51 // Index into the version string in the header. (if present). |
52 const size_t kVersionOffset = kConnectionIdOffset + PACKET_8BYTE_CONNECTION_ID; | 52 const size_t kVersionOffset = kConnectionIdOffset + PACKET_8BYTE_CONNECTION_ID; |
53 | 53 |
54 // Size in bytes of the stream frame fields for an arbitrary StreamID and | 54 // Size in bytes of the stream frame fields for an arbitrary StreamID and |
55 // offset and the last frame in a packet. | 55 // offset and the last frame in a packet. |
56 size_t GetMinStreamFrameSize() { | 56 size_t GetMinStreamFrameSize() { |
57 return kQuicFrameTypeSize + kQuicMaxStreamIdSize + kQuicMaxStreamOffsetSize; | 57 return kQuicFrameTypeSize + kQuicMaxStreamIdSize + kQuicMaxStreamOffsetSize; |
58 } | 58 } |
59 | 59 |
60 // Index into the path id offset in the header (if present). | |
61 size_t GetPathIdOffset(QuicConnectionIdLength connection_id_length, | |
62 bool include_version) { | |
63 return kConnectionIdOffset + connection_id_length + | |
64 (include_version ? kQuicVersionSize : 0); | |
65 } | |
66 | |
67 // Index into the packet number offset in the header. | 60 // Index into the packet number offset in the header. |
68 size_t GetPacketNumberOffset(QuicConnectionIdLength connection_id_length, | 61 size_t GetPacketNumberOffset(QuicConnectionIdLength connection_id_length, |
69 bool include_version) { | 62 bool include_version) { |
70 return kConnectionIdOffset + connection_id_length + | 63 return kConnectionIdOffset + connection_id_length + |
71 (include_version ? kQuicVersionSize : 0); | 64 (include_version ? kQuicVersionSize : 0); |
72 } | 65 } |
73 | 66 |
74 size_t GetPacketNumberOffset(bool include_version) { | 67 size_t GetPacketNumberOffset(bool include_version) { |
75 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version); | 68 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version); |
76 } | 69 } |
77 | 70 |
78 // Index into the private flags offset in the data packet header. | |
79 size_t GetPrivateFlagsOffset(QuicConnectionIdLength connection_id_length, | |
80 bool include_version) { | |
81 return GetPacketNumberOffset(connection_id_length, include_version) + | |
82 PACKET_6BYTE_PACKET_NUMBER; | |
83 } | |
84 | |
85 size_t GetPrivateFlagsOffset(bool include_version) { | |
86 return GetPrivateFlagsOffset(PACKET_8BYTE_CONNECTION_ID, include_version); | |
87 } | |
88 | |
89 size_t GetPrivateFlagsOffset(bool include_version, | |
90 QuicPacketNumberLength packet_number_length) { | |
91 return GetPacketNumberOffset(PACKET_8BYTE_CONNECTION_ID, include_version) + | |
92 packet_number_length; | |
93 } | |
94 | |
95 // Index into the message tag of the public reset packet. | 71 // Index into the message tag of the public reset packet. |
96 // Public resets always have full connection_ids. | 72 // Public resets always have full connection_ids. |
97 const size_t kPublicResetPacketMessageTagOffset = | 73 const size_t kPublicResetPacketMessageTagOffset = |
98 kConnectionIdOffset + PACKET_8BYTE_CONNECTION_ID; | 74 kConnectionIdOffset + PACKET_8BYTE_CONNECTION_ID; |
99 | 75 |
100 class TestEncrypter : public QuicEncrypter { | 76 class TestEncrypter : public QuicEncrypter { |
101 public: | 77 public: |
102 ~TestEncrypter() override {} | 78 ~TestEncrypter() override {} |
103 bool SetKey(QuicStringPiece key) override { return true; } | 79 bool SetKey(QuicStringPiece key) override { return true; } |
104 bool SetNoncePrefix(QuicStringPiece nonce_prefix) override { return true; } | 80 bool SetNoncePrefix(QuicStringPiece nonce_prefix) override { return true; } |
(...skipping 17 matching lines...) Expand all Loading... |
122 size_t GetMaxPlaintextSize(size_t ciphertext_size) const override { | 98 size_t GetMaxPlaintextSize(size_t ciphertext_size) const override { |
123 return ciphertext_size; | 99 return ciphertext_size; |
124 } | 100 } |
125 size_t GetCiphertextSize(size_t plaintext_size) const override { | 101 size_t GetCiphertextSize(size_t plaintext_size) const override { |
126 return plaintext_size; | 102 return plaintext_size; |
127 } | 103 } |
128 QuicStringPiece GetKey() const override { return QuicStringPiece(); } | 104 QuicStringPiece GetKey() const override { return QuicStringPiece(); } |
129 QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } | 105 QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } |
130 | 106 |
131 QuicVersion version_; | 107 QuicVersion version_; |
132 Perspective perspective_; | |
133 QuicPacketNumber packet_number_; | 108 QuicPacketNumber packet_number_; |
134 string associated_data_; | 109 string associated_data_; |
135 string plaintext_; | 110 string plaintext_; |
136 }; | 111 }; |
137 | 112 |
138 class TestDecrypter : public QuicDecrypter { | 113 class TestDecrypter : public QuicDecrypter { |
139 public: | 114 public: |
140 ~TestDecrypter() override {} | 115 ~TestDecrypter() override {} |
141 bool SetKey(QuicStringPiece key) override { return true; } | 116 bool SetKey(QuicStringPiece key) override { return true; } |
142 bool SetNoncePrefix(QuicStringPiece nonce_prefix) override { return true; } | 117 bool SetNoncePrefix(QuicStringPiece nonce_prefix) override { return true; } |
(...skipping 18 matching lines...) Expand all Loading... |
161 memcpy(output, ciphertext.data(), ciphertext.length()); | 136 memcpy(output, ciphertext.data(), ciphertext.length()); |
162 *output_length = ciphertext.length(); | 137 *output_length = ciphertext.length(); |
163 return true; | 138 return true; |
164 } | 139 } |
165 QuicStringPiece GetKey() const override { return QuicStringPiece(); } | 140 QuicStringPiece GetKey() const override { return QuicStringPiece(); } |
166 QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } | 141 QuicStringPiece GetNoncePrefix() const override { return QuicStringPiece(); } |
167 const char* cipher_name() const override { return "Test"; } | 142 const char* cipher_name() const override { return "Test"; } |
168 // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. | 143 // Use a distinct value starting with 0xFFFFFF, which is never used by TLS. |
169 uint32_t cipher_id() const override { return 0xFFFFFFF2; } | 144 uint32_t cipher_id() const override { return 0xFFFFFFF2; } |
170 QuicVersion version_; | 145 QuicVersion version_; |
171 Perspective perspective_; | |
172 QuicPacketNumber packet_number_; | 146 QuicPacketNumber packet_number_; |
173 string associated_data_; | 147 string associated_data_; |
174 string ciphertext_; | 148 string ciphertext_; |
175 }; | 149 }; |
176 | 150 |
177 class TestQuicVisitor : public QuicFramerVisitorInterface { | 151 class TestQuicVisitor : public QuicFramerVisitorInterface { |
178 public: | 152 public: |
179 TestQuicVisitor() | 153 TestQuicVisitor() |
180 : error_count_(0), | 154 : error_count_(0), |
181 version_mismatch_(0), | 155 version_mismatch_(0), |
(...skipping 3502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3684 'o', ' ', 'w', 'o', | 3658 'o', ' ', 'w', 'o', |
3685 'r', 'l', 'd', '!', | 3659 'r', 'l', 'd', '!', |
3686 }; | 3660 }; |
3687 // clang-format on | 3661 // clang-format on |
3688 | 3662 |
3689 QuicFramerFuzzFunc(packet, arraysize(packet)); | 3663 QuicFramerFuzzFunc(packet, arraysize(packet)); |
3690 } | 3664 } |
3691 | 3665 |
3692 } // namespace test | 3666 } // namespace test |
3693 } // namespace net | 3667 } // namespace net |
OLD | NEW |