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