summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_tlsext.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_tlsext.c')
-rw-r--r--src/lib/libssl/ssl_tlsext.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c
index 814eb7c5cf..1ec8ac00ef 100644
--- a/src/lib/libssl/ssl_tlsext.c
+++ b/src/lib/libssl/ssl_tlsext.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_tlsext.c,v 1.68 2020/05/13 17:55:34 jsing Exp $ */ 1/* $OpenBSD: ssl_tlsext.c,v 1.69 2020/05/19 01:30:34 beck Exp $ */
2/* 2/*
3 * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org>
4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> 4 * Copyright (c) 2017 Doug Hogan <doug@openbsd.org>
@@ -909,12 +909,34 @@ tlsext_ocsp_server_parse(SSL *s, CBS *cbs, int *alert)
909int 909int
910tlsext_ocsp_server_needs(SSL *s) 910tlsext_ocsp_server_needs(SSL *s)
911{ 911{
912 if (s->version >= TLS1_3_VERSION &&
913 s->ctx->internal->tlsext_status_cb != NULL) {
914 s->internal->tlsext_status_expected = 0;
915 if (s->ctx->internal->tlsext_status_cb(s,
916 s->ctx->internal->tlsext_status_arg) == SSL_TLSEXT_ERR_OK &&
917 s->internal->tlsext_ocsp_resp_len > 0)
918 s->internal->tlsext_status_expected = 1;
919 }
912 return s->internal->tlsext_status_expected; 920 return s->internal->tlsext_status_expected;
913} 921}
914 922
915int 923int
916tlsext_ocsp_server_build(SSL *s, CBB *cbb) 924tlsext_ocsp_server_build(SSL *s, CBB *cbb)
917{ 925{
926 CBB ocsp_response;
927
928 if (s->version >= TLS1_3_VERSION) {
929 if (!CBB_add_u8(cbb, TLSEXT_STATUSTYPE_ocsp))
930 return 0;
931 if (!CBB_add_u24_length_prefixed(cbb, &ocsp_response))
932 return 0;
933 if (!CBB_add_bytes(&ocsp_response,
934 s->internal->tlsext_ocsp_resp,
935 s->internal->tlsext_ocsp_resp_len))
936 return 0;
937 if (!CBB_flush(cbb))
938 return 0;
939 }
918 return 1; 940 return 1;
919} 941}
920 942