1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #include "net/quic/mock_decrypter.h"
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Worker #include <limits>
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/quic/core/quic_utils.h"
10*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/quic/platform/api/quic_bug_tracker.h"
11*6777b538SAndroid Build Coastguard Worker
12*6777b538SAndroid Build Coastguard Worker using quic::DiversificationNonce;
13*6777b538SAndroid Build Coastguard Worker using quic::Perspective;
14*6777b538SAndroid Build Coastguard Worker using quic::QuicPacketNumber;
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Worker namespace net {
17*6777b538SAndroid Build Coastguard Worker
18*6777b538SAndroid Build Coastguard Worker namespace {
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard Worker const size_t kPaddingSize = 12;
21*6777b538SAndroid Build Coastguard Worker
22*6777b538SAndroid Build Coastguard Worker } // namespace
23*6777b538SAndroid Build Coastguard Worker
MockDecrypter(Perspective perspective)24*6777b538SAndroid Build Coastguard Worker MockDecrypter::MockDecrypter(Perspective perspective) {}
25*6777b538SAndroid Build Coastguard Worker
SetKey(std::string_view key)26*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::SetKey(std::string_view key) {
27*6777b538SAndroid Build Coastguard Worker return key.empty();
28*6777b538SAndroid Build Coastguard Worker }
29*6777b538SAndroid Build Coastguard Worker
SetNoncePrefix(std::string_view nonce_prefix)30*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::SetNoncePrefix(std::string_view nonce_prefix) {
31*6777b538SAndroid Build Coastguard Worker return nonce_prefix.empty();
32*6777b538SAndroid Build Coastguard Worker }
33*6777b538SAndroid Build Coastguard Worker
SetIV(std::string_view iv)34*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::SetIV(std::string_view iv) {
35*6777b538SAndroid Build Coastguard Worker return iv.empty();
36*6777b538SAndroid Build Coastguard Worker }
37*6777b538SAndroid Build Coastguard Worker
SetHeaderProtectionKey(std::string_view key)38*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::SetHeaderProtectionKey(std::string_view key) {
39*6777b538SAndroid Build Coastguard Worker return key.empty();
40*6777b538SAndroid Build Coastguard Worker }
41*6777b538SAndroid Build Coastguard Worker
GetKeySize() const42*6777b538SAndroid Build Coastguard Worker size_t MockDecrypter::GetKeySize() const {
43*6777b538SAndroid Build Coastguard Worker return 0;
44*6777b538SAndroid Build Coastguard Worker }
45*6777b538SAndroid Build Coastguard Worker
GetIVSize() const46*6777b538SAndroid Build Coastguard Worker size_t MockDecrypter::GetIVSize() const {
47*6777b538SAndroid Build Coastguard Worker return 0;
48*6777b538SAndroid Build Coastguard Worker }
49*6777b538SAndroid Build Coastguard Worker
GetNoncePrefixSize() const50*6777b538SAndroid Build Coastguard Worker size_t MockDecrypter::GetNoncePrefixSize() const {
51*6777b538SAndroid Build Coastguard Worker return 0;
52*6777b538SAndroid Build Coastguard Worker }
53*6777b538SAndroid Build Coastguard Worker
SetPreliminaryKey(std::string_view key)54*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::SetPreliminaryKey(std::string_view key) {
55*6777b538SAndroid Build Coastguard Worker LOG(DFATAL) << "Should not be called";
56*6777b538SAndroid Build Coastguard Worker return false;
57*6777b538SAndroid Build Coastguard Worker }
58*6777b538SAndroid Build Coastguard Worker
SetDiversificationNonce(const DiversificationNonce & nonce)59*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::SetDiversificationNonce(const DiversificationNonce& nonce) {
60*6777b538SAndroid Build Coastguard Worker LOG(DFATAL) << "Should not be called";
61*6777b538SAndroid Build Coastguard Worker return true;
62*6777b538SAndroid Build Coastguard Worker }
63*6777b538SAndroid Build Coastguard Worker
DecryptPacket(uint64_t,std::string_view associated_data,std::string_view ciphertext,char * output,size_t * output_length,size_t max_output_length)64*6777b538SAndroid Build Coastguard Worker bool MockDecrypter::DecryptPacket(uint64_t /*packet_number*/,
65*6777b538SAndroid Build Coastguard Worker std::string_view associated_data,
66*6777b538SAndroid Build Coastguard Worker std::string_view ciphertext,
67*6777b538SAndroid Build Coastguard Worker char* output,
68*6777b538SAndroid Build Coastguard Worker size_t* output_length,
69*6777b538SAndroid Build Coastguard Worker size_t max_output_length) {
70*6777b538SAndroid Build Coastguard Worker if (ciphertext.length() < kPaddingSize) {
71*6777b538SAndroid Build Coastguard Worker return false;
72*6777b538SAndroid Build Coastguard Worker }
73*6777b538SAndroid Build Coastguard Worker size_t plaintext_size = ciphertext.length() - kPaddingSize;
74*6777b538SAndroid Build Coastguard Worker if (plaintext_size > max_output_length) {
75*6777b538SAndroid Build Coastguard Worker return false;
76*6777b538SAndroid Build Coastguard Worker }
77*6777b538SAndroid Build Coastguard Worker
78*6777b538SAndroid Build Coastguard Worker memcpy(output, ciphertext.data(), plaintext_size);
79*6777b538SAndroid Build Coastguard Worker *output_length = plaintext_size;
80*6777b538SAndroid Build Coastguard Worker return true;
81*6777b538SAndroid Build Coastguard Worker }
82*6777b538SAndroid Build Coastguard Worker
GenerateHeaderProtectionMask(quic::QuicDataReader * sample_reader)83*6777b538SAndroid Build Coastguard Worker std::string MockDecrypter::GenerateHeaderProtectionMask(
84*6777b538SAndroid Build Coastguard Worker quic::QuicDataReader* sample_reader) {
85*6777b538SAndroid Build Coastguard Worker return std::string(5, 0);
86*6777b538SAndroid Build Coastguard Worker }
87*6777b538SAndroid Build Coastguard Worker
cipher_id() const88*6777b538SAndroid Build Coastguard Worker uint32_t MockDecrypter::cipher_id() const {
89*6777b538SAndroid Build Coastguard Worker return 0;
90*6777b538SAndroid Build Coastguard Worker }
91*6777b538SAndroid Build Coastguard Worker
GetIntegrityLimit() const92*6777b538SAndroid Build Coastguard Worker quic::QuicPacketCount MockDecrypter::GetIntegrityLimit() const {
93*6777b538SAndroid Build Coastguard Worker return std::numeric_limits<quic::QuicPacketCount>::max();
94*6777b538SAndroid Build Coastguard Worker }
95*6777b538SAndroid Build Coastguard Worker
GetKey() const96*6777b538SAndroid Build Coastguard Worker std::string_view MockDecrypter::GetKey() const {
97*6777b538SAndroid Build Coastguard Worker return std::string_view();
98*6777b538SAndroid Build Coastguard Worker }
99*6777b538SAndroid Build Coastguard Worker
GetNoncePrefix() const100*6777b538SAndroid Build Coastguard Worker std::string_view MockDecrypter::GetNoncePrefix() const {
101*6777b538SAndroid Build Coastguard Worker return std::string_view();
102*6777b538SAndroid Build Coastguard Worker }
103*6777b538SAndroid Build Coastguard Worker
104*6777b538SAndroid Build Coastguard Worker } // namespace net
105