diff options
author | beck <> | 2022-06-29 17:39:21 +0000 |
---|---|---|
committer | beck <> | 2022-06-29 17:39:21 +0000 |
commit | fc8a9f3799769566fe4b424c43a81a1a71f91328 (patch) | |
tree | 3406a8350556d9a6c42a2677a30e2dabf013942c /src/lib/libssl/ssl_lib.c | |
parent | 6f4618c6c03ccd1d0f1b55dd8ff05af4a05abe78 (diff) | |
download | openbsd-fc8a9f3799769566fe4b424c43a81a1a71f91328.tar.gz openbsd-fc8a9f3799769566fe4b424c43a81a1a71f91328.tar.bz2 openbsd-fc8a9f3799769566fe4b424c43a81a1a71f91328.zip |
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@
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
-rw-r--r-- | src/lib/libssl/ssl_lib.c | 30 |
1 files changed, 29 insertions, 1 deletions
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 @@ | |||
1 | /* $OpenBSD: ssl_lib.c,v 1.292 2022/06/29 08:39:08 tb Exp $ */ | 1 | /* $OpenBSD: ssl_lib.c,v 1.293 2022/06/29 17:39:20 beck Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -573,6 +573,8 @@ SSL_free(SSL *s) | |||
573 | 573 | ||
574 | free(s->internal->alpn_client_proto_list); | 574 | free(s->internal->alpn_client_proto_list); |
575 | 575 | ||
576 | free(s->internal->quic_transport_params); | ||
577 | |||
576 | #ifndef OPENSSL_NO_SRTP | 578 | #ifndef OPENSSL_NO_SRTP |
577 | sk_SRTP_PROTECTION_PROFILE_free(s->internal->srtp_profiles); | 579 | sk_SRTP_PROTECTION_PROFILE_free(s->internal->srtp_profiles); |
578 | #endif | 580 | #endif |
@@ -3312,3 +3314,29 @@ OBJ_bsearch_ssl_cipher_id(SSL_CIPHER *key, SSL_CIPHER const *base, int num) | |||
3312 | return (SSL_CIPHER *)OBJ_bsearch_(key, base, num, sizeof(SSL_CIPHER), | 3314 | return (SSL_CIPHER *)OBJ_bsearch_(key, base, num, sizeof(SSL_CIPHER), |
3313 | ssl_cipher_id_cmp_BSEARCH_CMP_FN); | 3315 | ssl_cipher_id_cmp_BSEARCH_CMP_FN); |
3314 | } | 3316 | } |
3317 | |||
3318 | int | ||
3319 | SSL_set_quic_transport_params(SSL *ssl, const uint8_t *params, | ||
3320 | size_t params_len) | ||
3321 | { | ||
3322 | freezero(ssl->internal->quic_transport_params, | ||
3323 | ssl->internal->quic_transport_params_len); | ||
3324 | ssl->internal->quic_transport_params = NULL; | ||
3325 | ssl->internal->quic_transport_params_len = 0; | ||
3326 | |||
3327 | if ((ssl->internal->quic_transport_params = malloc(params_len)) == NULL) | ||
3328 | return 0; | ||
3329 | |||
3330 | memcpy(ssl->internal->quic_transport_params, params, params_len); | ||
3331 | ssl->internal->quic_transport_params_len = params_len; | ||
3332 | |||
3333 | return 1; | ||
3334 | } | ||
3335 | |||
3336 | void | ||
3337 | SSL_get_peer_quic_transport_params(const SSL *ssl, const uint8_t **out_params, | ||
3338 | size_t *out_params_len) | ||
3339 | { | ||
3340 | *out_params = ssl->s3->peer_quic_transport_params; | ||
3341 | *out_params_len = ssl->s3->peer_quic_transport_params_len; | ||
3342 | } | ||