diff options
author | tb <> | 2021-09-10 09:25:29 +0000 |
---|---|---|
committer | tb <> | 2021-09-10 09:25:29 +0000 |
commit | 47a94cad06ffc8bf1c64c7870f0dc905ed8485e4 (patch) | |
tree | 2fcdf6ff9ae24aab6ae8fc69b1f46e80b647dd92 /src/lib/libssl/ssl.h | |
parent | d17eb2a4cbcb7c76bb5dd38f9d1c26044d64118f (diff) | |
download | openbsd-47a94cad06ffc8bf1c64c7870f0dc905ed8485e4.tar.gz openbsd-47a94cad06ffc8bf1c64c7870f0dc905ed8485e4.tar.bz2 openbsd-47a94cad06ffc8bf1c64c7870f0dc905ed8485e4.zip |
Do not ignore SSL_TLSEXT_ERR_FATAL from the ALPN callback
As reported by Jeremy Harris, we inherited a strange behavior from
OpenSSL, in that we ignore the SSL_TLSEXT_ERR_FATAL return from the
ALPN callback. RFC 7301, 3.2 states: 'In the event that the server
supports no protocols that the client advertises, then the server
SHALL respond with a fatal "no_application_protocol" alert.'
Honor this requirement and succeed only on SSL_TLSEXT_ERR_{OK,NOACK}
which is the current behavior of OpenSSL. The documentation change
is taken from OpenSSL 1.1.1 as well.
As pointed out by jsing, there is more to be fixed here:
- ensure that the same protocol is selected on session resumption
- should the callback be called even if no ALPN extension was sent?
- ensure for TLSv1.2 and earlier that the SNI has already been processed
ok beck jsing
Diffstat (limited to 'src/lib/libssl/ssl.h')
-rw-r--r-- | src/lib/libssl/ssl.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index 7da3658d3f..fba9ea243f 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl.h,v 1.201 2021/09/10 08:59:56 tb Exp $ */ | 1 | /* $OpenBSD: ssl.h,v 1.202 2021/09/10 09:25:29 tb 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 | * |
@@ -1995,6 +1995,9 @@ void ERR_load_SSL_strings(void); | |||
1995 | #define SSL_R_MISSING_VERIFY_MESSAGE 174 | 1995 | #define SSL_R_MISSING_VERIFY_MESSAGE 174 |
1996 | #define SSL_R_MULTIPLE_SGC_RESTARTS 346 | 1996 | #define SSL_R_MULTIPLE_SGC_RESTARTS 346 |
1997 | #define SSL_R_NON_SSLV2_INITIAL_PACKET 175 | 1997 | #define SSL_R_NON_SSLV2_INITIAL_PACKET 175 |
1998 | #if defined(LIBRESSL_INTERNAL) | ||
1999 | #define SSL_R_NO_APPLICATION_PROTOCOL 235 | ||
2000 | #endif | ||
1998 | #define SSL_R_NO_CERTIFICATES_RETURNED 176 | 2001 | #define SSL_R_NO_CERTIFICATES_RETURNED 176 |
1999 | #define SSL_R_NO_CERTIFICATE_ASSIGNED 177 | 2002 | #define SSL_R_NO_CERTIFICATE_ASSIGNED 177 |
2000 | #define SSL_R_NO_CERTIFICATE_RETURNED 178 | 2003 | #define SSL_R_NO_CERTIFICATE_RETURNED 178 |