1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_ 6 #define QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_ 7 8 #include "quiche/quic/core/crypto/quic_encrypter.h" 9 #include "quiche/quic/core/quic_framer.h" 10 #include "quiche/quic/core/quic_packets.h" 11 12 namespace quic { 13 14 namespace test { 15 16 class QuicFramerPeer { 17 public: 18 QuicFramerPeer() = delete; 19 20 static uint64_t CalculatePacketNumberFromWire( 21 QuicFramer* framer, QuicPacketNumberLength packet_number_length, 22 QuicPacketNumber last_packet_number, uint64_t packet_number); 23 static void SetLastSerializedServerConnectionId( 24 QuicFramer* framer, QuicConnectionId server_connection_id); 25 static void SetLastSerializedClientConnectionId( 26 QuicFramer* framer, QuicConnectionId client_connection_id); 27 static void SetLastWrittenPacketNumberLength(QuicFramer* framer, 28 size_t packet_number_length); 29 static void SetLargestPacketNumber(QuicFramer* framer, 30 QuicPacketNumber packet_number); 31 static void SetPerspective(QuicFramer* framer, Perspective perspective); 32 33 // SwapCrypters exchanges the state of the crypters of |framer1| with 34 // |framer2|. 35 static void SwapCrypters(QuicFramer* framer1, QuicFramer* framer2); 36 37 static QuicEncrypter* GetEncrypter(QuicFramer* framer, EncryptionLevel level); 38 static QuicDecrypter* GetDecrypter(QuicFramer* framer, EncryptionLevel level); 39 40 static void SetFirstSendingPacketNumber(QuicFramer* framer, 41 uint64_t packet_number); 42 static void SetExpectedServerConnectionIDLength( 43 QuicFramer* framer, uint8_t expected_server_connection_id_length); 44 static QuicPacketNumber GetLargestDecryptedPacketNumber( 45 QuicFramer* framer, PacketNumberSpace packet_number_space); 46 47 static bool ProcessAndValidateIetfConnectionIdLength( 48 QuicDataReader* reader, ParsedQuicVersion version, 49 Perspective perspective, 50 bool should_update_expected_server_connection_id_length, 51 uint8_t* expected_server_connection_id_length, 52 uint8_t* destination_connection_id_length, 53 uint8_t* source_connection_id_length, std::string* detailed_error); 54 set_current_received_frame_type(QuicFramer * framer,uint64_t current_received_frame_type)55 static void set_current_received_frame_type( 56 QuicFramer* framer, uint64_t current_received_frame_type) { 57 framer->current_received_frame_type_ = current_received_frame_type; 58 } 59 infer_packet_header_type_from_version(QuicFramer * framer)60 static bool infer_packet_header_type_from_version(QuicFramer* framer) { 61 return framer->infer_packet_header_type_from_version_; 62 } 63 }; 64 65 } // namespace test 66 67 } // namespace quic 68 69 #endif // QUICHE_QUIC_TEST_TOOLS_QUIC_FRAMER_PEER_H_ 70