xref: /aosp_15_r20/external/cronet/net/quic/mock_encrypter.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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 #ifndef NET_QUIC_MOCK_ENCRYPTER_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_QUIC_MOCK_ENCRYPTER_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include <cstddef>
9*6777b538SAndroid Build Coastguard Worker #include <limits>
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker #include "base/compiler_specific.h"
12*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
13*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/quic/core/crypto/quic_encrypter.h"
14*6777b538SAndroid Build Coastguard Worker #include "net/third_party/quiche/src/quiche/quic/core/quic_types.h"
15*6777b538SAndroid Build Coastguard Worker 
16*6777b538SAndroid Build Coastguard Worker namespace net {
17*6777b538SAndroid Build Coastguard Worker 
18*6777b538SAndroid Build Coastguard Worker // A MockEncrypter is a QuicEncrypter that returns this plaintext followed by 12
19*6777b538SAndroid Build Coastguard Worker // bytes of zeroes. No encryption or MAC is applied. This is used to allow
20*6777b538SAndroid Build Coastguard Worker // fuzzing to mutate plaintext packets.
21*6777b538SAndroid Build Coastguard Worker class MockEncrypter : public quic::QuicEncrypter {
22*6777b538SAndroid Build Coastguard Worker  public:
23*6777b538SAndroid Build Coastguard Worker   explicit MockEncrypter(quic::Perspective perspective);
24*6777b538SAndroid Build Coastguard Worker 
25*6777b538SAndroid Build Coastguard Worker   MockEncrypter(const MockEncrypter&) = delete;
26*6777b538SAndroid Build Coastguard Worker   MockEncrypter& operator=(const MockEncrypter&) = delete;
27*6777b538SAndroid Build Coastguard Worker 
28*6777b538SAndroid Build Coastguard Worker   ~MockEncrypter() override = default;
29*6777b538SAndroid Build Coastguard Worker 
30*6777b538SAndroid Build Coastguard Worker   // QuicEncrypter implementation
31*6777b538SAndroid Build Coastguard Worker   bool SetKey(std::string_view key) override;
32*6777b538SAndroid Build Coastguard Worker   bool SetNoncePrefix(std::string_view nonce_prefix) override;
33*6777b538SAndroid Build Coastguard Worker   bool SetHeaderProtectionKey(std::string_view key) override;
34*6777b538SAndroid Build Coastguard Worker   bool SetIV(std::string_view iv) override;
35*6777b538SAndroid Build Coastguard Worker   bool EncryptPacket(uint64_t packet_number,
36*6777b538SAndroid Build Coastguard Worker                      std::string_view associated_data,
37*6777b538SAndroid Build Coastguard Worker                      std::string_view plaintext,
38*6777b538SAndroid Build Coastguard Worker                      char* output,
39*6777b538SAndroid Build Coastguard Worker                      size_t* output_length,
40*6777b538SAndroid Build Coastguard Worker                      size_t max_output_length) override;
41*6777b538SAndroid Build Coastguard Worker   std::string GenerateHeaderProtectionMask(std::string_view sample) override;
42*6777b538SAndroid Build Coastguard Worker   size_t GetKeySize() const override;
43*6777b538SAndroid Build Coastguard Worker   size_t GetNoncePrefixSize() const override;
44*6777b538SAndroid Build Coastguard Worker   size_t GetIVSize() const override;
45*6777b538SAndroid Build Coastguard Worker   size_t GetMaxPlaintextSize(size_t ciphertext_size) const override;
46*6777b538SAndroid Build Coastguard Worker   size_t GetCiphertextSize(size_t plaintext_size) const override;
47*6777b538SAndroid Build Coastguard Worker   quic::QuicPacketCount GetConfidentialityLimit() const override;
48*6777b538SAndroid Build Coastguard Worker   std::string_view GetKey() const override;
49*6777b538SAndroid Build Coastguard Worker   std::string_view GetNoncePrefix() const override;
50*6777b538SAndroid Build Coastguard Worker };
51*6777b538SAndroid Build Coastguard Worker 
52*6777b538SAndroid Build Coastguard Worker }  // namespace net
53*6777b538SAndroid Build Coastguard Worker 
54*6777b538SAndroid Build Coastguard Worker #endif  // NET_QUIC_MOCK_ENCRYPTER_H_
55