blob: 18c02248317f92a7e4bb1f68c512fe61e2a3580c [file] [log] [blame]
Ryan Hamilton56b10c5d2018-05-11 13:40:161// Copyright 2017 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
Ryan Hamilton7582d2652018-08-01 22:35:325#include "net/quic/mock_encrypter.h"
Ryan Hamilton56b10c5d2018-05-11 13:40:166
Victor Vasiliev6bb59d22019-03-08 21:34:517#include "net/third_party/quiche/src/quic/core/quic_data_writer.h"
8#include "net/third_party/quiche/src/quic/core/quic_utils.h"
Ryan Hamilton56b10c5d2018-05-11 13:40:169
Ryan Hamilton9835e662018-08-02 05:36:2710using quic::DiversificationNonce;
11using quic::Perspective;
12using quic::QuicPacketNumber;
Zhongyi Shid1c00fc42019-12-14 06:05:0913using quiche::QuicheStringPiece;
Ryan Hamilton9835e662018-08-02 05:36:2714
15namespace net {
Ryan Hamilton56b10c5d2018-05-11 13:40:1616
Nick Harper7738a402019-05-22 23:59:4617namespace {
18
19const size_t kPaddingSize = 12;
20
21} // namespace
22
Ryan Hamilton56b10c5d2018-05-11 13:40:1623MockEncrypter::MockEncrypter(Perspective perspective) {}
24
Zhongyi Shid1c00fc42019-12-14 06:05:0925bool MockEncrypter::SetKey(quiche::QuicheStringPiece key) {
Ryan Hamilton56b10c5d2018-05-11 13:40:1626 return key.empty();
27}
28
Zhongyi Shid1c00fc42019-12-14 06:05:0929bool MockEncrypter::SetNoncePrefix(quiche::QuicheStringPiece nonce_prefix) {
Ryan Hamilton56b10c5d2018-05-11 13:40:1630 return nonce_prefix.empty();
31}
32
Zhongyi Shid1c00fc42019-12-14 06:05:0933bool MockEncrypter::SetIV(quiche::QuicheStringPiece iv) {
Ryan Hamilton56b10c5d2018-05-11 13:40:1634 return iv.empty();
35}
36
Victor Vasilieva0001fc2019-02-19 21:13:3137bool MockEncrypter::EncryptPacket(uint64_t /*packet_number*/,
Zhongyi Shid1c00fc42019-12-14 06:05:0938 quiche::QuicheStringPiece associated_data,
39 quiche::QuicheStringPiece plaintext,
Ryan Hamilton56b10c5d2018-05-11 13:40:1640 char* output,
41 size_t* output_length,
42 size_t max_output_length) {
Nick Harper7738a402019-05-22 23:59:4643 size_t ciphertext_size = plaintext.size() + kPaddingSize;
44 if (max_output_length < ciphertext_size) {
Ryan Hamilton56b10c5d2018-05-11 13:40:1645 return false;
46 }
Nick Harper7738a402019-05-22 23:59:4647 memcpy(output, plaintext.data(), ciphertext_size);
48 *output_length = ciphertext_size;
Ryan Hamilton56b10c5d2018-05-11 13:40:1649 return true;
50}
51
Zhongyi Shid1c00fc42019-12-14 06:05:0952bool MockEncrypter::SetHeaderProtectionKey(quiche::QuicheStringPiece key) {
Ryan Hamilton96fb5f42019-03-21 16:24:1953 return key.empty();
54}
55
56std::string MockEncrypter::GenerateHeaderProtectionMask(
Zhongyi Shid1c00fc42019-12-14 06:05:0957 quiche::QuicheStringPiece sample) {
Ryan Hamilton96fb5f42019-03-21 16:24:1958 return std::string(5, 0);
59}
60
Ryan Hamilton56b10c5d2018-05-11 13:40:1661size_t MockEncrypter::GetKeySize() const {
62 return 0;
63}
64
65size_t MockEncrypter::GetNoncePrefixSize() const {
66 return 0;
67}
68
69size_t MockEncrypter::GetIVSize() const {
70 return 0;
71}
72
73size_t MockEncrypter::GetMaxPlaintextSize(size_t ciphertext_size) const {
Nick Harper7738a402019-05-22 23:59:4674 return ciphertext_size - kPaddingSize;
Ryan Hamilton56b10c5d2018-05-11 13:40:1675}
76
77size_t MockEncrypter::GetCiphertextSize(size_t plaintext_size) const {
Nick Harper7738a402019-05-22 23:59:4678 return plaintext_size + kPaddingSize;
Ryan Hamilton56b10c5d2018-05-11 13:40:1679}
80
Zhongyi Shid1c00fc42019-12-14 06:05:0981quiche::QuicheStringPiece MockEncrypter::GetKey() const {
82 return quiche::QuicheStringPiece();
Ryan Hamilton56b10c5d2018-05-11 13:40:1683}
84
Zhongyi Shid1c00fc42019-12-14 06:05:0985quiche::QuicheStringPiece MockEncrypter::GetNoncePrefix() const {
86 return quiche::QuicheStringPiece();
Ryan Hamilton56b10c5d2018-05-11 13:40:1687}
88
Ryan Hamilton9835e662018-08-02 05:36:2789} // namespace net