@@ -63,6 +63,18 @@ set_encryption_secrets(SSL *ssl, enum ssl_encryption_level_t level, const uint8_
6363 qtls->update_key_materials_for_read (ats_level, read_secret, secret_len);
6464 qtls->update_key_materials_for_write (ats_level, write_secret, secret_len);
6565
66+ if (ats_level == QUICEncryptionLevel::ONE_RTT) {
67+ // FIXME Where should this be placed?
68+ const uint8_t *tp_buf;
69+ size_t tp_buf_len;
70+ SSL_get_peer_quic_transport_params (ssl, &tp_buf, &tp_buf_len);
71+ if (SSL_is_server (ssl)) {
72+ qtls->set_remote_transport_parameters (std::make_shared<QUICTransportParametersInClientHello>(tp_buf, tp_buf_len));
73+ } else {
74+ qtls->set_remote_transport_parameters (std::make_shared<QUICTransportParametersInEncryptedExtensions>(tp_buf, tp_buf_len));
75+ }
76+ }
77+
6678 return 1 ;
6779}
6880
@@ -151,9 +163,21 @@ QUICTLS::QUICTLS(QUICPacketProtectionKeyInfo &pp_key_info, SSL_CTX *ssl_ctx, Net
151163 }
152164}
153165
166+ void
167+ QUICTLS::set_local_transport_parameters (std::shared_ptr<const QUICTransportParameters> tp)
168+ {
169+ this ->_local_transport_parameters = tp;
170+
171+ uint8_t buf[UINT16_MAX];
172+ uint16_t len;
173+ this ->_local_transport_parameters ->store (buf, &len);
174+ SSL_set_quic_transport_params (this ->_ssl , buf, len);
175+ }
176+
154177int
155178QUICTLS::_process_post_handshake_messages (QUICHandshakeMsgs *out, const QUICHandshakeMsgs *in)
156179{
180+ this ->_pass_quic_data_to_ssl_impl (*in);
157181 return SSL_process_quic_post_handshake (this ->_ssl );
158182}
159183
0 commit comments