xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/quic_crypto_server_stream_base.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2012 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/core/quic_crypto_server_stream_base.h"
6 
7 #include <memory>
8 #include <string>
9 #include <utility>
10 
11 #include "quiche/quic/core/crypto/crypto_protocol.h"
12 #include "quiche/quic/core/crypto/crypto_utils.h"
13 #include "quiche/quic/core/crypto/quic_crypto_server_config.h"
14 #include "quiche/quic/core/crypto/quic_random.h"
15 #include "quiche/quic/core/proto/cached_network_parameters_proto.h"
16 #include "quiche/quic/core/quic_config.h"
17 #include "quiche/quic/core/quic_crypto_server_stream.h"
18 #include "quiche/quic/core/quic_packets.h"
19 #include "quiche/quic/core/quic_session.h"
20 #include "quiche/quic/core/tls_server_handshaker.h"
21 #include "quiche/quic/platform/api/quic_flag_utils.h"
22 #include "quiche/quic/platform/api/quic_flags.h"
23 #include "quiche/quic/platform/api/quic_logging.h"
24 
25 namespace quic {
26 
QuicCryptoServerStreamBase(QuicSession * session)27 QuicCryptoServerStreamBase::QuicCryptoServerStreamBase(QuicSession* session)
28     : QuicCryptoStream(session) {}
29 
CreateCryptoServerStream(const QuicCryptoServerConfig * crypto_config,QuicCompressedCertsCache * compressed_certs_cache,QuicSession * session,QuicCryptoServerStreamBase::Helper * helper)30 std::unique_ptr<QuicCryptoServerStreamBase> CreateCryptoServerStream(
31     const QuicCryptoServerConfig* crypto_config,
32     QuicCompressedCertsCache* compressed_certs_cache, QuicSession* session,
33     QuicCryptoServerStreamBase::Helper* helper) {
34   switch (session->connection()->version().handshake_protocol) {
35     case PROTOCOL_QUIC_CRYPTO:
36       return std::unique_ptr<QuicCryptoServerStream>(new QuicCryptoServerStream(
37           crypto_config, compressed_certs_cache, session, helper));
38     case PROTOCOL_TLS1_3:
39       return std::unique_ptr<TlsServerHandshaker>(
40           new TlsServerHandshaker(session, crypto_config));
41     case PROTOCOL_UNSUPPORTED:
42       break;
43   }
44   QUIC_BUG(quic_bug_10492_1)
45       << "Unknown handshake protocol: "
46       << static_cast<int>(session->connection()->version().handshake_protocol);
47   return nullptr;
48 }
49 
50 }  // namespace quic
51