From fc8a9f3799769566fe4b424c43a81a1a71f91328 Mon Sep 17 00:00:00 2001 From: beck <> Date: Wed, 29 Jun 2022 17:39:21 +0000 Subject: Add support for sending QUIC transport parameters This is the start of adding the boringssl API for QUIC support, and the TLS extensions necessary to send and receive QUIC transport data. Inspired by boringssl's https://boringssl-review.googlesource.com/24464 ok jsing@ tb@ --- src/lib/libssl/ssl_lib.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/lib/libssl/ssl_lib.c') diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index be01f771e0..b959d3428f 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ssl_lib.c,v 1.292 2022/06/29 08:39:08 tb Exp $ */ +/* $OpenBSD: ssl_lib.c,v 1.293 2022/06/29 17:39:20 beck Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -573,6 +573,8 @@ SSL_free(SSL *s) free(s->internal->alpn_client_proto_list); + free(s->internal->quic_transport_params); + #ifndef OPENSSL_NO_SRTP sk_SRTP_PROTECTION_PROFILE_free(s->internal->srtp_profiles); #endif @@ -3312,3 +3314,29 @@ OBJ_bsearch_ssl_cipher_id(SSL_CIPHER *key, SSL_CIPHER const *base, int num) return (SSL_CIPHER *)OBJ_bsearch_(key, base, num, sizeof(SSL_CIPHER), ssl_cipher_id_cmp_BSEARCH_CMP_FN); } + +int +SSL_set_quic_transport_params(SSL *ssl, const uint8_t *params, + size_t params_len) +{ + freezero(ssl->internal->quic_transport_params, + ssl->internal->quic_transport_params_len); + ssl->internal->quic_transport_params = NULL; + ssl->internal->quic_transport_params_len = 0; + + if ((ssl->internal->quic_transport_params = malloc(params_len)) == NULL) + return 0; + + memcpy(ssl->internal->quic_transport_params, params, params_len); + ssl->internal->quic_transport_params_len = params_len; + + return 1; +} + +void +SSL_get_peer_quic_transport_params(const SSL *ssl, const uint8_t **out_params, + size_t *out_params_len) +{ + *out_params = ssl->s3->peer_quic_transport_params; + *out_params_len = ssl->s3->peer_quic_transport_params_len; +} -- cgit v1.2.3-55-g6feb