• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "quiche/quic/test_tools/quic_framer_peer.h"
6 
7 #include "quiche/quic/core/quic_framer.h"
8 #include "quiche/quic/core/quic_packets.h"
9 
10 namespace quic {
11 namespace test {
12 
13 // static
CalculatePacketNumberFromWire(QuicFramer * framer,QuicPacketNumberLength packet_number_length,QuicPacketNumber last_packet_number,uint64_t packet_number)14 uint64_t QuicFramerPeer::CalculatePacketNumberFromWire(
15     QuicFramer* framer, QuicPacketNumberLength packet_number_length,
16     QuicPacketNumber last_packet_number, uint64_t packet_number) {
17   return framer->CalculatePacketNumberFromWire(
18       packet_number_length, last_packet_number, packet_number);
19 }
20 
21 // static
SetLastSerializedServerConnectionId(QuicFramer * framer,QuicConnectionId server_connection_id)22 void QuicFramerPeer::SetLastSerializedServerConnectionId(
23     QuicFramer* framer, QuicConnectionId server_connection_id) {
24   framer->last_serialized_server_connection_id_ = server_connection_id;
25 }
26 
27 // static
SetLastSerializedClientConnectionId(QuicFramer * framer,QuicConnectionId client_connection_id)28 void QuicFramerPeer::SetLastSerializedClientConnectionId(
29     QuicFramer* framer, QuicConnectionId client_connection_id) {
30   framer->last_serialized_client_connection_id_ = client_connection_id;
31 }
32 
33 // static
SetLastWrittenPacketNumberLength(QuicFramer * framer,size_t packet_number_length)34 void QuicFramerPeer::SetLastWrittenPacketNumberLength(
35     QuicFramer* framer, size_t packet_number_length) {
36   framer->last_written_packet_number_length_ = packet_number_length;
37 }
38 
39 // static
SetLargestPacketNumber(QuicFramer * framer,QuicPacketNumber packet_number)40 void QuicFramerPeer::SetLargestPacketNumber(QuicFramer* framer,
41                                             QuicPacketNumber packet_number) {
42   framer->largest_packet_number_ = packet_number;
43 }
44 
45 // static
SetPerspective(QuicFramer * framer,Perspective perspective)46 void QuicFramerPeer::SetPerspective(QuicFramer* framer,
47                                     Perspective perspective) {
48   framer->perspective_ = perspective;
49   framer->infer_packet_header_type_from_version_ =
50       perspective == Perspective::IS_CLIENT;
51 }
52 
53 // static
SwapCrypters(QuicFramer * framer1,QuicFramer * framer2)54 void QuicFramerPeer::SwapCrypters(QuicFramer* framer1, QuicFramer* framer2) {
55   for (int i = ENCRYPTION_INITIAL; i < NUM_ENCRYPTION_LEVELS; i++) {
56     framer1->encrypter_[i].swap(framer2->encrypter_[i]);
57     framer1->decrypter_[i].swap(framer2->decrypter_[i]);
58   }
59 
60   EncryptionLevel framer2_level = framer2->decrypter_level_;
61   framer2->decrypter_level_ = framer1->decrypter_level_;
62   framer1->decrypter_level_ = framer2_level;
63   framer2_level = framer2->alternative_decrypter_level_;
64   framer2->alternative_decrypter_level_ = framer1->alternative_decrypter_level_;
65   framer1->alternative_decrypter_level_ = framer2_level;
66 
67   const bool framer2_latch = framer2->alternative_decrypter_latch_;
68   framer2->alternative_decrypter_latch_ = framer1->alternative_decrypter_latch_;
69   framer1->alternative_decrypter_latch_ = framer2_latch;
70 }
71 
72 // static
GetEncrypter(QuicFramer * framer,EncryptionLevel level)73 QuicEncrypter* QuicFramerPeer::GetEncrypter(QuicFramer* framer,
74                                             EncryptionLevel level) {
75   return framer->encrypter_[level].get();
76 }
77 
78 // static
GetDecrypter(QuicFramer * framer,EncryptionLevel level)79 QuicDecrypter* QuicFramerPeer::GetDecrypter(QuicFramer* framer,
80                                             EncryptionLevel level) {
81   return framer->decrypter_[level].get();
82 }
83 
84 // static
SetFirstSendingPacketNumber(QuicFramer * framer,uint64_t packet_number)85 void QuicFramerPeer::SetFirstSendingPacketNumber(QuicFramer* framer,
86                                                  uint64_t packet_number) {
87   *const_cast<QuicPacketNumber*>(&framer->first_sending_packet_number_) =
88       QuicPacketNumber(packet_number);
89 }
90 
91 // static
SetExpectedServerConnectionIDLength(QuicFramer * framer,uint8_t expected_server_connection_id_length)92 void QuicFramerPeer::SetExpectedServerConnectionIDLength(
93     QuicFramer* framer, uint8_t expected_server_connection_id_length) {
94   *const_cast<uint8_t*>(&framer->expected_server_connection_id_length_) =
95       expected_server_connection_id_length;
96 }
97 
98 // static
GetLargestDecryptedPacketNumber(QuicFramer * framer,PacketNumberSpace packet_number_space)99 QuicPacketNumber QuicFramerPeer::GetLargestDecryptedPacketNumber(
100     QuicFramer* framer, PacketNumberSpace packet_number_space) {
101   return framer->largest_decrypted_packet_numbers_[packet_number_space];
102 }
103 
104 // static
ProcessAndValidateIetfConnectionIdLength(QuicDataReader * reader,ParsedQuicVersion version,Perspective perspective,bool should_update_expected_server_connection_id_length,uint8_t * expected_server_connection_id_length,uint8_t * destination_connection_id_length,uint8_t * source_connection_id_length,std::string * detailed_error)105 bool QuicFramerPeer::ProcessAndValidateIetfConnectionIdLength(
106     QuicDataReader* reader, ParsedQuicVersion version, Perspective perspective,
107     bool should_update_expected_server_connection_id_length,
108     uint8_t* expected_server_connection_id_length,
109     uint8_t* destination_connection_id_length,
110     uint8_t* source_connection_id_length, std::string* detailed_error) {
111   return QuicFramer::ProcessAndValidateIetfConnectionIdLength(
112       reader, version, perspective,
113       should_update_expected_server_connection_id_length,
114       expected_server_connection_id_length, destination_connection_id_length,
115       source_connection_id_length, detailed_error);
116 }
117 
118 }  // namespace test
119 }  // namespace quic
120