From e2726ecaa613e108fbf44ded4bfb095304c14950 Mon Sep 17 00:00:00 2001 From: Bernd Kuhls Date: Sat, 9 Feb 2019 17:19:53 +0100 Subject: [PATCH] package/libopenssl: add runtime fixes for tor For details see https://bugs.archlinux.org/task/61623 Signed-off-by: Bernd Kuhls Signed-off-by: Peter Korsgaard --- ...uce-stack-usage-in-tls13_hkdf_expand.patch | 62 +++ ...me-SSL_export_keying_material-issues.patch | 426 ++++++++++++++++++ 2 files changed, 488 insertions(+) create mode 100644 package/libopenssl/0005-Revert-Reduce-stack-usage-in-tls13_hkdf_expand.patch create mode 100644 package/libopenssl/0006-Fix-some-SSL_export_keying_material-issues.patch diff --git a/package/libopenssl/0005-Revert-Reduce-stack-usage-in-tls13_hkdf_expand.patch b/package/libopenssl/0005-Revert-Reduce-stack-usage-in-tls13_hkdf_expand.patch new file mode 100644 index 0000000000..104fa476a2 --- /dev/null +++ b/package/libopenssl/0005-Revert-Reduce-stack-usage-in-tls13_hkdf_expand.patch @@ -0,0 +1,62 @@ +From 56e0f123dc17cb99f50efbae4bbbab77f360818f Mon Sep 17 00:00:00 2001 +From: Matt Caswell +Date: Mon, 3 Dec 2018 18:14:57 +0000 +Subject: [PATCH] Revert "Reduce stack usage in tls13_hkdf_expand" + +This reverts commit ec0c5f5693e39c5a013f81e6dd9dfd09ec65162d. + +SSL_export_keying_material() may use longer label lengths. + +Fixes #7712 + +Reviewed-by: Tim Hudson +(Merged from https://github.com/openssl/openssl/pull/7755) + +(cherry picked from commit ed371b8cbac0d0349667558c061c1ae380cf75eb) +Signed-off-by: Bernd Kuhls +--- + ssl/tls13_enc.c | 16 ++++------------ + 1 file changed, 4 insertions(+), 12 deletions(-) + +diff --git a/ssl/tls13_enc.c b/ssl/tls13_enc.c +index b6825d20c2..f7ab0fa470 100644 +--- a/ssl/tls13_enc.c ++++ b/ssl/tls13_enc.c +@@ -13,14 +13,7 @@ + #include + #include + +-/* +- * RFC 8446, 7.1 Key Schedule, says: +- * Note: With common hash functions, any label longer than 12 characters +- * requires an additional iteration of the hash function to compute. +- * The labels in this specification have all been chosen to fit within +- * this limit. +- */ +-#define TLS13_MAX_LABEL_LEN 12 ++#define TLS13_MAX_LABEL_LEN 246 + + /* Always filled with zeros */ + static const unsigned char default_zeros[EVP_MAX_MD_SIZE]; +@@ -36,15 +29,14 @@ int tls13_hkdf_expand(SSL *s, const EVP_MD *md, const unsigned char *secret, + const unsigned char *data, size_t datalen, + unsigned char *out, size_t outlen) + { +- static const unsigned char label_prefix[] = "tls13 "; ++ const unsigned char label_prefix[] = "tls13 "; + EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL); + int ret; + size_t hkdflabellen; + size_t hashlen; + /* +- * 2 bytes for length of derived secret + 1 byte for length of combined +- * prefix and label + bytes for the label itself + 1 byte length of hash +- * + bytes for the hash itself ++ * 2 bytes for length of whole HkdfLabel + 1 byte for length of combined ++ * prefix and label + bytes for the label itself + bytes for the hash + */ + unsigned char hkdflabel[sizeof(uint16_t) + sizeof(uint8_t) + + + sizeof(label_prefix) + TLS13_MAX_LABEL_LEN +-- +2.20.1 + diff --git a/package/libopenssl/0006-Fix-some-SSL_export_keying_material-issues.patch b/package/libopenssl/0006-Fix-some-SSL_export_keying_material-issues.patch new file mode 100644 index 0000000000..242ec7a8cd --- /dev/null +++ b/package/libopenssl/0006-Fix-some-SSL_export_keying_material-issues.patch @@ -0,0 +1,426 @@ +From db860ea3dcf56a1993c66da22bd44460d7ac4914 Mon Sep 17 00:00:00 2001 +From: Matt Caswell +Date: Tue, 4 Dec 2018 08:37:04 +0000 +Subject: [PATCH] Fix some SSL_export_keying_material() issues + +Fix some issues in tls13_hkdf_expand() which impact the above function +for TLSv1.3. In particular test that we can use the maximum label length +in TLSv1.3. + +Reviewed-by: Tim Hudson +(Merged from https://github.com/openssl/openssl/pull/7755) + +(cherry picked from commit 0fb2815b873304d145ed00283454fc9f3bd35e6b) +Signed-off-by: Bernd Kuhls +--- + doc/man3/SSL_export_keying_material.pod | 3 +- + ssl/ssl_locl.h | 2 +- + ssl/statem/extensions.c | 2 +- + ssl/statem/statem_clnt.c | 2 +- + ssl/statem/statem_srvr.c | 2 +- + ssl/tls13_enc.c | 73 +++++++++++++++++-------- + test/sslapitest.c | 48 ++++++++++++---- + test/tls13secretstest.c | 2 +- + 8 files changed, 92 insertions(+), 42 deletions(-) + +diff --git a/doc/man3/SSL_export_keying_material.pod b/doc/man3/SSL_export_keying_material.pod +index abebf911fc..4c81a60ffb 100644 +--- a/doc/man3/SSL_export_keying_material.pod ++++ b/doc/man3/SSL_export_keying_material.pod +@@ -59,7 +59,8 @@ B