#include "quiche/quic/core/crypto/crypto_framer.h"
#include <memory>
#include <string>
#include <utility>
#include "absl/base/attributes.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/string_view.h"
#include "quiche/quic/core/crypto/crypto_protocol.h"
#include "quiche/quic/core/quic_data_reader.h"
#include "quiche/quic/core/quic_data_writer.h"
#include "quiche/quic/core/quic_packets.h"
#include "quiche/quic/platform/api/quic_logging.h"
#include "quiche/common/quiche_endian.h"
namespace quic {
namespace {
const size_t kQuicTagSize = …;
const size_t kCryptoEndOffsetSize = …;
const size_t kNumEntriesSize = …;
class OneShotVisitor : public CryptoFramerVisitorInterface { … };
}
CryptoFramer::CryptoFramer()
: … { … }
CryptoFramer::~CryptoFramer() { … }
std::unique_ptr<CryptoHandshakeMessage> CryptoFramer::ParseMessage(
absl::string_view in) { … }
QuicErrorCode CryptoFramer::error() const { … }
const std::string& CryptoFramer::error_detail() const { … }
bool CryptoFramer::ProcessInput(absl::string_view input,
EncryptionLevel ) { … }
bool CryptoFramer::ProcessInput(absl::string_view input) { … }
size_t CryptoFramer::InputBytesRemaining() const { … }
bool CryptoFramer::HasTag(QuicTag tag) const { … }
void CryptoFramer::ForceHandshake() { … }
std::unique_ptr<QuicData> CryptoFramer::ConstructHandshakeMessage(
const CryptoHandshakeMessage& message) { … }
void CryptoFramer::Clear() { … }
QuicErrorCode CryptoFramer::Process(absl::string_view input) { … }
bool CryptoFramer::WritePadTag(QuicDataWriter* writer, size_t pad_length,
uint32_t* end_offset) { … }
}