xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/test_tools/quic_framer_peer.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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
SetLastWrittenPacketNumberLength(QuicFramer * framer,size_t packet_number_length)28 void QuicFramerPeer::SetLastWrittenPacketNumberLength(
29     QuicFramer* framer, size_t packet_number_length) {
30   framer->last_written_packet_number_length_ = packet_number_length;
31 }
32 
33 // static
SetLargestPacketNumber(QuicFramer * framer,QuicPacketNumber packet_number)34 void QuicFramerPeer::SetLargestPacketNumber(QuicFramer* framer,
35                                             QuicPacketNumber packet_number) {
36   framer->largest_packet_number_ = packet_number;
37 }
38 
39 // static
SetPerspective(QuicFramer * framer,Perspective perspective)40 void QuicFramerPeer::SetPerspective(QuicFramer* framer,
41                                     Perspective perspective) {
42   framer->perspective_ = perspective;
43 }
44 
45 // static
SwapCrypters(QuicFramer * framer1,QuicFramer * framer2)46 void QuicFramerPeer::SwapCrypters(QuicFramer* framer1, QuicFramer* framer2) {
47   for (int i = ENCRYPTION_INITIAL; i < NUM_ENCRYPTION_LEVELS; i++) {
48     framer1->encrypter_[i].swap(framer2->encrypter_[i]);
49     framer1->decrypter_[i].swap(framer2->decrypter_[i]);
50   }
51 
52   EncryptionLevel framer2_level = framer2->decrypter_level_;
53   framer2->decrypter_level_ = framer1->decrypter_level_;
54   framer1->decrypter_level_ = framer2_level;
55   framer2_level = framer2->alternative_decrypter_level_;
56   framer2->alternative_decrypter_level_ = framer1->alternative_decrypter_level_;
57   framer1->alternative_decrypter_level_ = framer2_level;
58 
59   const bool framer2_latch = framer2->alternative_decrypter_latch_;
60   framer2->alternative_decrypter_latch_ = framer1->alternative_decrypter_latch_;
61   framer1->alternative_decrypter_latch_ = framer2_latch;
62 }
63 
64 // static
GetEncrypter(QuicFramer * framer,EncryptionLevel level)65 QuicEncrypter* QuicFramerPeer::GetEncrypter(QuicFramer* framer,
66                                             EncryptionLevel level) {
67   return framer->encrypter_[level].get();
68 }
69 
70 // static
GetDecrypter(QuicFramer * framer,EncryptionLevel level)71 QuicDecrypter* QuicFramerPeer::GetDecrypter(QuicFramer* framer,
72                                             EncryptionLevel level) {
73   return framer->decrypter_[level].get();
74 }
75 
76 // static
SetFirstSendingPacketNumber(QuicFramer * framer,uint64_t packet_number)77 void QuicFramerPeer::SetFirstSendingPacketNumber(QuicFramer* framer,
78                                                  uint64_t packet_number) {
79   *const_cast<QuicPacketNumber*>(&framer->first_sending_packet_number_) =
80       QuicPacketNumber(packet_number);
81 }
82 
83 // static
SetExpectedServerConnectionIDLength(QuicFramer * framer,uint8_t expected_server_connection_id_length)84 void QuicFramerPeer::SetExpectedServerConnectionIDLength(
85     QuicFramer* framer, uint8_t expected_server_connection_id_length) {
86   *const_cast<uint8_t*>(&framer->expected_server_connection_id_length_) =
87       expected_server_connection_id_length;
88 }
89 
90 // static
GetLargestDecryptedPacketNumber(QuicFramer * framer,PacketNumberSpace packet_number_space)91 QuicPacketNumber QuicFramerPeer::GetLargestDecryptedPacketNumber(
92     QuicFramer* framer, PacketNumberSpace packet_number_space) {
93   return framer->largest_decrypted_packet_numbers_[packet_number_space];
94 }
95 
96 // 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)97 bool QuicFramerPeer::ProcessAndValidateIetfConnectionIdLength(
98     QuicDataReader* reader, ParsedQuicVersion version, Perspective perspective,
99     bool should_update_expected_server_connection_id_length,
100     uint8_t* expected_server_connection_id_length,
101     uint8_t* destination_connection_id_length,
102     uint8_t* source_connection_id_length, std::string* detailed_error) {
103   return QuicFramer::ProcessAndValidateIetfConnectionIdLength(
104       reader, version, perspective,
105       should_update_expected_server_connection_id_length,
106       expected_server_connection_id_length, destination_connection_id_length,
107       source_connection_id_length, detailed_error);
108 }
109 
110 }  // namespace test
111 }  // namespace quic
112