summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjsing <>2017-08-30 16:24:21 +0000
committerjsing <>2017-08-30 16:24:21 +0000
commitc57bcc8beb94950e39e39af004a5acc1feefe95e (patch)
tree2e9868ec4720db25f2bcedb389793fdebefae7a9
parent904c3ecb2202e57cd063e81eb9ea753ef753ea1b (diff)
downloadopenbsd-c57bcc8beb94950e39e39af004a5acc1feefe95e.tar.gz
openbsd-c57bcc8beb94950e39e39af004a5acc1feefe95e.tar.bz2
openbsd-c57bcc8beb94950e39e39af004a5acc1feefe95e.zip
Bring back the NPN related symbols.
Several pieces of software make use of these based on a conditional around OPENSSL_NPN_NEGOTIATED, rather than using the presence of the symbols, the non-existence of a OPENSSL_NO_NEXTPROTONEG define or even the existence of the TLS extension type. Unfortunately we cannot remove OPENSSL_NPN_NEGOTIATED since the API for ALPN was effectively botched and reuses two parts from the NPN implementation, rather than providing ALPN specific or generic versions.
-rw-r--r--src/lib/libssl/Symbols.list3
-rw-r--r--src/lib/libssl/ssl.h10
-rw-r--r--src/lib/libssl/ssl_lib.c26
3 files changed, 36 insertions, 3 deletions
diff --git a/src/lib/libssl/Symbols.list b/src/lib/libssl/Symbols.list
index 7b54776d55..e147ff873d 100644
--- a/src/lib/libssl/Symbols.list
+++ b/src/lib/libssl/Symbols.list
@@ -100,6 +100,8 @@ SSL_CTX_set_info_callback
100SSL_CTX_set_min_proto_version 100SSL_CTX_set_min_proto_version
101SSL_CTX_set_max_proto_version 101SSL_CTX_set_max_proto_version
102SSL_CTX_set_msg_callback 102SSL_CTX_set_msg_callback
103SSL_CTX_set_next_proto_select_cb
104SSL_CTX_set_next_protos_advertised_cb
103SSL_CTX_set_purpose 105SSL_CTX_set_purpose
104SSL_CTX_set_quiet_shutdown 106SSL_CTX_set_quiet_shutdown
105SSL_CTX_set_session_id_context 107SSL_CTX_set_session_id_context
@@ -159,6 +161,7 @@ SSL_dup_CA_list
159SSL_export_keying_material 161SSL_export_keying_material
160SSL_free 162SSL_free
161SSL_get0_alpn_selected 163SSL_get0_alpn_selected
164SSL_get0_next_proto_negotiated
162SSL_get1_session 165SSL_get1_session
163SSL_get_SSL_CTX 166SSL_get_SSL_CTX
164SSL_get_certificate 167SSL_get_certificate
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h
index 2f0b9df402..d431b175ad 100644
--- a/src/lib/libssl/ssl.h
+++ b/src/lib/libssl/ssl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl.h,v 1.133 2017/08/28 17:36:58 jsing Exp $ */ 1/* $OpenBSD: ssl.h,v 1.134 2017/08/30 16:24:21 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 *
@@ -752,11 +752,17 @@ void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx,
752void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, 752void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
753 int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, 753 int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie,
754 unsigned int cookie_len)); 754 unsigned int cookie_len));
755void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, int (*cb)(SSL *ssl,
756 const unsigned char **out, unsigned int *outlen, void *arg), void *arg);
757void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, int (*cb)(SSL *ssl,
758 unsigned char **out, unsigned char *outlen, const unsigned char *in,
759 unsigned int inlen, void *arg), void *arg);
755 760
756/* NPN support function used by ALPN */
757int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, 761int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
758 const unsigned char *in, unsigned int inlen, const unsigned char *client, 762 const unsigned char *in, unsigned int inlen, const unsigned char *client,
759 unsigned int client_len); 763 unsigned int client_len);
764void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
765 unsigned *len);
760 766
761#define OPENSSL_NPN_UNSUPPORTED 0 767#define OPENSSL_NPN_UNSUPPORTED 0
762#define OPENSSL_NPN_NEGOTIATED 1 768#define OPENSSL_NPN_NEGOTIATED 1
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c
index b365ebd496..471fd7009e 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.169 2017/08/28 17:36:58 jsing Exp $ */ 1/* $OpenBSD: ssl_lib.c,v 1.170 2017/08/30 16:24:21 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 *
@@ -1590,6 +1590,30 @@ found:
1590 return (status); 1590 return (status);
1591} 1591}
1592 1592
1593/* SSL_get0_next_proto_negotiated is deprecated. */
1594void
1595SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data,
1596 unsigned *len)
1597{
1598 *data = NULL;
1599 *len = 0;
1600}
1601
1602/* SSL_CTX_set_next_protos_advertised_cb is deprecated. */
1603void
1604SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *ctx, int (*cb) (SSL *ssl,
1605 const unsigned char **out, unsigned int *outlen, void *arg), void *arg)
1606{
1607}
1608
1609/* SSL_CTX_set_next_proto_select_cb is deprecated. */
1610void
1611SSL_CTX_set_next_proto_select_cb(SSL_CTX *ctx, int (*cb) (SSL *s,
1612 unsigned char **out, unsigned char *outlen, const unsigned char *in,
1613 unsigned int inlen, void *arg), void *arg)
1614{
1615}
1616
1593/* 1617/*
1594 * SSL_CTX_set_alpn_protos sets the ALPN protocol list to the specified 1618 * SSL_CTX_set_alpn_protos sets the ALPN protocol list to the specified
1595 * protocols, which must be in wire-format (i.e. a series of non-empty, 1619 * protocols, which must be in wire-format (i.e. a series of non-empty,