summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl.h
diff options
context:
space:
mode:
authorjsing <>2015-02-22 15:54:27 +0000
committerjsing <>2015-02-22 15:54:27 +0000
commit78601da9335579c01a88b356a8323117f14ec379 (patch)
tree38ba794e823ec25b4428f85632c6cdd2573912da /src/lib/libssl/ssl.h
parent9ca594bf596db20fe3bf5a6e78e6df39cf9e10cd (diff)
downloadopenbsd-78601da9335579c01a88b356a8323117f14ec379.tar.gz
openbsd-78601da9335579c01a88b356a8323117f14ec379.tar.bz2
openbsd-78601da9335579c01a88b356a8323117f14ec379.zip
Reluctantly add server-side support for TLS_FALLBACK_SCSV.
This allows for clients that willingly choose to perform a downgrade and attempt to establish a second connection at a lower protocol after the previous attempt unexpectedly failed, to be notified and have the second connection aborted, if the server does in fact support a higher protocol. TLS has perfectly good version negotiation and client-side fallback is dangerous. Despite this, in order to maintain maximum compatability with broken web servers, most mainstream browsers implement this. Furthermore, TLS_FALLBACK_SCSV only works if both the client and server support it and there is effectively no way to tell if this is the case, unless you control both ends. Unfortunately, various auditors and vulnerability scanners (including certain online assessment websites) consider the presence of a not yet standardised feature to be important for security, even if the clients do not perform client-side downgrade or the server only supports current TLS protocols. Diff is loosely based on OpenSSL with some inspiration from BoringSSL. Discussed with beck@ and miod@. ok bcook@
Diffstat (limited to 'src/lib/libssl/ssl.h')
-rw-r--r--src/lib/libssl/ssl.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h
index 626b967f15..73d007400f 100644
--- a/src/lib/libssl/ssl.h
+++ b/src/lib/libssl/ssl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl.h,v 1.82 2015/02/12 03:45:25 jsing Exp $ */ 1/* $OpenBSD: ssl.h,v 1.83 2015/02/22 15:54:27 jsing 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 *
@@ -1363,7 +1363,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
1363#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME 1363#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME
1364#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 1364#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
1365#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 1365#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
1366#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY /* fatal */ 1366#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY /* fatal */
1367#define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK /* fatal */
1367 1368
1368#define SSL_ERROR_NONE 0 1369#define SSL_ERROR_NONE 0
1369#define SSL_ERROR_SSL 1 1370#define SSL_ERROR_SSL 1
@@ -2174,6 +2175,7 @@ void ERR_load_SSL_strings(void);
2174#define SSL_R_HTTPS_PROXY_REQUEST 155 2175#define SSL_R_HTTPS_PROXY_REQUEST 155
2175#define SSL_R_HTTP_REQUEST 156 2176#define SSL_R_HTTP_REQUEST 156
2176#define SSL_R_ILLEGAL_PADDING 283 2177#define SSL_R_ILLEGAL_PADDING 283
2178#define SSL_R_INAPPROPRIATE_FALLBACK 373
2177#define SSL_R_INCONSISTENT_COMPRESSION 340 2179#define SSL_R_INCONSISTENT_COMPRESSION 340
2178#define SSL_R_INVALID_CHALLENGE_LENGTH 158 2180#define SSL_R_INVALID_CHALLENGE_LENGTH 158
2179#define SSL_R_INVALID_COMMAND 280 2181#define SSL_R_INVALID_COMMAND 280
@@ -2319,6 +2321,7 @@ void ERR_load_SSL_strings(void);
2319#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 2321#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021
2320#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 2322#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051
2321#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 2323#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060
2324#define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086
2322#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 2325#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071
2323#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 2326#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080
2324#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 2327#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100