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