diff options
12 files changed, 3 insertions, 2227 deletions
diff --git a/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch b/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch index aa2e5bb800..9baa0c2d75 100644 --- a/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch +++ b/meta/recipes-connectivity/openssl/openssl/0001-Added-handshake-history-reporting-when-test-fails.patch | |||
| @@ -6,6 +6,7 @@ Subject: [PATCH] Added handshake history reporting when test fails | |||
| 6 | Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/22481] | 6 | Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/22481] |
| 7 | 7 | ||
| 8 | Signed-off-by: William Lyu <William.Lyu@windriver.com> | 8 | Signed-off-by: William Lyu <William.Lyu@windriver.com> |
| 9 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 9 | --- | 10 | --- |
| 10 | test/helpers/handshake.c | 139 +++++++++++++++++++++++++++++---------- | 11 | test/helpers/handshake.c | 139 +++++++++++++++++++++++++++++---------- |
| 11 | test/helpers/handshake.h | 70 +++++++++++++++++++- | 12 | test/helpers/handshake.h | 70 +++++++++++++++++++- |
| @@ -16,13 +17,6 @@ diff --git a/test/helpers/handshake.c b/test/helpers/handshake.c | |||
| 16 | index e0422469e4..ae2ad59dd4 100644 | 17 | index e0422469e4..ae2ad59dd4 100644 |
| 17 | --- a/test/helpers/handshake.c | 18 | --- a/test/helpers/handshake.c |
| 18 | +++ b/test/helpers/handshake.c | 19 | +++ b/test/helpers/handshake.c |
| 19 | @@ -1,5 +1,5 @@ | ||
| 20 | /* | ||
| 21 | - * Copyright 2016-2022 The OpenSSL Project Authors. All Rights Reserved. | ||
| 22 | + * Copyright 2016-2023 The OpenSSL Project Authors. All Rights Reserved. | ||
| 23 | * | ||
| 24 | * Licensed under the Apache License 2.0 (the "License"). You may not use | ||
| 25 | * this file except in compliance with the License. You can obtain a copy | ||
| 26 | @@ -24,6 +24,102 @@ | 20 | @@ -24,6 +24,102 @@ |
| 27 | #include <netinet/sctp.h> | 21 | #include <netinet/sctp.h> |
| 28 | #endif | 22 | #endif |
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_1.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_1.patch deleted file mode 100644 index d5c178eeab..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_1.patch +++ /dev/null | |||
| @@ -1,113 +0,0 @@ | |||
| 1 | From b63b4db52e10677db4ab46b608aabd55a44668aa Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 31 May 2024 11:14:33 +0100 | ||
| 4 | Subject: [PATCH 01/10] Fix SSL_select_next_proto | ||
| 5 | |||
| 6 | Ensure that the provided client list is non-NULL and starts with a valid | ||
| 7 | entry. When called from the ALPN callback the client list should already | ||
| 8 | have been validated by OpenSSL so this should not cause a problem. When | ||
| 9 | called from the NPN callback the client list is locally configured and | ||
| 10 | will not have already been validated. Therefore SSL_select_next_proto | ||
| 11 | should not assume that it is correctly formatted. | ||
| 12 | |||
| 13 | We implement stricter checking of the client protocol list. We also do the | ||
| 14 | same for the server list while we are about it. | ||
| 15 | |||
| 16 | CVE-2024-5535 | ||
| 17 | |||
| 18 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 19 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 20 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 21 | |||
| 22 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/99fb785a5f85315b95288921a321a935ea29a51e] | ||
| 23 | CVE: CVE-2024-5535 | ||
| 24 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 25 | --- | ||
| 26 | ssl/ssl_lib.c | 63 ++++++++++++++++++++++++++++++++------------------- | ||
| 27 | 1 file changed, 40 insertions(+), 23 deletions(-) | ||
| 28 | |||
| 29 | diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c | ||
| 30 | index 016135f..cf52b31 100644 | ||
| 31 | --- a/ssl/ssl_lib.c | ||
| 32 | +++ b/ssl/ssl_lib.c | ||
| 33 | @@ -3518,37 +3518,54 @@ int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, | ||
| 34 | unsigned int server_len, | ||
| 35 | const unsigned char *client, unsigned int client_len) | ||
| 36 | { | ||
| 37 | - unsigned int i, j; | ||
| 38 | - const unsigned char *result; | ||
| 39 | - int status = OPENSSL_NPN_UNSUPPORTED; | ||
| 40 | + PACKET cpkt, csubpkt, spkt, ssubpkt; | ||
| 41 | + | ||
| 42 | + if (!PACKET_buf_init(&cpkt, client, client_len) | ||
| 43 | + || !PACKET_get_length_prefixed_1(&cpkt, &csubpkt) | ||
| 44 | + || PACKET_remaining(&csubpkt) == 0) { | ||
| 45 | + *out = NULL; | ||
| 46 | + *outlen = 0; | ||
| 47 | + return OPENSSL_NPN_NO_OVERLAP; | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + /* | ||
| 51 | + * Set the default opportunistic protocol. Will be overwritten if we find | ||
| 52 | + * a match. | ||
| 53 | + */ | ||
| 54 | + *out = (unsigned char *)PACKET_data(&csubpkt); | ||
| 55 | + *outlen = (unsigned char)PACKET_remaining(&csubpkt); | ||
| 56 | |||
| 57 | /* | ||
| 58 | * For each protocol in server preference order, see if we support it. | ||
| 59 | */ | ||
| 60 | - for (i = 0; i < server_len;) { | ||
| 61 | - for (j = 0; j < client_len;) { | ||
| 62 | - if (server[i] == client[j] && | ||
| 63 | - memcmp(&server[i + 1], &client[j + 1], server[i]) == 0) { | ||
| 64 | - /* We found a match */ | ||
| 65 | - result = &server[i]; | ||
| 66 | - status = OPENSSL_NPN_NEGOTIATED; | ||
| 67 | - goto found; | ||
| 68 | + if (PACKET_buf_init(&spkt, server, server_len)) { | ||
| 69 | + while (PACKET_get_length_prefixed_1(&spkt, &ssubpkt)) { | ||
| 70 | + if (PACKET_remaining(&ssubpkt) == 0) | ||
| 71 | + continue; /* Invalid - ignore it */ | ||
| 72 | + if (PACKET_buf_init(&cpkt, client, client_len)) { | ||
| 73 | + while (PACKET_get_length_prefixed_1(&cpkt, &csubpkt)) { | ||
| 74 | + if (PACKET_equal(&csubpkt, PACKET_data(&ssubpkt), | ||
| 75 | + PACKET_remaining(&ssubpkt))) { | ||
| 76 | + /* We found a match */ | ||
| 77 | + *out = (unsigned char *)PACKET_data(&ssubpkt); | ||
| 78 | + *outlen = (unsigned char)PACKET_remaining(&ssubpkt); | ||
| 79 | + return OPENSSL_NPN_NEGOTIATED; | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | + /* Ignore spurious trailing bytes in the client list */ | ||
| 83 | + } else { | ||
| 84 | + /* This should never happen */ | ||
| 85 | + return OPENSSL_NPN_NO_OVERLAP; | ||
| 86 | } | ||
| 87 | - j += client[j]; | ||
| 88 | - j++; | ||
| 89 | } | ||
| 90 | - i += server[i]; | ||
| 91 | - i++; | ||
| 92 | + /* Ignore spurious trailing bytes in the server list */ | ||
| 93 | } | ||
| 94 | |||
| 95 | - /* There's no overlap between our protocols and the server's list. */ | ||
| 96 | - result = client; | ||
| 97 | - status = OPENSSL_NPN_NO_OVERLAP; | ||
| 98 | - | ||
| 99 | - found: | ||
| 100 | - *out = (unsigned char *)result + 1; | ||
| 101 | - *outlen = result[0]; | ||
| 102 | - return status; | ||
| 103 | + /* | ||
| 104 | + * There's no overlap between our protocols and the server's list. We use | ||
| 105 | + * the default opportunistic protocol selected earlier | ||
| 106 | + */ | ||
| 107 | + return OPENSSL_NPN_NO_OVERLAP; | ||
| 108 | } | ||
| 109 | |||
| 110 | #ifndef OPENSSL_NO_NEXTPROTONEG | ||
| 111 | -- | ||
| 112 | 2.44.0 | ||
| 113 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_10.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_10.patch deleted file mode 100644 index 7cc36f20ab..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_10.patch +++ /dev/null | |||
| @@ -1,203 +0,0 @@ | |||
| 1 | From 61cad53901703944d22f1cd6a1b57460f2270599 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 21 Jun 2024 14:29:26 +0100 | ||
| 4 | Subject: [PATCH 10/10] Add a test for an empty NextProto message | ||
| 5 | |||
| 6 | It is valid according to the spec for a NextProto message to have no | ||
| 7 | protocols listed in it. The OpenSSL implementation however does not allow | ||
| 8 | us to create such a message. In order to check that we work as expected | ||
| 9 | when communicating with a client that does generate such messages we have | ||
| 10 | to use a TLSProxy test. | ||
| 11 | |||
| 12 | Follow on from CVE-2024-5535 | ||
| 13 | |||
| 14 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 15 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 16 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 17 | |||
| 18 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/301b870546d1c7b2d8f0d66e04a2596142f0399f] | ||
| 19 | CVE: CVE-2024-5535 | ||
| 20 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 21 | --- | ||
| 22 | test/recipes/70-test_npn.t | 73 +++++++++++++++++++++++++++++++++ | ||
| 23 | util/perl/TLSProxy/Message.pm | 9 ++++ | ||
| 24 | util/perl/TLSProxy/NextProto.pm | 54 ++++++++++++++++++++++++ | ||
| 25 | util/perl/TLSProxy/Proxy.pm | 1 + | ||
| 26 | 4 files changed, 137 insertions(+) | ||
| 27 | create mode 100644 test/recipes/70-test_npn.t | ||
| 28 | create mode 100644 util/perl/TLSProxy/NextProto.pm | ||
| 29 | |||
| 30 | diff --git a/test/recipes/70-test_npn.t b/test/recipes/70-test_npn.t | ||
| 31 | new file mode 100644 | ||
| 32 | index 0000000..f82e71a | ||
| 33 | --- /dev/null | ||
| 34 | +++ b/test/recipes/70-test_npn.t | ||
| 35 | @@ -0,0 +1,73 @@ | ||
| 36 | +#! /usr/bin/env perl | ||
| 37 | +# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. | ||
| 38 | +# | ||
| 39 | +# Licensed under the Apache License 2.0 (the "License"). You may not use | ||
| 40 | +# this file except in compliance with the License. You can obtain a copy | ||
| 41 | +# in the file LICENSE in the source distribution or at | ||
| 42 | +# https://www.openssl.org/source/license.html | ||
| 43 | + | ||
| 44 | +use strict; | ||
| 45 | +use OpenSSL::Test qw/:DEFAULT cmdstr srctop_file/; | ||
| 46 | +use OpenSSL::Test::Utils; | ||
| 47 | + | ||
| 48 | +use TLSProxy::Proxy; | ||
| 49 | + | ||
| 50 | +my $test_name = "test_npn"; | ||
| 51 | +setup($test_name); | ||
| 52 | + | ||
| 53 | +plan skip_all => "TLSProxy isn't usable on $^O" | ||
| 54 | + if $^O =~ /^(VMS)$/; | ||
| 55 | + | ||
| 56 | +plan skip_all => "$test_name needs the dynamic engine feature enabled" | ||
| 57 | + if disabled("engine") || disabled("dynamic-engine"); | ||
| 58 | + | ||
| 59 | +plan skip_all => "$test_name needs the sock feature enabled" | ||
| 60 | + if disabled("sock"); | ||
| 61 | + | ||
| 62 | +plan skip_all => "$test_name needs NPN enabled" | ||
| 63 | + if disabled("nextprotoneg"); | ||
| 64 | + | ||
| 65 | +plan skip_all => "$test_name needs TLSv1.2 enabled" | ||
| 66 | + if disabled("tls1_2"); | ||
| 67 | + | ||
| 68 | +my $proxy = TLSProxy::Proxy->new( | ||
| 69 | + undef, | ||
| 70 | + cmdstr(app(["openssl"]), display => 1), | ||
| 71 | + srctop_file("apps", "server.pem"), | ||
| 72 | + (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE}) | ||
| 73 | +); | ||
| 74 | + | ||
| 75 | +$proxy->start() or plan skip_all => "Unable to start up Proxy for tests"; | ||
| 76 | +plan tests => 1; | ||
| 77 | + | ||
| 78 | +my $npnseen = 0; | ||
| 79 | + | ||
| 80 | +# Test 1: Check sending an empty NextProto message from the client works. This is | ||
| 81 | +# valid as per the spec, but OpenSSL does not allow you to send it. | ||
| 82 | +# Therefore we must be prepared to receive such a message but we cannot | ||
| 83 | +# generate it except via TLSProxy | ||
| 84 | +$proxy->clear(); | ||
| 85 | +$proxy->filter(\&npn_filter); | ||
| 86 | +$proxy->clientflags("-nextprotoneg foo -no_tls1_3"); | ||
| 87 | +$proxy->serverflags("-nextprotoneg foo"); | ||
| 88 | +$proxy->start(); | ||
| 89 | +ok($npnseen && TLSProxy::Message->success(), "Empty NPN message"); | ||
| 90 | + | ||
| 91 | +sub npn_filter | ||
| 92 | +{ | ||
| 93 | + my $proxy = shift; | ||
| 94 | + my $message; | ||
| 95 | + | ||
| 96 | + # The NextProto message always appears in flight 2 | ||
| 97 | + return if $proxy->flight != 2; | ||
| 98 | + | ||
| 99 | + foreach my $message (@{$proxy->message_list}) { | ||
| 100 | + if ($message->mt == TLSProxy::Message::MT_NEXT_PROTO) { | ||
| 101 | + # Our TLSproxy NextProto message support doesn't support parsing of | ||
| 102 | + # the message. If we repack it just creates an empty NextProto | ||
| 103 | + # message - which is exactly the scenario we want to test here. | ||
| 104 | + $message->repack(); | ||
| 105 | + $npnseen = 1; | ||
| 106 | + } | ||
| 107 | + } | ||
| 108 | +} | ||
| 109 | diff --git a/util/perl/TLSProxy/Message.pm b/util/perl/TLSProxy/Message.pm | ||
| 110 | index ce22187..fb41b2f 100644 | ||
| 111 | --- a/util/perl/TLSProxy/Message.pm | ||
| 112 | +++ b/util/perl/TLSProxy/Message.pm | ||
| 113 | @@ -384,6 +384,15 @@ sub create_message | ||
| 114 | [@message_frag_lens] | ||
| 115 | ); | ||
| 116 | $message->parse(); | ||
| 117 | + } elsif ($mt == MT_NEXT_PROTO) { | ||
| 118 | + $message = TLSProxy::NextProto->new( | ||
| 119 | + $server, | ||
| 120 | + $data, | ||
| 121 | + [@message_rec_list], | ||
| 122 | + $startoffset, | ||
| 123 | + [@message_frag_lens] | ||
| 124 | + ); | ||
| 125 | + $message->parse(); | ||
| 126 | } else { | ||
| 127 | #Unknown message type | ||
| 128 | $message = TLSProxy::Message->new( | ||
| 129 | diff --git a/util/perl/TLSProxy/NextProto.pm b/util/perl/TLSProxy/NextProto.pm | ||
| 130 | new file mode 100644 | ||
| 131 | index 0000000..0e18347 | ||
| 132 | --- /dev/null | ||
| 133 | +++ b/util/perl/TLSProxy/NextProto.pm | ||
| 134 | @@ -0,0 +1,54 @@ | ||
| 135 | +# Copyright 2024 The OpenSSL Project Authors. All Rights Reserved. | ||
| 136 | +# | ||
| 137 | +# Licensed under the Apache License 2.0 (the "License"). You may not use | ||
| 138 | +# this file except in compliance with the License. You can obtain a copy | ||
| 139 | +# in the file LICENSE in the source distribution or at | ||
| 140 | +# https://www.openssl.org/source/license.html | ||
| 141 | + | ||
| 142 | +use strict; | ||
| 143 | + | ||
| 144 | +package TLSProxy::NextProto; | ||
| 145 | + | ||
| 146 | +use vars '@ISA'; | ||
| 147 | +push @ISA, 'TLSProxy::Message'; | ||
| 148 | + | ||
| 149 | +sub new | ||
| 150 | +{ | ||
| 151 | + my $class = shift; | ||
| 152 | + my ($server, | ||
| 153 | + $data, | ||
| 154 | + $records, | ||
| 155 | + $startoffset, | ||
| 156 | + $message_frag_lens) = @_; | ||
| 157 | + | ||
| 158 | + my $self = $class->SUPER::new( | ||
| 159 | + $server, | ||
| 160 | + TLSProxy::Message::MT_NEXT_PROTO, | ||
| 161 | + $data, | ||
| 162 | + $records, | ||
| 163 | + $startoffset, | ||
| 164 | + $message_frag_lens); | ||
| 165 | + | ||
| 166 | + return $self; | ||
| 167 | +} | ||
| 168 | + | ||
| 169 | +sub parse | ||
| 170 | +{ | ||
| 171 | + # We don't support parsing at the moment | ||
| 172 | +} | ||
| 173 | + | ||
| 174 | +# This is supposed to reconstruct the on-the-wire message data following changes. | ||
| 175 | +# For now though since we don't support parsing we just create an empty NextProto | ||
| 176 | +# message - this capability is used in test_npn | ||
| 177 | +sub set_message_contents | ||
| 178 | +{ | ||
| 179 | + my $self = shift; | ||
| 180 | + my $data; | ||
| 181 | + | ||
| 182 | + $data = pack("C32", 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 183 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 184 | + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
| 185 | + 0x00, 0x00, 0x00); | ||
| 186 | + $self->data($data); | ||
| 187 | +} | ||
| 188 | +1; | ||
| 189 | diff --git a/util/perl/TLSProxy/Proxy.pm b/util/perl/TLSProxy/Proxy.pm | ||
| 190 | index 3de10ec..b707722 100644 | ||
| 191 | --- a/util/perl/TLSProxy/Proxy.pm | ||
| 192 | +++ b/util/perl/TLSProxy/Proxy.pm | ||
| 193 | @@ -23,6 +23,7 @@ use TLSProxy::CertificateRequest; | ||
| 194 | use TLSProxy::CertificateVerify; | ||
| 195 | use TLSProxy::ServerKeyExchange; | ||
| 196 | use TLSProxy::NewSessionTicket; | ||
| 197 | +use TLSProxy::NextProto; | ||
| 198 | |||
| 199 | my $have_IPv6; | ||
| 200 | my $IP_factory; | ||
| 201 | -- | ||
| 202 | 2.44.0 | ||
| 203 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_2.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_2.patch deleted file mode 100644 index 768304f00b..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_2.patch +++ /dev/null | |||
| @@ -1,43 +0,0 @@ | |||
| 1 | From 6de1d37cd129b0af5b4a247c76f97b98e70b108b Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 31 May 2024 11:18:27 +0100 | ||
| 4 | Subject: [PATCH 02/10] More correctly handle a selected_len of 0 when | ||
| 5 | processing NPN | ||
| 6 | |||
| 7 | In the case where the NPN callback returns with SSL_TLEXT_ERR_OK, but | ||
| 8 | the selected_len is 0 we should fail. Previously this would fail with an | ||
| 9 | internal_error alert because calling OPENSSL_malloc(selected_len) will | ||
| 10 | return NULL when selected_len is 0. We make this error detection more | ||
| 11 | explicit and return a handshake failure alert. | ||
| 12 | |||
| 13 | Follow on from CVE-2024-5535 | ||
| 14 | |||
| 15 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 16 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 17 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 18 | |||
| 19 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/015255851371757d54c2560643eb3b3a88123cf1] | ||
| 20 | CVE: CVE-2024-5535 | ||
| 21 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 22 | --- | ||
| 23 | ssl/statem/extensions_clnt.c | 4 ++-- | ||
| 24 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
| 25 | |||
| 26 | diff --git a/ssl/statem/extensions_clnt.c b/ssl/statem/extensions_clnt.c | ||
| 27 | index 381a6c9..1ab3c13 100644 | ||
| 28 | --- a/ssl/statem/extensions_clnt.c | ||
| 29 | +++ b/ssl/statem/extensions_clnt.c | ||
| 30 | @@ -1560,8 +1560,8 @@ int tls_parse_stoc_npn(SSL_CONNECTION *s, PACKET *pkt, unsigned int context, | ||
| 31 | if (sctx->ext.npn_select_cb(SSL_CONNECTION_GET_SSL(s), | ||
| 32 | &selected, &selected_len, | ||
| 33 | PACKET_data(pkt), PACKET_remaining(pkt), | ||
| 34 | - sctx->ext.npn_select_cb_arg) != | ||
| 35 | - SSL_TLSEXT_ERR_OK) { | ||
| 36 | + sctx->ext.npn_select_cb_arg) != SSL_TLSEXT_ERR_OK | ||
| 37 | + || selected_len == 0) { | ||
| 38 | SSLfatal(s, SSL_AD_HANDSHAKE_FAILURE, SSL_R_BAD_EXTENSION); | ||
| 39 | return 0; | ||
| 40 | } | ||
| 41 | -- | ||
| 42 | 2.44.0 | ||
| 43 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_3.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_3.patch deleted file mode 100644 index d6d4d869be..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_3.patch +++ /dev/null | |||
| @@ -1,38 +0,0 @@ | |||
| 1 | From 4f9334a33da89949f97927c8fe7df1003c42cda4 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 31 May 2024 11:22:13 +0100 | ||
| 4 | Subject: [PATCH 03/10] Use correctly formatted ALPN data in tserver | ||
| 5 | |||
| 6 | The QUIC test server was using incorrectly formatted ALPN data. With the | ||
| 7 | previous implementation of SSL_select_next_proto this went unnoticed. With | ||
| 8 | the new stricter implemenation it was failing. | ||
| 9 | |||
| 10 | Follow on from CVE-2024-5535 | ||
| 11 | |||
| 12 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 13 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 14 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 15 | |||
| 16 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/6cc511826f09e513b4ec066d9b95acaf4f86d991] | ||
| 17 | CVE: CVE-2024-5535 | ||
| 18 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 19 | --- | ||
| 20 | ssl/quic/quic_tserver.c | 2 +- | ||
| 21 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
| 22 | |||
| 23 | diff --git a/ssl/quic/quic_tserver.c b/ssl/quic/quic_tserver.c | ||
| 24 | index 86187d0..15694e7 100644 | ||
| 25 | --- a/ssl/quic/quic_tserver.c | ||
| 26 | +++ b/ssl/quic/quic_tserver.c | ||
| 27 | @@ -58,7 +58,7 @@ static int alpn_select_cb(SSL *ssl, const unsigned char **out, | ||
| 28 | |||
| 29 | if (srv->args.alpn == NULL) { | ||
| 30 | alpn = alpndeflt; | ||
| 31 | - alpnlen = sizeof(alpn); | ||
| 32 | + alpnlen = sizeof(alpndeflt); | ||
| 33 | } else { | ||
| 34 | alpn = srv->args.alpn; | ||
| 35 | alpnlen = srv->args.alpnlen; | ||
| 36 | -- | ||
| 37 | 2.44.0 | ||
| 38 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_4.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_4.patch deleted file mode 100644 index 03fc1168f9..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_4.patch +++ /dev/null | |||
| @@ -1,82 +0,0 @@ | |||
| 1 | From 5145a1f50e44c9f86127a76f01519a9f25157290 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 31 May 2024 11:46:38 +0100 | ||
| 4 | Subject: [PATCH 04/10] Clarify the SSL_select_next_proto() documentation | ||
| 5 | |||
| 6 | We clarify the input preconditions and the expected behaviour in the event | ||
| 7 | of no overlap. | ||
| 8 | |||
| 9 | Follow on from CVE-2024-5535 | ||
| 10 | |||
| 11 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 12 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 13 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 14 | |||
| 15 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/8e81c57adbbf703dfb63955f65599765fdacc741] | ||
| 16 | CVE: CVE-2024-5535 | ||
| 17 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 18 | --- | ||
| 19 | doc/man3/SSL_CTX_set_alpn_select_cb.pod | 26 +++++++++++++++++-------- | ||
| 20 | 1 file changed, 18 insertions(+), 8 deletions(-) | ||
| 21 | |||
| 22 | diff --git a/doc/man3/SSL_CTX_set_alpn_select_cb.pod b/doc/man3/SSL_CTX_set_alpn_select_cb.pod | ||
| 23 | index 05fee2f..79e1a25 100644 | ||
| 24 | --- a/doc/man3/SSL_CTX_set_alpn_select_cb.pod | ||
| 25 | +++ b/doc/man3/SSL_CTX_set_alpn_select_cb.pod | ||
| 26 | @@ -52,7 +52,8 @@ SSL_select_next_proto, SSL_get0_alpn_selected, SSL_get0_next_proto_negotiated | ||
| 27 | SSL_CTX_set_alpn_protos() and SSL_set_alpn_protos() are used by the client to | ||
| 28 | set the list of protocols available to be negotiated. The B<protos> must be in | ||
| 29 | protocol-list format, described below. The length of B<protos> is specified in | ||
| 30 | -B<protos_len>. | ||
| 31 | +B<protos_len>. Setting B<protos_len> to 0 clears any existing list of ALPN | ||
| 32 | +protocols and no ALPN extension will be sent to the server. | ||
| 33 | |||
| 34 | SSL_CTX_set_alpn_select_cb() sets the application callback B<cb> used by a | ||
| 35 | server to select which protocol to use for the incoming connection. When B<cb> | ||
| 36 | @@ -73,9 +74,16 @@ B<server_len> and B<client>, B<client_len> must be in the protocol-list format | ||
| 37 | described below. The first item in the B<server>, B<server_len> list that | ||
| 38 | matches an item in the B<client>, B<client_len> list is selected, and returned | ||
| 39 | in B<out>, B<outlen>. The B<out> value will point into either B<server> or | ||
| 40 | -B<client>, so it should be copied immediately. If no match is found, the first | ||
| 41 | -item in B<client>, B<client_len> is returned in B<out>, B<outlen>. This | ||
| 42 | -function can also be used in the NPN callback. | ||
| 43 | +B<client>, so it should be copied immediately. The client list must include at | ||
| 44 | +least one valid (nonempty) protocol entry in the list. | ||
| 45 | + | ||
| 46 | +The SSL_select_next_proto() helper function can be useful from either the ALPN | ||
| 47 | +callback or the NPN callback (described below). If no match is found, the first | ||
| 48 | +item in B<client>, B<client_len> is returned in B<out>, B<outlen> and | ||
| 49 | +B<OPENSSL_NPN_NO_OVERLAP> is returned. This can be useful when implementating | ||
| 50 | +the NPN callback. In the ALPN case, the value returned in B<out> and B<outlen> | ||
| 51 | +must be ignored if B<OPENSSL_NPN_NO_OVERLAP> has been returned from | ||
| 52 | +SSL_select_next_proto(). | ||
| 53 | |||
| 54 | SSL_CTX_set_next_proto_select_cb() sets a callback B<cb> that is called when a | ||
| 55 | client needs to select a protocol from the server's provided list, and a | ||
| 56 | @@ -85,9 +93,10 @@ must be set to point to the selected protocol (which may be within B<in>). | ||
| 57 | The length of the protocol name must be written into B<outlen>. The | ||
| 58 | server's advertised protocols are provided in B<in> and B<inlen>. The | ||
| 59 | callback can assume that B<in> is syntactically valid. The client must | ||
| 60 | -select a protocol. It is fatal to the connection if this callback returns | ||
| 61 | -a value other than B<SSL_TLSEXT_ERR_OK>. The B<arg> parameter is the pointer | ||
| 62 | -set via SSL_CTX_set_next_proto_select_cb(). | ||
| 63 | +select a protocol (although it may be an empty, zero length protocol). It is | ||
| 64 | +fatal to the connection if this callback returns a value other than | ||
| 65 | +B<SSL_TLSEXT_ERR_OK> or if the zero length protocol is selected. The B<arg> | ||
| 66 | +parameter is the pointer set via SSL_CTX_set_next_proto_select_cb(). | ||
| 67 | |||
| 68 | SSL_CTX_set_next_protos_advertised_cb() sets a callback B<cb> that is called | ||
| 69 | when a TLS server needs a list of supported protocols for Next Protocol | ||
| 70 | @@ -154,7 +163,8 @@ A match was found and is returned in B<out>, B<outlen>. | ||
| 71 | =item OPENSSL_NPN_NO_OVERLAP | ||
| 72 | |||
| 73 | No match was found. The first item in B<client>, B<client_len> is returned in | ||
| 74 | -B<out>, B<outlen>. | ||
| 75 | +B<out>, B<outlen> (or B<NULL> and 0 in the case where the first entry in | ||
| 76 | +B<client> is invalid). | ||
| 77 | |||
| 78 | =back | ||
| 79 | |||
| 80 | -- | ||
| 81 | 2.44.0 | ||
| 82 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_5.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_5.patch deleted file mode 100644 index e439d9b59a..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_5.patch +++ /dev/null | |||
| @@ -1,176 +0,0 @@ | |||
| 1 | From 01d44bc7f50670002cad495654fd99a6371d7662 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 31 May 2024 16:35:16 +0100 | ||
| 4 | Subject: [PATCH 05/10] Add a test for SSL_select_next_proto | ||
| 5 | |||
| 6 | Follow on from CVE-2024-5535 | ||
| 7 | |||
| 8 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 9 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 10 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 11 | |||
| 12 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/add5c52a25c549cec4a730cdf96e2252f0a1862d] | ||
| 13 | CVE: CVE-2024-5535 | ||
| 14 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 15 | --- | ||
| 16 | test/sslapitest.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++ | ||
| 17 | 1 file changed, 137 insertions(+) | ||
| 18 | |||
| 19 | diff --git a/test/sslapitest.c b/test/sslapitest.c | ||
| 20 | index ce16332..15cb906 100644 | ||
| 21 | --- a/test/sslapitest.c | ||
| 22 | +++ b/test/sslapitest.c | ||
| 23 | @@ -11741,6 +11741,142 @@ static int test_multi_resume(int idx) | ||
| 24 | return testresult; | ||
| 25 | } | ||
| 26 | |||
| 27 | +static struct next_proto_st { | ||
| 28 | + int serverlen; | ||
| 29 | + unsigned char server[40]; | ||
| 30 | + int clientlen; | ||
| 31 | + unsigned char client[40]; | ||
| 32 | + int expected_ret; | ||
| 33 | + size_t selectedlen; | ||
| 34 | + unsigned char selected[40]; | ||
| 35 | +} next_proto_tests[] = { | ||
| 36 | + { | ||
| 37 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 38 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 39 | + OPENSSL_NPN_NEGOTIATED, | ||
| 40 | + 3, { 'a', 'b', 'c' } | ||
| 41 | + }, | ||
| 42 | + { | ||
| 43 | + 7, { 3, 'a', 'b', 'c', 2, 'a', 'b' }, | ||
| 44 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 45 | + OPENSSL_NPN_NEGOTIATED, | ||
| 46 | + 3, { 'a', 'b', 'c' } | ||
| 47 | + }, | ||
| 48 | + { | ||
| 49 | + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c', }, | ||
| 50 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 51 | + OPENSSL_NPN_NEGOTIATED, | ||
| 52 | + 3, { 'a', 'b', 'c' } | ||
| 53 | + }, | ||
| 54 | + { | ||
| 55 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 56 | + 7, { 3, 'a', 'b', 'c', 2, 'a', 'b', }, | ||
| 57 | + OPENSSL_NPN_NEGOTIATED, | ||
| 58 | + 3, { 'a', 'b', 'c' } | ||
| 59 | + }, | ||
| 60 | + { | ||
| 61 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 62 | + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c'}, | ||
| 63 | + OPENSSL_NPN_NEGOTIATED, | ||
| 64 | + 3, { 'a', 'b', 'c' } | ||
| 65 | + }, | ||
| 66 | + { | ||
| 67 | + 7, { 2, 'b', 'c', 3, 'a', 'b', 'c' }, | ||
| 68 | + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c'}, | ||
| 69 | + OPENSSL_NPN_NEGOTIATED, | ||
| 70 | + 3, { 'a', 'b', 'c' } | ||
| 71 | + }, | ||
| 72 | + { | ||
| 73 | + 10, { 2, 'b', 'c', 3, 'a', 'b', 'c', 2, 'a', 'b' }, | ||
| 74 | + 7, { 2, 'a', 'b', 3, 'a', 'b', 'c'}, | ||
| 75 | + OPENSSL_NPN_NEGOTIATED, | ||
| 76 | + 3, { 'a', 'b', 'c' } | ||
| 77 | + }, | ||
| 78 | + { | ||
| 79 | + 4, { 3, 'b', 'c', 'd' }, | ||
| 80 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 81 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 82 | + 3, { 'a', 'b', 'c' } | ||
| 83 | + }, | ||
| 84 | + { | ||
| 85 | + 0, { 0 }, | ||
| 86 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 87 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 88 | + 3, { 'a', 'b', 'c' } | ||
| 89 | + }, | ||
| 90 | + { | ||
| 91 | + -1, { 0 }, | ||
| 92 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 93 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 94 | + 3, { 'a', 'b', 'c' } | ||
| 95 | + }, | ||
| 96 | + { | ||
| 97 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 98 | + 0, { 0 }, | ||
| 99 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 100 | + 0, { 0 } | ||
| 101 | + }, | ||
| 102 | + { | ||
| 103 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 104 | + -1, { 0 }, | ||
| 105 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 106 | + 0, { 0 } | ||
| 107 | + }, | ||
| 108 | + { | ||
| 109 | + 3, { 3, 'a', 'b', 'c' }, | ||
| 110 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 111 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 112 | + 3, { 'a', 'b', 'c' } | ||
| 113 | + }, | ||
| 114 | + { | ||
| 115 | + 4, { 3, 'a', 'b', 'c' }, | ||
| 116 | + 3, { 3, 'a', 'b', 'c' }, | ||
| 117 | + OPENSSL_NPN_NO_OVERLAP, | ||
| 118 | + 0, { 0 } | ||
| 119 | + } | ||
| 120 | +}; | ||
| 121 | + | ||
| 122 | +static int test_select_next_proto(int idx) | ||
| 123 | +{ | ||
| 124 | + struct next_proto_st *np = &next_proto_tests[idx]; | ||
| 125 | + int ret = 0; | ||
| 126 | + unsigned char *out, *client, *server; | ||
| 127 | + unsigned char outlen; | ||
| 128 | + unsigned int clientlen, serverlen; | ||
| 129 | + | ||
| 130 | + if (np->clientlen == -1) { | ||
| 131 | + client = NULL; | ||
| 132 | + clientlen = 0; | ||
| 133 | + } else { | ||
| 134 | + client = np->client; | ||
| 135 | + clientlen = (unsigned int)np->clientlen; | ||
| 136 | + } | ||
| 137 | + if (np->serverlen == -1) { | ||
| 138 | + server = NULL; | ||
| 139 | + serverlen = 0; | ||
| 140 | + } else { | ||
| 141 | + server = np->server; | ||
| 142 | + serverlen = (unsigned int)np->serverlen; | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + if (!TEST_int_eq(SSL_select_next_proto(&out, &outlen, server, serverlen, | ||
| 146 | + client, clientlen), | ||
| 147 | + np->expected_ret)) | ||
| 148 | + goto err; | ||
| 149 | + | ||
| 150 | + if (np->selectedlen == 0) { | ||
| 151 | + if (!TEST_ptr_null(out) || !TEST_uchar_eq(outlen, 0)) | ||
| 152 | + goto err; | ||
| 153 | + } else { | ||
| 154 | + if (!TEST_mem_eq(out, outlen, np->selected, np->selectedlen)) | ||
| 155 | + goto err; | ||
| 156 | + } | ||
| 157 | + | ||
| 158 | + ret = 1; | ||
| 159 | + err: | ||
| 160 | + return ret; | ||
| 161 | +} | ||
| 162 | + | ||
| 163 | OPT_TEST_DECLARE_USAGE("certfile privkeyfile srpvfile tmpfile provider config dhfile\n") | ||
| 164 | |||
| 165 | int setup_tests(void) | ||
| 166 | @@ -12053,6 +12189,7 @@ int setup_tests(void) | ||
| 167 | ADD_ALL_TESTS(test_handshake_retry, 16); | ||
| 168 | ADD_TEST(test_data_retry); | ||
| 169 | ADD_ALL_TESTS(test_multi_resume, 5); | ||
| 170 | + ADD_ALL_TESTS(test_select_next_proto, OSSL_NELEM(next_proto_tests)); | ||
| 171 | return 1; | ||
| 172 | |||
| 173 | err: | ||
| 174 | -- | ||
| 175 | 2.44.0 | ||
| 176 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_6.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_6.patch deleted file mode 100644 index df24702fa6..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_6.patch +++ /dev/null | |||
| @@ -1,1173 +0,0 @@ | |||
| 1 | From e344d0b5860560ffa59415ea4028ba7760b2a773 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Tue, 4 Jun 2024 15:47:32 +0100 | ||
| 4 | Subject: [PATCH 06/10] Allow an empty NPN/ALPN protocol list in the tests | ||
| 5 | |||
| 6 | Allow ourselves to configure an empty NPN/ALPN protocol list and test what | ||
| 7 | happens if we do. | ||
| 8 | |||
| 9 | Follow on from CVE-2024-5535 | ||
| 10 | |||
| 11 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 12 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 13 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 14 | |||
| 15 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/7ea1f6a85b299b976cb3f756b2a7f0153f31b2b6] | ||
| 16 | CVE: CVE-2024-5535 | ||
| 17 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 18 | --- | ||
| 19 | test/helpers/handshake.c | 6 + | ||
| 20 | test/ssl-tests/08-npn.cnf | 553 +++++++++++++++++++--------------- | ||
| 21 | test/ssl-tests/08-npn.cnf.in | 35 +++ | ||
| 22 | test/ssl-tests/09-alpn.cnf | 66 +++- | ||
| 23 | test/ssl-tests/09-alpn.cnf.in | 33 ++ | ||
| 24 | 5 files changed, 449 insertions(+), 244 deletions(-) | ||
| 25 | |||
| 26 | diff --git a/test/helpers/handshake.c b/test/helpers/handshake.c | ||
| 27 | index ae2ad59..b66b2f5 100644 | ||
| 28 | --- a/test/helpers/handshake.c | ||
| 29 | +++ b/test/helpers/handshake.c | ||
| 30 | @@ -444,6 +444,12 @@ static int parse_protos(const char *protos, unsigned char **out, size_t *outlen) | ||
| 31 | |||
| 32 | len = strlen(protos); | ||
| 33 | |||
| 34 | + if (len == 0) { | ||
| 35 | + *out = NULL; | ||
| 36 | + *outlen = 0; | ||
| 37 | + return 1; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | /* Should never have reuse. */ | ||
| 41 | if (!TEST_ptr_null(*out) | ||
| 42 | /* Test values are small, so we omit length limit checks. */ | ||
| 43 | diff --git a/test/ssl-tests/08-npn.cnf b/test/ssl-tests/08-npn.cnf | ||
| 44 | index f38b3f6..1931d02 100644 | ||
| 45 | --- a/test/ssl-tests/08-npn.cnf | ||
| 46 | +++ b/test/ssl-tests/08-npn.cnf | ||
| 47 | @@ -1,6 +1,6 @@ | ||
| 48 | # Generated with generate_ssl_tests.pl | ||
| 49 | |||
| 50 | -num_tests = 20 | ||
| 51 | +num_tests = 22 | ||
| 52 | |||
| 53 | test-0 = 0-npn-simple | ||
| 54 | test-1 = 1-npn-client-finds-match | ||
| 55 | @@ -8,20 +8,22 @@ test-2 = 2-npn-client-honours-server-pref | ||
| 56 | test-3 = 3-npn-client-first-pref-on-mismatch | ||
| 57 | test-4 = 4-npn-no-server-support | ||
| 58 | test-5 = 5-npn-no-client-support | ||
| 59 | -test-6 = 6-npn-with-sni-no-context-switch | ||
| 60 | -test-7 = 7-npn-with-sni-context-switch | ||
| 61 | -test-8 = 8-npn-selected-sni-server-supports-npn | ||
| 62 | -test-9 = 9-npn-selected-sni-server-does-not-support-npn | ||
| 63 | -test-10 = 10-alpn-preferred-over-npn | ||
| 64 | -test-11 = 11-sni-npn-preferred-over-alpn | ||
| 65 | -test-12 = 12-npn-simple-resumption | ||
| 66 | -test-13 = 13-npn-server-switch-resumption | ||
| 67 | -test-14 = 14-npn-client-switch-resumption | ||
| 68 | -test-15 = 15-npn-client-first-pref-on-mismatch-resumption | ||
| 69 | -test-16 = 16-npn-no-server-support-resumption | ||
| 70 | -test-17 = 17-npn-no-client-support-resumption | ||
| 71 | -test-18 = 18-alpn-preferred-over-npn-resumption | ||
| 72 | -test-19 = 19-npn-used-if-alpn-not-supported-resumption | ||
| 73 | +test-6 = 6-npn-empty-client-list | ||
| 74 | +test-7 = 7-npn-empty-server-list | ||
| 75 | +test-8 = 8-npn-with-sni-no-context-switch | ||
| 76 | +test-9 = 9-npn-with-sni-context-switch | ||
| 77 | +test-10 = 10-npn-selected-sni-server-supports-npn | ||
| 78 | +test-11 = 11-npn-selected-sni-server-does-not-support-npn | ||
| 79 | +test-12 = 12-alpn-preferred-over-npn | ||
| 80 | +test-13 = 13-sni-npn-preferred-over-alpn | ||
| 81 | +test-14 = 14-npn-simple-resumption | ||
| 82 | +test-15 = 15-npn-server-switch-resumption | ||
| 83 | +test-16 = 16-npn-client-switch-resumption | ||
| 84 | +test-17 = 17-npn-client-first-pref-on-mismatch-resumption | ||
| 85 | +test-18 = 18-npn-no-server-support-resumption | ||
| 86 | +test-19 = 19-npn-no-client-support-resumption | ||
| 87 | +test-20 = 20-alpn-preferred-over-npn-resumption | ||
| 88 | +test-21 = 21-npn-used-if-alpn-not-supported-resumption | ||
| 89 | # =========================================================== | ||
| 90 | |||
| 91 | [0-npn-simple] | ||
| 92 | @@ -206,253 +208,318 @@ NPNProtocols = foo | ||
| 93 | |||
| 94 | # =========================================================== | ||
| 95 | |||
| 96 | -[6-npn-with-sni-no-context-switch] | ||
| 97 | -ssl_conf = 6-npn-with-sni-no-context-switch-ssl | ||
| 98 | +[6-npn-empty-client-list] | ||
| 99 | +ssl_conf = 6-npn-empty-client-list-ssl | ||
| 100 | |||
| 101 | -[6-npn-with-sni-no-context-switch-ssl] | ||
| 102 | -server = 6-npn-with-sni-no-context-switch-server | ||
| 103 | -client = 6-npn-with-sni-no-context-switch-client | ||
| 104 | -server2 = 6-npn-with-sni-no-context-switch-server2 | ||
| 105 | +[6-npn-empty-client-list-ssl] | ||
| 106 | +server = 6-npn-empty-client-list-server | ||
| 107 | +client = 6-npn-empty-client-list-client | ||
| 108 | |||
| 109 | -[6-npn-with-sni-no-context-switch-server] | ||
| 110 | +[6-npn-empty-client-list-server] | ||
| 111 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 112 | CipherString = DEFAULT | ||
| 113 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 114 | |||
| 115 | -[6-npn-with-sni-no-context-switch-server2] | ||
| 116 | +[6-npn-empty-client-list-client] | ||
| 117 | +CipherString = DEFAULT | ||
| 118 | +MaxProtocol = TLSv1.2 | ||
| 119 | +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 120 | +VerifyMode = Peer | ||
| 121 | + | ||
| 122 | +[test-6] | ||
| 123 | +ExpectedClientAlert = HandshakeFailure | ||
| 124 | +ExpectedResult = ClientFail | ||
| 125 | +server = 6-npn-empty-client-list-server-extra | ||
| 126 | +client = 6-npn-empty-client-list-client-extra | ||
| 127 | + | ||
| 128 | +[6-npn-empty-client-list-server-extra] | ||
| 129 | +NPNProtocols = foo | ||
| 130 | + | ||
| 131 | +[6-npn-empty-client-list-client-extra] | ||
| 132 | +NPNProtocols = | ||
| 133 | + | ||
| 134 | + | ||
| 135 | +# =========================================================== | ||
| 136 | + | ||
| 137 | +[7-npn-empty-server-list] | ||
| 138 | +ssl_conf = 7-npn-empty-server-list-ssl | ||
| 139 | + | ||
| 140 | +[7-npn-empty-server-list-ssl] | ||
| 141 | +server = 7-npn-empty-server-list-server | ||
| 142 | +client = 7-npn-empty-server-list-client | ||
| 143 | + | ||
| 144 | +[7-npn-empty-server-list-server] | ||
| 145 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 146 | CipherString = DEFAULT | ||
| 147 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 148 | |||
| 149 | -[6-npn-with-sni-no-context-switch-client] | ||
| 150 | +[7-npn-empty-server-list-client] | ||
| 151 | CipherString = DEFAULT | ||
| 152 | MaxProtocol = TLSv1.2 | ||
| 153 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 154 | VerifyMode = Peer | ||
| 155 | |||
| 156 | -[test-6] | ||
| 157 | +[test-7] | ||
| 158 | +ExpectedNPNProtocol = foo | ||
| 159 | +server = 7-npn-empty-server-list-server-extra | ||
| 160 | +client = 7-npn-empty-server-list-client-extra | ||
| 161 | + | ||
| 162 | +[7-npn-empty-server-list-server-extra] | ||
| 163 | +NPNProtocols = | ||
| 164 | + | ||
| 165 | +[7-npn-empty-server-list-client-extra] | ||
| 166 | +NPNProtocols = foo | ||
| 167 | + | ||
| 168 | + | ||
| 169 | +# =========================================================== | ||
| 170 | + | ||
| 171 | +[8-npn-with-sni-no-context-switch] | ||
| 172 | +ssl_conf = 8-npn-with-sni-no-context-switch-ssl | ||
| 173 | + | ||
| 174 | +[8-npn-with-sni-no-context-switch-ssl] | ||
| 175 | +server = 8-npn-with-sni-no-context-switch-server | ||
| 176 | +client = 8-npn-with-sni-no-context-switch-client | ||
| 177 | +server2 = 8-npn-with-sni-no-context-switch-server2 | ||
| 178 | + | ||
| 179 | +[8-npn-with-sni-no-context-switch-server] | ||
| 180 | +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 181 | +CipherString = DEFAULT | ||
| 182 | +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 183 | + | ||
| 184 | +[8-npn-with-sni-no-context-switch-server2] | ||
| 185 | +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 186 | +CipherString = DEFAULT | ||
| 187 | +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 188 | + | ||
| 189 | +[8-npn-with-sni-no-context-switch-client] | ||
| 190 | +CipherString = DEFAULT | ||
| 191 | +MaxProtocol = TLSv1.2 | ||
| 192 | +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 193 | +VerifyMode = Peer | ||
| 194 | + | ||
| 195 | +[test-8] | ||
| 196 | ExpectedNPNProtocol = foo | ||
| 197 | ExpectedServerName = server1 | ||
| 198 | -server = 6-npn-with-sni-no-context-switch-server-extra | ||
| 199 | -server2 = 6-npn-with-sni-no-context-switch-server2-extra | ||
| 200 | -client = 6-npn-with-sni-no-context-switch-client-extra | ||
| 201 | +server = 8-npn-with-sni-no-context-switch-server-extra | ||
| 202 | +server2 = 8-npn-with-sni-no-context-switch-server2-extra | ||
| 203 | +client = 8-npn-with-sni-no-context-switch-client-extra | ||
| 204 | |||
| 205 | -[6-npn-with-sni-no-context-switch-server-extra] | ||
| 206 | +[8-npn-with-sni-no-context-switch-server-extra] | ||
| 207 | NPNProtocols = foo | ||
| 208 | ServerNameCallback = IgnoreMismatch | ||
| 209 | |||
| 210 | -[6-npn-with-sni-no-context-switch-server2-extra] | ||
| 211 | +[8-npn-with-sni-no-context-switch-server2-extra] | ||
| 212 | NPNProtocols = bar | ||
| 213 | |||
| 214 | -[6-npn-with-sni-no-context-switch-client-extra] | ||
| 215 | +[8-npn-with-sni-no-context-switch-client-extra] | ||
| 216 | NPNProtocols = foo,bar | ||
| 217 | ServerName = server1 | ||
| 218 | |||
| 219 | |||
| 220 | # =========================================================== | ||
| 221 | |||
| 222 | -[7-npn-with-sni-context-switch] | ||
| 223 | -ssl_conf = 7-npn-with-sni-context-switch-ssl | ||
| 224 | +[9-npn-with-sni-context-switch] | ||
| 225 | +ssl_conf = 9-npn-with-sni-context-switch-ssl | ||
| 226 | |||
| 227 | -[7-npn-with-sni-context-switch-ssl] | ||
| 228 | -server = 7-npn-with-sni-context-switch-server | ||
| 229 | -client = 7-npn-with-sni-context-switch-client | ||
| 230 | -server2 = 7-npn-with-sni-context-switch-server2 | ||
| 231 | +[9-npn-with-sni-context-switch-ssl] | ||
| 232 | +server = 9-npn-with-sni-context-switch-server | ||
| 233 | +client = 9-npn-with-sni-context-switch-client | ||
| 234 | +server2 = 9-npn-with-sni-context-switch-server2 | ||
| 235 | |||
| 236 | -[7-npn-with-sni-context-switch-server] | ||
| 237 | +[9-npn-with-sni-context-switch-server] | ||
| 238 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 239 | CipherString = DEFAULT | ||
| 240 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 241 | |||
| 242 | -[7-npn-with-sni-context-switch-server2] | ||
| 243 | +[9-npn-with-sni-context-switch-server2] | ||
| 244 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 245 | CipherString = DEFAULT | ||
| 246 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 247 | |||
| 248 | -[7-npn-with-sni-context-switch-client] | ||
| 249 | +[9-npn-with-sni-context-switch-client] | ||
| 250 | CipherString = DEFAULT | ||
| 251 | MaxProtocol = TLSv1.2 | ||
| 252 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 253 | VerifyMode = Peer | ||
| 254 | |||
| 255 | -[test-7] | ||
| 256 | +[test-9] | ||
| 257 | ExpectedNPNProtocol = bar | ||
| 258 | ExpectedServerName = server2 | ||
| 259 | -server = 7-npn-with-sni-context-switch-server-extra | ||
| 260 | -server2 = 7-npn-with-sni-context-switch-server2-extra | ||
| 261 | -client = 7-npn-with-sni-context-switch-client-extra | ||
| 262 | +server = 9-npn-with-sni-context-switch-server-extra | ||
| 263 | +server2 = 9-npn-with-sni-context-switch-server2-extra | ||
| 264 | +client = 9-npn-with-sni-context-switch-client-extra | ||
| 265 | |||
| 266 | -[7-npn-with-sni-context-switch-server-extra] | ||
| 267 | +[9-npn-with-sni-context-switch-server-extra] | ||
| 268 | NPNProtocols = foo | ||
| 269 | ServerNameCallback = IgnoreMismatch | ||
| 270 | |||
| 271 | -[7-npn-with-sni-context-switch-server2-extra] | ||
| 272 | +[9-npn-with-sni-context-switch-server2-extra] | ||
| 273 | NPNProtocols = bar | ||
| 274 | |||
| 275 | -[7-npn-with-sni-context-switch-client-extra] | ||
| 276 | +[9-npn-with-sni-context-switch-client-extra] | ||
| 277 | NPNProtocols = foo,bar | ||
| 278 | ServerName = server2 | ||
| 279 | |||
| 280 | |||
| 281 | # =========================================================== | ||
| 282 | |||
| 283 | -[8-npn-selected-sni-server-supports-npn] | ||
| 284 | -ssl_conf = 8-npn-selected-sni-server-supports-npn-ssl | ||
| 285 | +[10-npn-selected-sni-server-supports-npn] | ||
| 286 | +ssl_conf = 10-npn-selected-sni-server-supports-npn-ssl | ||
| 287 | |||
| 288 | -[8-npn-selected-sni-server-supports-npn-ssl] | ||
| 289 | -server = 8-npn-selected-sni-server-supports-npn-server | ||
| 290 | -client = 8-npn-selected-sni-server-supports-npn-client | ||
| 291 | -server2 = 8-npn-selected-sni-server-supports-npn-server2 | ||
| 292 | +[10-npn-selected-sni-server-supports-npn-ssl] | ||
| 293 | +server = 10-npn-selected-sni-server-supports-npn-server | ||
| 294 | +client = 10-npn-selected-sni-server-supports-npn-client | ||
| 295 | +server2 = 10-npn-selected-sni-server-supports-npn-server2 | ||
| 296 | |||
| 297 | -[8-npn-selected-sni-server-supports-npn-server] | ||
| 298 | +[10-npn-selected-sni-server-supports-npn-server] | ||
| 299 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 300 | CipherString = DEFAULT | ||
| 301 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 302 | |||
| 303 | -[8-npn-selected-sni-server-supports-npn-server2] | ||
| 304 | +[10-npn-selected-sni-server-supports-npn-server2] | ||
| 305 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 306 | CipherString = DEFAULT | ||
| 307 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 308 | |||
| 309 | -[8-npn-selected-sni-server-supports-npn-client] | ||
| 310 | +[10-npn-selected-sni-server-supports-npn-client] | ||
| 311 | CipherString = DEFAULT | ||
| 312 | MaxProtocol = TLSv1.2 | ||
| 313 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 314 | VerifyMode = Peer | ||
| 315 | |||
| 316 | -[test-8] | ||
| 317 | +[test-10] | ||
| 318 | ExpectedNPNProtocol = bar | ||
| 319 | ExpectedServerName = server2 | ||
| 320 | -server = 8-npn-selected-sni-server-supports-npn-server-extra | ||
| 321 | -server2 = 8-npn-selected-sni-server-supports-npn-server2-extra | ||
| 322 | -client = 8-npn-selected-sni-server-supports-npn-client-extra | ||
| 323 | +server = 10-npn-selected-sni-server-supports-npn-server-extra | ||
| 324 | +server2 = 10-npn-selected-sni-server-supports-npn-server2-extra | ||
| 325 | +client = 10-npn-selected-sni-server-supports-npn-client-extra | ||
| 326 | |||
| 327 | -[8-npn-selected-sni-server-supports-npn-server-extra] | ||
| 328 | +[10-npn-selected-sni-server-supports-npn-server-extra] | ||
| 329 | ServerNameCallback = IgnoreMismatch | ||
| 330 | |||
| 331 | -[8-npn-selected-sni-server-supports-npn-server2-extra] | ||
| 332 | +[10-npn-selected-sni-server-supports-npn-server2-extra] | ||
| 333 | NPNProtocols = bar | ||
| 334 | |||
| 335 | -[8-npn-selected-sni-server-supports-npn-client-extra] | ||
| 336 | +[10-npn-selected-sni-server-supports-npn-client-extra] | ||
| 337 | NPNProtocols = foo,bar | ||
| 338 | ServerName = server2 | ||
| 339 | |||
| 340 | |||
| 341 | # =========================================================== | ||
| 342 | |||
| 343 | -[9-npn-selected-sni-server-does-not-support-npn] | ||
| 344 | -ssl_conf = 9-npn-selected-sni-server-does-not-support-npn-ssl | ||
| 345 | +[11-npn-selected-sni-server-does-not-support-npn] | ||
| 346 | +ssl_conf = 11-npn-selected-sni-server-does-not-support-npn-ssl | ||
| 347 | |||
| 348 | -[9-npn-selected-sni-server-does-not-support-npn-ssl] | ||
| 349 | -server = 9-npn-selected-sni-server-does-not-support-npn-server | ||
| 350 | -client = 9-npn-selected-sni-server-does-not-support-npn-client | ||
| 351 | -server2 = 9-npn-selected-sni-server-does-not-support-npn-server2 | ||
| 352 | +[11-npn-selected-sni-server-does-not-support-npn-ssl] | ||
| 353 | +server = 11-npn-selected-sni-server-does-not-support-npn-server | ||
| 354 | +client = 11-npn-selected-sni-server-does-not-support-npn-client | ||
| 355 | +server2 = 11-npn-selected-sni-server-does-not-support-npn-server2 | ||
| 356 | |||
| 357 | -[9-npn-selected-sni-server-does-not-support-npn-server] | ||
| 358 | +[11-npn-selected-sni-server-does-not-support-npn-server] | ||
| 359 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 360 | CipherString = DEFAULT | ||
| 361 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 362 | |||
| 363 | -[9-npn-selected-sni-server-does-not-support-npn-server2] | ||
| 364 | +[11-npn-selected-sni-server-does-not-support-npn-server2] | ||
| 365 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 366 | CipherString = DEFAULT | ||
| 367 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 368 | |||
| 369 | -[9-npn-selected-sni-server-does-not-support-npn-client] | ||
| 370 | +[11-npn-selected-sni-server-does-not-support-npn-client] | ||
| 371 | CipherString = DEFAULT | ||
| 372 | MaxProtocol = TLSv1.2 | ||
| 373 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 374 | VerifyMode = Peer | ||
| 375 | |||
| 376 | -[test-9] | ||
| 377 | +[test-11] | ||
| 378 | ExpectedServerName = server2 | ||
| 379 | -server = 9-npn-selected-sni-server-does-not-support-npn-server-extra | ||
| 380 | -client = 9-npn-selected-sni-server-does-not-support-npn-client-extra | ||
| 381 | +server = 11-npn-selected-sni-server-does-not-support-npn-server-extra | ||
| 382 | +client = 11-npn-selected-sni-server-does-not-support-npn-client-extra | ||
| 383 | |||
| 384 | -[9-npn-selected-sni-server-does-not-support-npn-server-extra] | ||
| 385 | +[11-npn-selected-sni-server-does-not-support-npn-server-extra] | ||
| 386 | NPNProtocols = bar | ||
| 387 | ServerNameCallback = IgnoreMismatch | ||
| 388 | |||
| 389 | -[9-npn-selected-sni-server-does-not-support-npn-client-extra] | ||
| 390 | +[11-npn-selected-sni-server-does-not-support-npn-client-extra] | ||
| 391 | NPNProtocols = foo,bar | ||
| 392 | ServerName = server2 | ||
| 393 | |||
| 394 | |||
| 395 | # =========================================================== | ||
| 396 | |||
| 397 | -[10-alpn-preferred-over-npn] | ||
| 398 | -ssl_conf = 10-alpn-preferred-over-npn-ssl | ||
| 399 | +[12-alpn-preferred-over-npn] | ||
| 400 | +ssl_conf = 12-alpn-preferred-over-npn-ssl | ||
| 401 | |||
| 402 | -[10-alpn-preferred-over-npn-ssl] | ||
| 403 | -server = 10-alpn-preferred-over-npn-server | ||
| 404 | -client = 10-alpn-preferred-over-npn-client | ||
| 405 | +[12-alpn-preferred-over-npn-ssl] | ||
| 406 | +server = 12-alpn-preferred-over-npn-server | ||
| 407 | +client = 12-alpn-preferred-over-npn-client | ||
| 408 | |||
| 409 | -[10-alpn-preferred-over-npn-server] | ||
| 410 | +[12-alpn-preferred-over-npn-server] | ||
| 411 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 412 | CipherString = DEFAULT | ||
| 413 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 414 | |||
| 415 | -[10-alpn-preferred-over-npn-client] | ||
| 416 | +[12-alpn-preferred-over-npn-client] | ||
| 417 | CipherString = DEFAULT | ||
| 418 | MaxProtocol = TLSv1.2 | ||
| 419 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 420 | VerifyMode = Peer | ||
| 421 | |||
| 422 | -[test-10] | ||
| 423 | +[test-12] | ||
| 424 | ExpectedALPNProtocol = foo | ||
| 425 | -server = 10-alpn-preferred-over-npn-server-extra | ||
| 426 | -client = 10-alpn-preferred-over-npn-client-extra | ||
| 427 | +server = 12-alpn-preferred-over-npn-server-extra | ||
| 428 | +client = 12-alpn-preferred-over-npn-client-extra | ||
| 429 | |||
| 430 | -[10-alpn-preferred-over-npn-server-extra] | ||
| 431 | +[12-alpn-preferred-over-npn-server-extra] | ||
| 432 | ALPNProtocols = foo | ||
| 433 | NPNProtocols = bar | ||
| 434 | |||
| 435 | -[10-alpn-preferred-over-npn-client-extra] | ||
| 436 | +[12-alpn-preferred-over-npn-client-extra] | ||
| 437 | ALPNProtocols = foo | ||
| 438 | NPNProtocols = bar | ||
| 439 | |||
| 440 | |||
| 441 | # =========================================================== | ||
| 442 | |||
| 443 | -[11-sni-npn-preferred-over-alpn] | ||
| 444 | -ssl_conf = 11-sni-npn-preferred-over-alpn-ssl | ||
| 445 | +[13-sni-npn-preferred-over-alpn] | ||
| 446 | +ssl_conf = 13-sni-npn-preferred-over-alpn-ssl | ||
| 447 | |||
| 448 | -[11-sni-npn-preferred-over-alpn-ssl] | ||
| 449 | -server = 11-sni-npn-preferred-over-alpn-server | ||
| 450 | -client = 11-sni-npn-preferred-over-alpn-client | ||
| 451 | -server2 = 11-sni-npn-preferred-over-alpn-server2 | ||
| 452 | +[13-sni-npn-preferred-over-alpn-ssl] | ||
| 453 | +server = 13-sni-npn-preferred-over-alpn-server | ||
| 454 | +client = 13-sni-npn-preferred-over-alpn-client | ||
| 455 | +server2 = 13-sni-npn-preferred-over-alpn-server2 | ||
| 456 | |||
| 457 | -[11-sni-npn-preferred-over-alpn-server] | ||
| 458 | +[13-sni-npn-preferred-over-alpn-server] | ||
| 459 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 460 | CipherString = DEFAULT | ||
| 461 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 462 | |||
| 463 | -[11-sni-npn-preferred-over-alpn-server2] | ||
| 464 | +[13-sni-npn-preferred-over-alpn-server2] | ||
| 465 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 466 | CipherString = DEFAULT | ||
| 467 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 468 | |||
| 469 | -[11-sni-npn-preferred-over-alpn-client] | ||
| 470 | +[13-sni-npn-preferred-over-alpn-client] | ||
| 471 | CipherString = DEFAULT | ||
| 472 | MaxProtocol = TLSv1.2 | ||
| 473 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 474 | VerifyMode = Peer | ||
| 475 | |||
| 476 | -[test-11] | ||
| 477 | +[test-13] | ||
| 478 | ExpectedNPNProtocol = bar | ||
| 479 | ExpectedServerName = server2 | ||
| 480 | -server = 11-sni-npn-preferred-over-alpn-server-extra | ||
| 481 | -server2 = 11-sni-npn-preferred-over-alpn-server2-extra | ||
| 482 | -client = 11-sni-npn-preferred-over-alpn-client-extra | ||
| 483 | +server = 13-sni-npn-preferred-over-alpn-server-extra | ||
| 484 | +server2 = 13-sni-npn-preferred-over-alpn-server2-extra | ||
| 485 | +client = 13-sni-npn-preferred-over-alpn-client-extra | ||
| 486 | |||
| 487 | -[11-sni-npn-preferred-over-alpn-server-extra] | ||
| 488 | +[13-sni-npn-preferred-over-alpn-server-extra] | ||
| 489 | ALPNProtocols = foo | ||
| 490 | ServerNameCallback = IgnoreMismatch | ||
| 491 | |||
| 492 | -[11-sni-npn-preferred-over-alpn-server2-extra] | ||
| 493 | +[13-sni-npn-preferred-over-alpn-server2-extra] | ||
| 494 | NPNProtocols = bar | ||
| 495 | |||
| 496 | -[11-sni-npn-preferred-over-alpn-client-extra] | ||
| 497 | +[13-sni-npn-preferred-over-alpn-client-extra] | ||
| 498 | ALPNProtocols = foo | ||
| 499 | NPNProtocols = bar | ||
| 500 | ServerName = server2 | ||
| 501 | @@ -460,356 +527,356 @@ ServerName = server2 | ||
| 502 | |||
| 503 | # =========================================================== | ||
| 504 | |||
| 505 | -[12-npn-simple-resumption] | ||
| 506 | -ssl_conf = 12-npn-simple-resumption-ssl | ||
| 507 | +[14-npn-simple-resumption] | ||
| 508 | +ssl_conf = 14-npn-simple-resumption-ssl | ||
| 509 | |||
| 510 | -[12-npn-simple-resumption-ssl] | ||
| 511 | -server = 12-npn-simple-resumption-server | ||
| 512 | -client = 12-npn-simple-resumption-client | ||
| 513 | -resume-server = 12-npn-simple-resumption-server | ||
| 514 | -resume-client = 12-npn-simple-resumption-client | ||
| 515 | +[14-npn-simple-resumption-ssl] | ||
| 516 | +server = 14-npn-simple-resumption-server | ||
| 517 | +client = 14-npn-simple-resumption-client | ||
| 518 | +resume-server = 14-npn-simple-resumption-server | ||
| 519 | +resume-client = 14-npn-simple-resumption-client | ||
| 520 | |||
| 521 | -[12-npn-simple-resumption-server] | ||
| 522 | +[14-npn-simple-resumption-server] | ||
| 523 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 524 | CipherString = DEFAULT | ||
| 525 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 526 | |||
| 527 | -[12-npn-simple-resumption-client] | ||
| 528 | +[14-npn-simple-resumption-client] | ||
| 529 | CipherString = DEFAULT | ||
| 530 | MaxProtocol = TLSv1.2 | ||
| 531 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 532 | VerifyMode = Peer | ||
| 533 | |||
| 534 | -[test-12] | ||
| 535 | +[test-14] | ||
| 536 | ExpectedNPNProtocol = foo | ||
| 537 | HandshakeMode = Resume | ||
| 538 | ResumptionExpected = Yes | ||
| 539 | -server = 12-npn-simple-resumption-server-extra | ||
| 540 | -resume-server = 12-npn-simple-resumption-server-extra | ||
| 541 | -client = 12-npn-simple-resumption-client-extra | ||
| 542 | -resume-client = 12-npn-simple-resumption-client-extra | ||
| 543 | +server = 14-npn-simple-resumption-server-extra | ||
| 544 | +resume-server = 14-npn-simple-resumption-server-extra | ||
| 545 | +client = 14-npn-simple-resumption-client-extra | ||
| 546 | +resume-client = 14-npn-simple-resumption-client-extra | ||
| 547 | |||
| 548 | -[12-npn-simple-resumption-server-extra] | ||
| 549 | +[14-npn-simple-resumption-server-extra] | ||
| 550 | NPNProtocols = foo | ||
| 551 | |||
| 552 | -[12-npn-simple-resumption-client-extra] | ||
| 553 | +[14-npn-simple-resumption-client-extra] | ||
| 554 | NPNProtocols = foo | ||
| 555 | |||
| 556 | |||
| 557 | # =========================================================== | ||
| 558 | |||
| 559 | -[13-npn-server-switch-resumption] | ||
| 560 | -ssl_conf = 13-npn-server-switch-resumption-ssl | ||
| 561 | +[15-npn-server-switch-resumption] | ||
| 562 | +ssl_conf = 15-npn-server-switch-resumption-ssl | ||
| 563 | |||
| 564 | -[13-npn-server-switch-resumption-ssl] | ||
| 565 | -server = 13-npn-server-switch-resumption-server | ||
| 566 | -client = 13-npn-server-switch-resumption-client | ||
| 567 | -resume-server = 13-npn-server-switch-resumption-resume-server | ||
| 568 | -resume-client = 13-npn-server-switch-resumption-client | ||
| 569 | +[15-npn-server-switch-resumption-ssl] | ||
| 570 | +server = 15-npn-server-switch-resumption-server | ||
| 571 | +client = 15-npn-server-switch-resumption-client | ||
| 572 | +resume-server = 15-npn-server-switch-resumption-resume-server | ||
| 573 | +resume-client = 15-npn-server-switch-resumption-client | ||
| 574 | |||
| 575 | -[13-npn-server-switch-resumption-server] | ||
| 576 | +[15-npn-server-switch-resumption-server] | ||
| 577 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 578 | CipherString = DEFAULT | ||
| 579 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 580 | |||
| 581 | -[13-npn-server-switch-resumption-resume-server] | ||
| 582 | +[15-npn-server-switch-resumption-resume-server] | ||
| 583 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 584 | CipherString = DEFAULT | ||
| 585 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 586 | |||
| 587 | -[13-npn-server-switch-resumption-client] | ||
| 588 | +[15-npn-server-switch-resumption-client] | ||
| 589 | CipherString = DEFAULT | ||
| 590 | MaxProtocol = TLSv1.2 | ||
| 591 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 592 | VerifyMode = Peer | ||
| 593 | |||
| 594 | -[test-13] | ||
| 595 | +[test-15] | ||
| 596 | ExpectedNPNProtocol = baz | ||
| 597 | HandshakeMode = Resume | ||
| 598 | ResumptionExpected = Yes | ||
| 599 | -server = 13-npn-server-switch-resumption-server-extra | ||
| 600 | -resume-server = 13-npn-server-switch-resumption-resume-server-extra | ||
| 601 | -client = 13-npn-server-switch-resumption-client-extra | ||
| 602 | -resume-client = 13-npn-server-switch-resumption-client-extra | ||
| 603 | +server = 15-npn-server-switch-resumption-server-extra | ||
| 604 | +resume-server = 15-npn-server-switch-resumption-resume-server-extra | ||
| 605 | +client = 15-npn-server-switch-resumption-client-extra | ||
| 606 | +resume-client = 15-npn-server-switch-resumption-client-extra | ||
| 607 | |||
| 608 | -[13-npn-server-switch-resumption-server-extra] | ||
| 609 | +[15-npn-server-switch-resumption-server-extra] | ||
| 610 | NPNProtocols = bar,foo | ||
| 611 | |||
| 612 | -[13-npn-server-switch-resumption-resume-server-extra] | ||
| 613 | +[15-npn-server-switch-resumption-resume-server-extra] | ||
| 614 | NPNProtocols = baz,foo | ||
| 615 | |||
| 616 | -[13-npn-server-switch-resumption-client-extra] | ||
| 617 | +[15-npn-server-switch-resumption-client-extra] | ||
| 618 | NPNProtocols = foo,bar,baz | ||
| 619 | |||
| 620 | |||
| 621 | # =========================================================== | ||
| 622 | |||
| 623 | -[14-npn-client-switch-resumption] | ||
| 624 | -ssl_conf = 14-npn-client-switch-resumption-ssl | ||
| 625 | +[16-npn-client-switch-resumption] | ||
| 626 | +ssl_conf = 16-npn-client-switch-resumption-ssl | ||
| 627 | |||
| 628 | -[14-npn-client-switch-resumption-ssl] | ||
| 629 | -server = 14-npn-client-switch-resumption-server | ||
| 630 | -client = 14-npn-client-switch-resumption-client | ||
| 631 | -resume-server = 14-npn-client-switch-resumption-server | ||
| 632 | -resume-client = 14-npn-client-switch-resumption-resume-client | ||
| 633 | +[16-npn-client-switch-resumption-ssl] | ||
| 634 | +server = 16-npn-client-switch-resumption-server | ||
| 635 | +client = 16-npn-client-switch-resumption-client | ||
| 636 | +resume-server = 16-npn-client-switch-resumption-server | ||
| 637 | +resume-client = 16-npn-client-switch-resumption-resume-client | ||
| 638 | |||
| 639 | -[14-npn-client-switch-resumption-server] | ||
| 640 | +[16-npn-client-switch-resumption-server] | ||
| 641 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 642 | CipherString = DEFAULT | ||
| 643 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 644 | |||
| 645 | -[14-npn-client-switch-resumption-client] | ||
| 646 | +[16-npn-client-switch-resumption-client] | ||
| 647 | CipherString = DEFAULT | ||
| 648 | MaxProtocol = TLSv1.2 | ||
| 649 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 650 | VerifyMode = Peer | ||
| 651 | |||
| 652 | -[14-npn-client-switch-resumption-resume-client] | ||
| 653 | +[16-npn-client-switch-resumption-resume-client] | ||
| 654 | CipherString = DEFAULT | ||
| 655 | MaxProtocol = TLSv1.2 | ||
| 656 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 657 | VerifyMode = Peer | ||
| 658 | |||
| 659 | -[test-14] | ||
| 660 | +[test-16] | ||
| 661 | ExpectedNPNProtocol = bar | ||
| 662 | HandshakeMode = Resume | ||
| 663 | ResumptionExpected = Yes | ||
| 664 | -server = 14-npn-client-switch-resumption-server-extra | ||
| 665 | -resume-server = 14-npn-client-switch-resumption-server-extra | ||
| 666 | -client = 14-npn-client-switch-resumption-client-extra | ||
| 667 | -resume-client = 14-npn-client-switch-resumption-resume-client-extra | ||
| 668 | +server = 16-npn-client-switch-resumption-server-extra | ||
| 669 | +resume-server = 16-npn-client-switch-resumption-server-extra | ||
| 670 | +client = 16-npn-client-switch-resumption-client-extra | ||
| 671 | +resume-client = 16-npn-client-switch-resumption-resume-client-extra | ||
| 672 | |||
| 673 | -[14-npn-client-switch-resumption-server-extra] | ||
| 674 | +[16-npn-client-switch-resumption-server-extra] | ||
| 675 | NPNProtocols = foo,bar,baz | ||
| 676 | |||
| 677 | -[14-npn-client-switch-resumption-client-extra] | ||
| 678 | +[16-npn-client-switch-resumption-client-extra] | ||
| 679 | NPNProtocols = foo,baz | ||
| 680 | |||
| 681 | -[14-npn-client-switch-resumption-resume-client-extra] | ||
| 682 | +[16-npn-client-switch-resumption-resume-client-extra] | ||
| 683 | NPNProtocols = bar,baz | ||
| 684 | |||
| 685 | |||
| 686 | # =========================================================== | ||
| 687 | |||
| 688 | -[15-npn-client-first-pref-on-mismatch-resumption] | ||
| 689 | -ssl_conf = 15-npn-client-first-pref-on-mismatch-resumption-ssl | ||
| 690 | +[17-npn-client-first-pref-on-mismatch-resumption] | ||
| 691 | +ssl_conf = 17-npn-client-first-pref-on-mismatch-resumption-ssl | ||
| 692 | |||
| 693 | -[15-npn-client-first-pref-on-mismatch-resumption-ssl] | ||
| 694 | -server = 15-npn-client-first-pref-on-mismatch-resumption-server | ||
| 695 | -client = 15-npn-client-first-pref-on-mismatch-resumption-client | ||
| 696 | -resume-server = 15-npn-client-first-pref-on-mismatch-resumption-resume-server | ||
| 697 | -resume-client = 15-npn-client-first-pref-on-mismatch-resumption-client | ||
| 698 | +[17-npn-client-first-pref-on-mismatch-resumption-ssl] | ||
| 699 | +server = 17-npn-client-first-pref-on-mismatch-resumption-server | ||
| 700 | +client = 17-npn-client-first-pref-on-mismatch-resumption-client | ||
| 701 | +resume-server = 17-npn-client-first-pref-on-mismatch-resumption-resume-server | ||
| 702 | +resume-client = 17-npn-client-first-pref-on-mismatch-resumption-client | ||
| 703 | |||
| 704 | -[15-npn-client-first-pref-on-mismatch-resumption-server] | ||
| 705 | +[17-npn-client-first-pref-on-mismatch-resumption-server] | ||
| 706 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 707 | CipherString = DEFAULT | ||
| 708 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 709 | |||
| 710 | -[15-npn-client-first-pref-on-mismatch-resumption-resume-server] | ||
| 711 | +[17-npn-client-first-pref-on-mismatch-resumption-resume-server] | ||
| 712 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 713 | CipherString = DEFAULT | ||
| 714 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 715 | |||
| 716 | -[15-npn-client-first-pref-on-mismatch-resumption-client] | ||
| 717 | +[17-npn-client-first-pref-on-mismatch-resumption-client] | ||
| 718 | CipherString = DEFAULT | ||
| 719 | MaxProtocol = TLSv1.2 | ||
| 720 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 721 | VerifyMode = Peer | ||
| 722 | |||
| 723 | -[test-15] | ||
| 724 | +[test-17] | ||
| 725 | ExpectedNPNProtocol = foo | ||
| 726 | HandshakeMode = Resume | ||
| 727 | ResumptionExpected = Yes | ||
| 728 | -server = 15-npn-client-first-pref-on-mismatch-resumption-server-extra | ||
| 729 | -resume-server = 15-npn-client-first-pref-on-mismatch-resumption-resume-server-extra | ||
| 730 | -client = 15-npn-client-first-pref-on-mismatch-resumption-client-extra | ||
| 731 | -resume-client = 15-npn-client-first-pref-on-mismatch-resumption-client-extra | ||
| 732 | +server = 17-npn-client-first-pref-on-mismatch-resumption-server-extra | ||
| 733 | +resume-server = 17-npn-client-first-pref-on-mismatch-resumption-resume-server-extra | ||
| 734 | +client = 17-npn-client-first-pref-on-mismatch-resumption-client-extra | ||
| 735 | +resume-client = 17-npn-client-first-pref-on-mismatch-resumption-client-extra | ||
| 736 | |||
| 737 | -[15-npn-client-first-pref-on-mismatch-resumption-server-extra] | ||
| 738 | +[17-npn-client-first-pref-on-mismatch-resumption-server-extra] | ||
| 739 | NPNProtocols = bar | ||
| 740 | |||
| 741 | -[15-npn-client-first-pref-on-mismatch-resumption-resume-server-extra] | ||
| 742 | +[17-npn-client-first-pref-on-mismatch-resumption-resume-server-extra] | ||
| 743 | NPNProtocols = baz | ||
| 744 | |||
| 745 | -[15-npn-client-first-pref-on-mismatch-resumption-client-extra] | ||
| 746 | +[17-npn-client-first-pref-on-mismatch-resumption-client-extra] | ||
| 747 | NPNProtocols = foo,bar | ||
| 748 | |||
| 749 | |||
| 750 | # =========================================================== | ||
| 751 | |||
| 752 | -[16-npn-no-server-support-resumption] | ||
| 753 | -ssl_conf = 16-npn-no-server-support-resumption-ssl | ||
| 754 | +[18-npn-no-server-support-resumption] | ||
| 755 | +ssl_conf = 18-npn-no-server-support-resumption-ssl | ||
| 756 | |||
| 757 | -[16-npn-no-server-support-resumption-ssl] | ||
| 758 | -server = 16-npn-no-server-support-resumption-server | ||
| 759 | -client = 16-npn-no-server-support-resumption-client | ||
| 760 | -resume-server = 16-npn-no-server-support-resumption-resume-server | ||
| 761 | -resume-client = 16-npn-no-server-support-resumption-client | ||
| 762 | +[18-npn-no-server-support-resumption-ssl] | ||
| 763 | +server = 18-npn-no-server-support-resumption-server | ||
| 764 | +client = 18-npn-no-server-support-resumption-client | ||
| 765 | +resume-server = 18-npn-no-server-support-resumption-resume-server | ||
| 766 | +resume-client = 18-npn-no-server-support-resumption-client | ||
| 767 | |||
| 768 | -[16-npn-no-server-support-resumption-server] | ||
| 769 | +[18-npn-no-server-support-resumption-server] | ||
| 770 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 771 | CipherString = DEFAULT | ||
| 772 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 773 | |||
| 774 | -[16-npn-no-server-support-resumption-resume-server] | ||
| 775 | +[18-npn-no-server-support-resumption-resume-server] | ||
| 776 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 777 | CipherString = DEFAULT | ||
| 778 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 779 | |||
| 780 | -[16-npn-no-server-support-resumption-client] | ||
| 781 | +[18-npn-no-server-support-resumption-client] | ||
| 782 | CipherString = DEFAULT | ||
| 783 | MaxProtocol = TLSv1.2 | ||
| 784 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 785 | VerifyMode = Peer | ||
| 786 | |||
| 787 | -[test-16] | ||
| 788 | +[test-18] | ||
| 789 | HandshakeMode = Resume | ||
| 790 | ResumptionExpected = Yes | ||
| 791 | -server = 16-npn-no-server-support-resumption-server-extra | ||
| 792 | -client = 16-npn-no-server-support-resumption-client-extra | ||
| 793 | -resume-client = 16-npn-no-server-support-resumption-client-extra | ||
| 794 | +server = 18-npn-no-server-support-resumption-server-extra | ||
| 795 | +client = 18-npn-no-server-support-resumption-client-extra | ||
| 796 | +resume-client = 18-npn-no-server-support-resumption-client-extra | ||
| 797 | |||
| 798 | -[16-npn-no-server-support-resumption-server-extra] | ||
| 799 | +[18-npn-no-server-support-resumption-server-extra] | ||
| 800 | NPNProtocols = foo | ||
| 801 | |||
| 802 | -[16-npn-no-server-support-resumption-client-extra] | ||
| 803 | +[18-npn-no-server-support-resumption-client-extra] | ||
| 804 | NPNProtocols = foo | ||
| 805 | |||
| 806 | |||
| 807 | # =========================================================== | ||
| 808 | |||
| 809 | -[17-npn-no-client-support-resumption] | ||
| 810 | -ssl_conf = 17-npn-no-client-support-resumption-ssl | ||
| 811 | +[19-npn-no-client-support-resumption] | ||
| 812 | +ssl_conf = 19-npn-no-client-support-resumption-ssl | ||
| 813 | |||
| 814 | -[17-npn-no-client-support-resumption-ssl] | ||
| 815 | -server = 17-npn-no-client-support-resumption-server | ||
| 816 | -client = 17-npn-no-client-support-resumption-client | ||
| 817 | -resume-server = 17-npn-no-client-support-resumption-server | ||
| 818 | -resume-client = 17-npn-no-client-support-resumption-resume-client | ||
| 819 | +[19-npn-no-client-support-resumption-ssl] | ||
| 820 | +server = 19-npn-no-client-support-resumption-server | ||
| 821 | +client = 19-npn-no-client-support-resumption-client | ||
| 822 | +resume-server = 19-npn-no-client-support-resumption-server | ||
| 823 | +resume-client = 19-npn-no-client-support-resumption-resume-client | ||
| 824 | |||
| 825 | -[17-npn-no-client-support-resumption-server] | ||
| 826 | +[19-npn-no-client-support-resumption-server] | ||
| 827 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 828 | CipherString = DEFAULT | ||
| 829 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 830 | |||
| 831 | -[17-npn-no-client-support-resumption-client] | ||
| 832 | +[19-npn-no-client-support-resumption-client] | ||
| 833 | CipherString = DEFAULT | ||
| 834 | MaxProtocol = TLSv1.2 | ||
| 835 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 836 | VerifyMode = Peer | ||
| 837 | |||
| 838 | -[17-npn-no-client-support-resumption-resume-client] | ||
| 839 | +[19-npn-no-client-support-resumption-resume-client] | ||
| 840 | CipherString = DEFAULT | ||
| 841 | MaxProtocol = TLSv1.2 | ||
| 842 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 843 | VerifyMode = Peer | ||
| 844 | |||
| 845 | -[test-17] | ||
| 846 | +[test-19] | ||
| 847 | HandshakeMode = Resume | ||
| 848 | ResumptionExpected = Yes | ||
| 849 | -server = 17-npn-no-client-support-resumption-server-extra | ||
| 850 | -resume-server = 17-npn-no-client-support-resumption-server-extra | ||
| 851 | -client = 17-npn-no-client-support-resumption-client-extra | ||
| 852 | +server = 19-npn-no-client-support-resumption-server-extra | ||
| 853 | +resume-server = 19-npn-no-client-support-resumption-server-extra | ||
| 854 | +client = 19-npn-no-client-support-resumption-client-extra | ||
| 855 | |||
| 856 | -[17-npn-no-client-support-resumption-server-extra] | ||
| 857 | +[19-npn-no-client-support-resumption-server-extra] | ||
| 858 | NPNProtocols = foo | ||
| 859 | |||
| 860 | -[17-npn-no-client-support-resumption-client-extra] | ||
| 861 | +[19-npn-no-client-support-resumption-client-extra] | ||
| 862 | NPNProtocols = foo | ||
| 863 | |||
| 864 | |||
| 865 | # =========================================================== | ||
| 866 | |||
| 867 | -[18-alpn-preferred-over-npn-resumption] | ||
| 868 | -ssl_conf = 18-alpn-preferred-over-npn-resumption-ssl | ||
| 869 | +[20-alpn-preferred-over-npn-resumption] | ||
| 870 | +ssl_conf = 20-alpn-preferred-over-npn-resumption-ssl | ||
| 871 | |||
| 872 | -[18-alpn-preferred-over-npn-resumption-ssl] | ||
| 873 | -server = 18-alpn-preferred-over-npn-resumption-server | ||
| 874 | -client = 18-alpn-preferred-over-npn-resumption-client | ||
| 875 | -resume-server = 18-alpn-preferred-over-npn-resumption-resume-server | ||
| 876 | -resume-client = 18-alpn-preferred-over-npn-resumption-client | ||
| 877 | +[20-alpn-preferred-over-npn-resumption-ssl] | ||
| 878 | +server = 20-alpn-preferred-over-npn-resumption-server | ||
| 879 | +client = 20-alpn-preferred-over-npn-resumption-client | ||
| 880 | +resume-server = 20-alpn-preferred-over-npn-resumption-resume-server | ||
| 881 | +resume-client = 20-alpn-preferred-over-npn-resumption-client | ||
| 882 | |||
| 883 | -[18-alpn-preferred-over-npn-resumption-server] | ||
| 884 | +[20-alpn-preferred-over-npn-resumption-server] | ||
| 885 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 886 | CipherString = DEFAULT | ||
| 887 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 888 | |||
| 889 | -[18-alpn-preferred-over-npn-resumption-resume-server] | ||
| 890 | +[20-alpn-preferred-over-npn-resumption-resume-server] | ||
| 891 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 892 | CipherString = DEFAULT | ||
| 893 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 894 | |||
| 895 | -[18-alpn-preferred-over-npn-resumption-client] | ||
| 896 | +[20-alpn-preferred-over-npn-resumption-client] | ||
| 897 | CipherString = DEFAULT | ||
| 898 | MaxProtocol = TLSv1.2 | ||
| 899 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 900 | VerifyMode = Peer | ||
| 901 | |||
| 902 | -[test-18] | ||
| 903 | +[test-20] | ||
| 904 | ExpectedALPNProtocol = foo | ||
| 905 | HandshakeMode = Resume | ||
| 906 | ResumptionExpected = Yes | ||
| 907 | -server = 18-alpn-preferred-over-npn-resumption-server-extra | ||
| 908 | -resume-server = 18-alpn-preferred-over-npn-resumption-resume-server-extra | ||
| 909 | -client = 18-alpn-preferred-over-npn-resumption-client-extra | ||
| 910 | -resume-client = 18-alpn-preferred-over-npn-resumption-client-extra | ||
| 911 | +server = 20-alpn-preferred-over-npn-resumption-server-extra | ||
| 912 | +resume-server = 20-alpn-preferred-over-npn-resumption-resume-server-extra | ||
| 913 | +client = 20-alpn-preferred-over-npn-resumption-client-extra | ||
| 914 | +resume-client = 20-alpn-preferred-over-npn-resumption-client-extra | ||
| 915 | |||
| 916 | -[18-alpn-preferred-over-npn-resumption-server-extra] | ||
| 917 | +[20-alpn-preferred-over-npn-resumption-server-extra] | ||
| 918 | NPNProtocols = bar | ||
| 919 | |||
| 920 | -[18-alpn-preferred-over-npn-resumption-resume-server-extra] | ||
| 921 | +[20-alpn-preferred-over-npn-resumption-resume-server-extra] | ||
| 922 | ALPNProtocols = foo | ||
| 923 | NPNProtocols = baz | ||
| 924 | |||
| 925 | -[18-alpn-preferred-over-npn-resumption-client-extra] | ||
| 926 | +[20-alpn-preferred-over-npn-resumption-client-extra] | ||
| 927 | ALPNProtocols = foo | ||
| 928 | NPNProtocols = bar,baz | ||
| 929 | |||
| 930 | |||
| 931 | # =========================================================== | ||
| 932 | |||
| 933 | -[19-npn-used-if-alpn-not-supported-resumption] | ||
| 934 | -ssl_conf = 19-npn-used-if-alpn-not-supported-resumption-ssl | ||
| 935 | +[21-npn-used-if-alpn-not-supported-resumption] | ||
| 936 | +ssl_conf = 21-npn-used-if-alpn-not-supported-resumption-ssl | ||
| 937 | |||
| 938 | -[19-npn-used-if-alpn-not-supported-resumption-ssl] | ||
| 939 | -server = 19-npn-used-if-alpn-not-supported-resumption-server | ||
| 940 | -client = 19-npn-used-if-alpn-not-supported-resumption-client | ||
| 941 | -resume-server = 19-npn-used-if-alpn-not-supported-resumption-resume-server | ||
| 942 | -resume-client = 19-npn-used-if-alpn-not-supported-resumption-client | ||
| 943 | +[21-npn-used-if-alpn-not-supported-resumption-ssl] | ||
| 944 | +server = 21-npn-used-if-alpn-not-supported-resumption-server | ||
| 945 | +client = 21-npn-used-if-alpn-not-supported-resumption-client | ||
| 946 | +resume-server = 21-npn-used-if-alpn-not-supported-resumption-resume-server | ||
| 947 | +resume-client = 21-npn-used-if-alpn-not-supported-resumption-client | ||
| 948 | |||
| 949 | -[19-npn-used-if-alpn-not-supported-resumption-server] | ||
| 950 | +[21-npn-used-if-alpn-not-supported-resumption-server] | ||
| 951 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 952 | CipherString = DEFAULT | ||
| 953 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 954 | |||
| 955 | -[19-npn-used-if-alpn-not-supported-resumption-resume-server] | ||
| 956 | +[21-npn-used-if-alpn-not-supported-resumption-resume-server] | ||
| 957 | Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 958 | CipherString = DEFAULT | ||
| 959 | PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 960 | |||
| 961 | -[19-npn-used-if-alpn-not-supported-resumption-client] | ||
| 962 | +[21-npn-used-if-alpn-not-supported-resumption-client] | ||
| 963 | CipherString = DEFAULT | ||
| 964 | MaxProtocol = TLSv1.2 | ||
| 965 | VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 966 | VerifyMode = Peer | ||
| 967 | |||
| 968 | -[test-19] | ||
| 969 | +[test-21] | ||
| 970 | ExpectedNPNProtocol = baz | ||
| 971 | HandshakeMode = Resume | ||
| 972 | ResumptionExpected = Yes | ||
| 973 | -server = 19-npn-used-if-alpn-not-supported-resumption-server-extra | ||
| 974 | -resume-server = 19-npn-used-if-alpn-not-supported-resumption-resume-server-extra | ||
| 975 | -client = 19-npn-used-if-alpn-not-supported-resumption-client-extra | ||
| 976 | -resume-client = 19-npn-used-if-alpn-not-supported-resumption-client-extra | ||
| 977 | +server = 21-npn-used-if-alpn-not-supported-resumption-server-extra | ||
| 978 | +resume-server = 21-npn-used-if-alpn-not-supported-resumption-resume-server-extra | ||
| 979 | +client = 21-npn-used-if-alpn-not-supported-resumption-client-extra | ||
| 980 | +resume-client = 21-npn-used-if-alpn-not-supported-resumption-client-extra | ||
| 981 | |||
| 982 | -[19-npn-used-if-alpn-not-supported-resumption-server-extra] | ||
| 983 | +[21-npn-used-if-alpn-not-supported-resumption-server-extra] | ||
| 984 | ALPNProtocols = foo | ||
| 985 | NPNProtocols = bar | ||
| 986 | |||
| 987 | -[19-npn-used-if-alpn-not-supported-resumption-resume-server-extra] | ||
| 988 | +[21-npn-used-if-alpn-not-supported-resumption-resume-server-extra] | ||
| 989 | NPNProtocols = baz | ||
| 990 | |||
| 991 | -[19-npn-used-if-alpn-not-supported-resumption-client-extra] | ||
| 992 | +[21-npn-used-if-alpn-not-supported-resumption-client-extra] | ||
| 993 | ALPNProtocols = foo | ||
| 994 | NPNProtocols = bar,baz | ||
| 995 | |||
| 996 | diff --git a/test/ssl-tests/08-npn.cnf.in b/test/ssl-tests/08-npn.cnf.in | ||
| 997 | index 30783e4..1dc2704 100644 | ||
| 998 | --- a/test/ssl-tests/08-npn.cnf.in | ||
| 999 | +++ b/test/ssl-tests/08-npn.cnf.in | ||
| 1000 | @@ -110,6 +110,41 @@ our @tests = ( | ||
| 1001 | "ExpectedNPNProtocol" => undef, | ||
| 1002 | }, | ||
| 1003 | }, | ||
| 1004 | + { | ||
| 1005 | + name => "npn-empty-client-list", | ||
| 1006 | + server => { | ||
| 1007 | + extra => { | ||
| 1008 | + "NPNProtocols" => "foo", | ||
| 1009 | + }, | ||
| 1010 | + }, | ||
| 1011 | + client => { | ||
| 1012 | + extra => { | ||
| 1013 | + "NPNProtocols" => "", | ||
| 1014 | + }, | ||
| 1015 | + "MaxProtocol" => "TLSv1.2" | ||
| 1016 | + }, | ||
| 1017 | + test => { | ||
| 1018 | + "ExpectedResult" => "ClientFail", | ||
| 1019 | + "ExpectedClientAlert" => "HandshakeFailure" | ||
| 1020 | + }, | ||
| 1021 | + }, | ||
| 1022 | + { | ||
| 1023 | + name => "npn-empty-server-list", | ||
| 1024 | + server => { | ||
| 1025 | + extra => { | ||
| 1026 | + "NPNProtocols" => "", | ||
| 1027 | + }, | ||
| 1028 | + }, | ||
| 1029 | + client => { | ||
| 1030 | + extra => { | ||
| 1031 | + "NPNProtocols" => "foo", | ||
| 1032 | + }, | ||
| 1033 | + "MaxProtocol" => "TLSv1.2" | ||
| 1034 | + }, | ||
| 1035 | + test => { | ||
| 1036 | + "ExpectedNPNProtocol" => "foo" | ||
| 1037 | + }, | ||
| 1038 | + }, | ||
| 1039 | { | ||
| 1040 | name => "npn-with-sni-no-context-switch", | ||
| 1041 | server => { | ||
| 1042 | diff --git a/test/ssl-tests/09-alpn.cnf b/test/ssl-tests/09-alpn.cnf | ||
| 1043 | index e7e6cb9..dd66873 100644 | ||
| 1044 | --- a/test/ssl-tests/09-alpn.cnf | ||
| 1045 | +++ b/test/ssl-tests/09-alpn.cnf | ||
| 1046 | @@ -1,6 +1,6 @@ | ||
| 1047 | # Generated with generate_ssl_tests.pl | ||
| 1048 | |||
| 1049 | -num_tests = 16 | ||
| 1050 | +num_tests = 18 | ||
| 1051 | |||
| 1052 | test-0 = 0-alpn-simple | ||
| 1053 | test-1 = 1-alpn-server-finds-match | ||
| 1054 | @@ -18,6 +18,8 @@ test-12 = 12-alpn-client-switch-resumption | ||
| 1055 | test-13 = 13-alpn-alert-on-mismatch-resumption | ||
| 1056 | test-14 = 14-alpn-no-server-support-resumption | ||
| 1057 | test-15 = 15-alpn-no-client-support-resumption | ||
| 1058 | +test-16 = 16-alpn-empty-client-list | ||
| 1059 | +test-17 = 17-alpn-empty-server-list | ||
| 1060 | # =========================================================== | ||
| 1061 | |||
| 1062 | [0-alpn-simple] | ||
| 1063 | @@ -617,3 +619,65 @@ ALPNProtocols = foo | ||
| 1064 | ALPNProtocols = foo | ||
| 1065 | |||
| 1066 | |||
| 1067 | +# =========================================================== | ||
| 1068 | + | ||
| 1069 | +[16-alpn-empty-client-list] | ||
| 1070 | +ssl_conf = 16-alpn-empty-client-list-ssl | ||
| 1071 | + | ||
| 1072 | +[16-alpn-empty-client-list-ssl] | ||
| 1073 | +server = 16-alpn-empty-client-list-server | ||
| 1074 | +client = 16-alpn-empty-client-list-client | ||
| 1075 | + | ||
| 1076 | +[16-alpn-empty-client-list-server] | ||
| 1077 | +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 1078 | +CipherString = DEFAULT | ||
| 1079 | +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 1080 | + | ||
| 1081 | +[16-alpn-empty-client-list-client] | ||
| 1082 | +CipherString = DEFAULT | ||
| 1083 | +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 1084 | +VerifyMode = Peer | ||
| 1085 | + | ||
| 1086 | +[test-16] | ||
| 1087 | +server = 16-alpn-empty-client-list-server-extra | ||
| 1088 | +client = 16-alpn-empty-client-list-client-extra | ||
| 1089 | + | ||
| 1090 | +[16-alpn-empty-client-list-server-extra] | ||
| 1091 | +ALPNProtocols = foo | ||
| 1092 | + | ||
| 1093 | +[16-alpn-empty-client-list-client-extra] | ||
| 1094 | +ALPNProtocols = | ||
| 1095 | + | ||
| 1096 | + | ||
| 1097 | +# =========================================================== | ||
| 1098 | + | ||
| 1099 | +[17-alpn-empty-server-list] | ||
| 1100 | +ssl_conf = 17-alpn-empty-server-list-ssl | ||
| 1101 | + | ||
| 1102 | +[17-alpn-empty-server-list-ssl] | ||
| 1103 | +server = 17-alpn-empty-server-list-server | ||
| 1104 | +client = 17-alpn-empty-server-list-client | ||
| 1105 | + | ||
| 1106 | +[17-alpn-empty-server-list-server] | ||
| 1107 | +Certificate = ${ENV::TEST_CERTS_DIR}/servercert.pem | ||
| 1108 | +CipherString = DEFAULT | ||
| 1109 | +PrivateKey = ${ENV::TEST_CERTS_DIR}/serverkey.pem | ||
| 1110 | + | ||
| 1111 | +[17-alpn-empty-server-list-client] | ||
| 1112 | +CipherString = DEFAULT | ||
| 1113 | +VerifyCAFile = ${ENV::TEST_CERTS_DIR}/rootcert.pem | ||
| 1114 | +VerifyMode = Peer | ||
| 1115 | + | ||
| 1116 | +[test-17] | ||
| 1117 | +ExpectedResult = ServerFail | ||
| 1118 | +ExpectedServerAlert = NoApplicationProtocol | ||
| 1119 | +server = 17-alpn-empty-server-list-server-extra | ||
| 1120 | +client = 17-alpn-empty-server-list-client-extra | ||
| 1121 | + | ||
| 1122 | +[17-alpn-empty-server-list-server-extra] | ||
| 1123 | +ALPNProtocols = | ||
| 1124 | + | ||
| 1125 | +[17-alpn-empty-server-list-client-extra] | ||
| 1126 | +ALPNProtocols = foo | ||
| 1127 | + | ||
| 1128 | + | ||
| 1129 | diff --git a/test/ssl-tests/09-alpn.cnf.in b/test/ssl-tests/09-alpn.cnf.in | ||
| 1130 | index 8133075..322b709 100644 | ||
| 1131 | --- a/test/ssl-tests/09-alpn.cnf.in | ||
| 1132 | +++ b/test/ssl-tests/09-alpn.cnf.in | ||
| 1133 | @@ -322,4 +322,37 @@ our @tests = ( | ||
| 1134 | "ExpectedALPNProtocol" => undef, | ||
| 1135 | }, | ||
| 1136 | }, | ||
| 1137 | + { | ||
| 1138 | + name => "alpn-empty-client-list", | ||
| 1139 | + server => { | ||
| 1140 | + extra => { | ||
| 1141 | + "ALPNProtocols" => "foo", | ||
| 1142 | + }, | ||
| 1143 | + }, | ||
| 1144 | + client => { | ||
| 1145 | + extra => { | ||
| 1146 | + "ALPNProtocols" => "", | ||
| 1147 | + }, | ||
| 1148 | + }, | ||
| 1149 | + test => { | ||
| 1150 | + "ExpectedALPNProtocol" => undef, | ||
| 1151 | + }, | ||
| 1152 | + }, | ||
| 1153 | + { | ||
| 1154 | + name => "alpn-empty-server-list", | ||
| 1155 | + server => { | ||
| 1156 | + extra => { | ||
| 1157 | + "ALPNProtocols" => "", | ||
| 1158 | + }, | ||
| 1159 | + }, | ||
| 1160 | + client => { | ||
| 1161 | + extra => { | ||
| 1162 | + "ALPNProtocols" => "foo", | ||
| 1163 | + }, | ||
| 1164 | + }, | ||
| 1165 | + test => { | ||
| 1166 | + "ExpectedResult" => "ServerFail", | ||
| 1167 | + "ExpectedServerAlert" => "NoApplicationProtocol", | ||
| 1168 | + }, | ||
| 1169 | + }, | ||
| 1170 | ); | ||
| 1171 | -- | ||
| 1172 | 2.44.0 | ||
| 1173 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_7.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_7.patch deleted file mode 100644 index 7319d27bb8..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_7.patch +++ /dev/null | |||
| @@ -1,43 +0,0 @@ | |||
| 1 | From 86351b8dd4c499de7a0c02313ee54966e978150f Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 21 Jun 2024 10:41:55 +0100 | ||
| 4 | Subject: [PATCH 07/10] Correct return values for | ||
| 5 | tls_construct_stoc_next_proto_neg | ||
| 6 | |||
| 7 | Return EXT_RETURN_NOT_SENT in the event that we don't send the extension, | ||
| 8 | rather than EXT_RETURN_SENT. This actually makes no difference at all to | ||
| 9 | the current control flow since this return value is ignored in this case | ||
| 10 | anyway. But lets make it correct anyway. | ||
| 11 | |||
| 12 | Follow on from CVE-2024-5535 | ||
| 13 | |||
| 14 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 15 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 16 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 17 | |||
| 18 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/53f5677f358c4a4f69830d944ea40e71950673b8] | ||
| 19 | CVE: CVE-2024-5535 | ||
| 20 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 21 | --- | ||
| 22 | ssl/statem/extensions_srvr.c | 3 ++- | ||
| 23 | 1 file changed, 2 insertions(+), 1 deletion(-) | ||
| 24 | |||
| 25 | diff --git a/ssl/statem/extensions_srvr.c b/ssl/statem/extensions_srvr.c | ||
| 26 | index 64ccb3e..b821c7c 100644 | ||
| 27 | --- a/ssl/statem/extensions_srvr.c | ||
| 28 | +++ b/ssl/statem/extensions_srvr.c | ||
| 29 | @@ -1496,9 +1496,10 @@ EXT_RETURN tls_construct_stoc_next_proto_neg(SSL_CONNECTION *s, WPACKET *pkt, | ||
| 30 | return EXT_RETURN_FAIL; | ||
| 31 | } | ||
| 32 | s->s3.npn_seen = 1; | ||
| 33 | + return EXT_RETURN_SENT; | ||
| 34 | } | ||
| 35 | |||
| 36 | - return EXT_RETURN_SENT; | ||
| 37 | + return EXT_RETURN_NOT_SENT; | ||
| 38 | } | ||
| 39 | #endif | ||
| 40 | |||
| 41 | -- | ||
| 42 | 2.44.0 | ||
| 43 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_8.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_8.patch deleted file mode 100644 index f64938a5ca..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_8.patch +++ /dev/null | |||
| @@ -1,66 +0,0 @@ | |||
| 1 | From 29f860914824cde6b0aea6ad818b93132930137f Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 21 Jun 2024 11:51:54 +0100 | ||
| 4 | Subject: [PATCH 08/10] Add ALPN validation in the client | ||
| 5 | |||
| 6 | The ALPN protocol selected by the server must be one that we originally | ||
| 7 | advertised. We should verify that it is. | ||
| 8 | |||
| 9 | Follow on from CVE-2024-5535 | ||
| 10 | |||
| 11 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 12 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 13 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 14 | |||
| 15 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/195e15421df113d7283aab2ccff8b8fb06df5465] | ||
| 16 | CVE: CVE-2024-5535 | ||
| 17 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 18 | --- | ||
| 19 | ssl/statem/extensions_clnt.c | 24 ++++++++++++++++++++++++ | ||
| 20 | 1 file changed, 24 insertions(+) | ||
| 21 | |||
| 22 | diff --git a/ssl/statem/extensions_clnt.c b/ssl/statem/extensions_clnt.c | ||
| 23 | index 1ab3c13..ff9c009 100644 | ||
| 24 | --- a/ssl/statem/extensions_clnt.c | ||
| 25 | +++ b/ssl/statem/extensions_clnt.c | ||
| 26 | @@ -1590,6 +1590,8 @@ int tls_parse_stoc_alpn(SSL_CONNECTION *s, PACKET *pkt, unsigned int context, | ||
| 27 | X509 *x, size_t chainidx) | ||
| 28 | { | ||
| 29 | size_t len; | ||
| 30 | + PACKET confpkt, protpkt; | ||
| 31 | + int valid = 0; | ||
| 32 | |||
| 33 | /* We must have requested it. */ | ||
| 34 | if (!s->s3.alpn_sent) { | ||
| 35 | @@ -1608,6 +1610,28 @@ int tls_parse_stoc_alpn(SSL_CONNECTION *s, PACKET *pkt, unsigned int context, | ||
| 36 | SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION); | ||
| 37 | return 0; | ||
| 38 | } | ||
| 39 | + | ||
| 40 | + /* It must be a protocol that we sent */ | ||
| 41 | + if (!PACKET_buf_init(&confpkt, s->ext.alpn, s->ext.alpn_len)) { | ||
| 42 | + SSLfatal(s, SSL_AD_INTERNAL_ERROR, ERR_R_INTERNAL_ERROR); | ||
| 43 | + return 0; | ||
| 44 | + } | ||
| 45 | + while (PACKET_get_length_prefixed_1(&confpkt, &protpkt)) { | ||
| 46 | + if (PACKET_remaining(&protpkt) != len) | ||
| 47 | + continue; | ||
| 48 | + if (memcmp(PACKET_data(pkt), PACKET_data(&protpkt), len) == 0) { | ||
| 49 | + /* Valid protocol found */ | ||
| 50 | + valid = 1; | ||
| 51 | + break; | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + if (!valid) { | ||
| 56 | + /* The protocol sent from the server does not match one we advertised */ | ||
| 57 | + SSLfatal(s, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION); | ||
| 58 | + return 0; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | OPENSSL_free(s->s3.alpn_selected); | ||
| 62 | s->s3.alpn_selected = OPENSSL_malloc(len); | ||
| 63 | if (s->s3.alpn_selected == NULL) { | ||
| 64 | -- | ||
| 65 | 2.44.0 | ||
| 66 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_9.patch b/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_9.patch deleted file mode 100644 index fb1cef5067..0000000000 --- a/meta/recipes-connectivity/openssl/openssl/CVE-2024-5535_9.patch +++ /dev/null | |||
| @@ -1,271 +0,0 @@ | |||
| 1 | From 6a5484b0d3fcf9a868c7e3e5b62e5eedc90b6080 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Matt Caswell <matt@openssl.org> | ||
| 3 | Date: Fri, 21 Jun 2024 10:09:41 +0100 | ||
| 4 | Subject: [PATCH 09/10] Add explicit testing of ALN and NPN in sslapitest | ||
| 5 | |||
| 6 | We already had some tests elsewhere - but this extends that testing with | ||
| 7 | additional tests. | ||
| 8 | |||
| 9 | Follow on from CVE-2024-5535 | ||
| 10 | |||
| 11 | Reviewed-by: Neil Horman <nhorman@openssl.org> | ||
| 12 | Reviewed-by: Tomas Mraz <tomas@openssl.org> | ||
| 13 | (Merged from https://github.com/openssl/openssl/pull/24717) | ||
| 14 | |||
| 15 | Upstream-Status: Backport from [https://github.com/openssl/openssl/commit/7c95191434415d1c9b7fe9b130df13cce630b6b5] | ||
| 16 | CVE: CVE-2024-5535 | ||
| 17 | Signed-off-by: Siddharth Doshi <sdoshi@mvista.com> | ||
| 18 | --- | ||
| 19 | test/sslapitest.c | 229 ++++++++++++++++++++++++++++++++++++++++++++++ | ||
| 20 | 1 file changed, 229 insertions(+) | ||
| 21 | |||
| 22 | diff --git a/test/sslapitest.c b/test/sslapitest.c | ||
| 23 | index 15cb906..7a55a2b 100644 | ||
| 24 | --- a/test/sslapitest.c | ||
| 25 | +++ b/test/sslapitest.c | ||
| 26 | @@ -11877,6 +11877,231 @@ static int test_select_next_proto(int idx) | ||
| 27 | return ret; | ||
| 28 | } | ||
| 29 | |||
| 30 | +static const unsigned char fooprot[] = {3, 'f', 'o', 'o' }; | ||
| 31 | +static const unsigned char barprot[] = {3, 'b', 'a', 'r' }; | ||
| 32 | + | ||
| 33 | +#if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_NEXTPROTONEG) | ||
| 34 | +static int npn_advert_cb(SSL *ssl, const unsigned char **out, | ||
| 35 | + unsigned int *outlen, void *arg) | ||
| 36 | +{ | ||
| 37 | + int *idx = (int *)arg; | ||
| 38 | + | ||
| 39 | + switch (*idx) { | ||
| 40 | + default: | ||
| 41 | + case 0: | ||
| 42 | + *out = fooprot; | ||
| 43 | + *outlen = sizeof(fooprot); | ||
| 44 | + return SSL_TLSEXT_ERR_OK; | ||
| 45 | + | ||
| 46 | + case 1: | ||
| 47 | + *outlen = 0; | ||
| 48 | + return SSL_TLSEXT_ERR_OK; | ||
| 49 | + | ||
| 50 | + case 2: | ||
| 51 | + return SSL_TLSEXT_ERR_NOACK; | ||
| 52 | + } | ||
| 53 | +} | ||
| 54 | + | ||
| 55 | +static int npn_select_cb(SSL *s, unsigned char **out, unsigned char *outlen, | ||
| 56 | + const unsigned char *in, unsigned int inlen, void *arg) | ||
| 57 | +{ | ||
| 58 | + int *idx = (int *)arg; | ||
| 59 | + | ||
| 60 | + switch (*idx) { | ||
| 61 | + case 0: | ||
| 62 | + case 1: | ||
| 63 | + *out = (unsigned char *)(fooprot + 1); | ||
| 64 | + *outlen = *fooprot; | ||
| 65 | + return SSL_TLSEXT_ERR_OK; | ||
| 66 | + | ||
| 67 | + case 3: | ||
| 68 | + *out = (unsigned char *)(barprot + 1); | ||
| 69 | + *outlen = *barprot; | ||
| 70 | + return SSL_TLSEXT_ERR_OK; | ||
| 71 | + | ||
| 72 | + case 4: | ||
| 73 | + *outlen = 0; | ||
| 74 | + return SSL_TLSEXT_ERR_OK; | ||
| 75 | + | ||
| 76 | + default: | ||
| 77 | + case 2: | ||
| 78 | + return SSL_TLSEXT_ERR_ALERT_FATAL; | ||
| 79 | + } | ||
| 80 | +} | ||
| 81 | + | ||
| 82 | +/* | ||
| 83 | + * Test the NPN callbacks | ||
| 84 | + * Test 0: advert = foo, select = foo | ||
| 85 | + * Test 1: advert = <empty>, select = foo | ||
| 86 | + * Test 2: no advert | ||
| 87 | + * Test 3: advert = foo, select = bar | ||
| 88 | + * Test 4: advert = foo, select = <empty> (should fail) | ||
| 89 | + */ | ||
| 90 | +static int test_npn(int idx) | ||
| 91 | +{ | ||
| 92 | + SSL_CTX *sctx = NULL, *cctx = NULL; | ||
| 93 | + SSL *serverssl = NULL, *clientssl = NULL; | ||
| 94 | + int testresult = 0; | ||
| 95 | + | ||
| 96 | + if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(), | ||
| 97 | + TLS_client_method(), 0, TLS1_2_VERSION, | ||
| 98 | + &sctx, &cctx, cert, privkey))) | ||
| 99 | + goto end; | ||
| 100 | + | ||
| 101 | + SSL_CTX_set_next_protos_advertised_cb(sctx, npn_advert_cb, &idx); | ||
| 102 | + SSL_CTX_set_next_proto_select_cb(cctx, npn_select_cb, &idx); | ||
| 103 | + | ||
| 104 | + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, | ||
| 105 | + NULL))) | ||
| 106 | + goto end; | ||
| 107 | + | ||
| 108 | + if (idx == 4) { | ||
| 109 | + /* We don't allow empty selection of NPN, so this should fail */ | ||
| 110 | + if (!TEST_false(create_ssl_connection(serverssl, clientssl, | ||
| 111 | + SSL_ERROR_NONE))) | ||
| 112 | + goto end; | ||
| 113 | + } else { | ||
| 114 | + const unsigned char *prot; | ||
| 115 | + unsigned int protlen; | ||
| 116 | + | ||
| 117 | + if (!TEST_true(create_ssl_connection(serverssl, clientssl, | ||
| 118 | + SSL_ERROR_NONE))) | ||
| 119 | + goto end; | ||
| 120 | + | ||
| 121 | + SSL_get0_next_proto_negotiated(serverssl, &prot, &protlen); | ||
| 122 | + switch (idx) { | ||
| 123 | + case 0: | ||
| 124 | + case 1: | ||
| 125 | + if (!TEST_mem_eq(prot, protlen, fooprot + 1, *fooprot)) | ||
| 126 | + goto end; | ||
| 127 | + break; | ||
| 128 | + case 2: | ||
| 129 | + if (!TEST_uint_eq(protlen, 0)) | ||
| 130 | + goto end; | ||
| 131 | + break; | ||
| 132 | + case 3: | ||
| 133 | + if (!TEST_mem_eq(prot, protlen, barprot + 1, *barprot)) | ||
| 134 | + goto end; | ||
| 135 | + break; | ||
| 136 | + default: | ||
| 137 | + TEST_error("Should not get here"); | ||
| 138 | + goto end; | ||
| 139 | + } | ||
| 140 | + } | ||
| 141 | + | ||
| 142 | + testresult = 1; | ||
| 143 | + end: | ||
| 144 | + SSL_free(serverssl); | ||
| 145 | + SSL_free(clientssl); | ||
| 146 | + SSL_CTX_free(sctx); | ||
| 147 | + SSL_CTX_free(cctx); | ||
| 148 | + | ||
| 149 | + return testresult; | ||
| 150 | +} | ||
| 151 | +#endif /* !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_NEXTPROTONEG) */ | ||
| 152 | + | ||
| 153 | +static int alpn_select_cb2(SSL *ssl, const unsigned char **out, | ||
| 154 | + unsigned char *outlen, const unsigned char *in, | ||
| 155 | + unsigned int inlen, void *arg) | ||
| 156 | +{ | ||
| 157 | + int *idx = (int *)arg; | ||
| 158 | + | ||
| 159 | + switch (*idx) { | ||
| 160 | + case 0: | ||
| 161 | + *out = (unsigned char *)(fooprot + 1); | ||
| 162 | + *outlen = *fooprot; | ||
| 163 | + return SSL_TLSEXT_ERR_OK; | ||
| 164 | + | ||
| 165 | + case 2: | ||
| 166 | + *out = (unsigned char *)(barprot + 1); | ||
| 167 | + *outlen = *barprot; | ||
| 168 | + return SSL_TLSEXT_ERR_OK; | ||
| 169 | + | ||
| 170 | + case 3: | ||
| 171 | + *outlen = 0; | ||
| 172 | + return SSL_TLSEXT_ERR_OK; | ||
| 173 | + | ||
| 174 | + default: | ||
| 175 | + case 1: | ||
| 176 | + return SSL_TLSEXT_ERR_ALERT_FATAL; | ||
| 177 | + } | ||
| 178 | + return 0; | ||
| 179 | +} | ||
| 180 | + | ||
| 181 | +/* | ||
| 182 | + * Test the ALPN callbacks | ||
| 183 | + * Test 0: client = foo, select = foo | ||
| 184 | + * Test 1: client = <empty>, select = none | ||
| 185 | + * Test 2: client = foo, select = bar (should fail) | ||
| 186 | + * Test 3: client = foo, select = <empty> (should fail) | ||
| 187 | + */ | ||
| 188 | +static int test_alpn(int idx) | ||
| 189 | +{ | ||
| 190 | + SSL_CTX *sctx = NULL, *cctx = NULL; | ||
| 191 | + SSL *serverssl = NULL, *clientssl = NULL; | ||
| 192 | + int testresult = 0; | ||
| 193 | + const unsigned char *prots = fooprot; | ||
| 194 | + unsigned int protslen = sizeof(fooprot); | ||
| 195 | + | ||
| 196 | + if (!TEST_true(create_ssl_ctx_pair(libctx, TLS_server_method(), | ||
| 197 | + TLS_client_method(), 0, 0, | ||
| 198 | + &sctx, &cctx, cert, privkey))) | ||
| 199 | + goto end; | ||
| 200 | + | ||
| 201 | + SSL_CTX_set_alpn_select_cb(sctx, alpn_select_cb2, &idx); | ||
| 202 | + | ||
| 203 | + if (!TEST_true(create_ssl_objects(sctx, cctx, &serverssl, &clientssl, NULL, | ||
| 204 | + NULL))) | ||
| 205 | + goto end; | ||
| 206 | + | ||
| 207 | + if (idx == 1) { | ||
| 208 | + prots = NULL; | ||
| 209 | + protslen = 0; | ||
| 210 | + } | ||
| 211 | + | ||
| 212 | + /* SSL_set_alpn_protos returns 0 for success! */ | ||
| 213 | + if (!TEST_false(SSL_set_alpn_protos(clientssl, prots, protslen))) | ||
| 214 | + goto end; | ||
| 215 | + | ||
| 216 | + if (idx == 2 || idx == 3) { | ||
| 217 | + /* We don't allow empty selection of NPN, so this should fail */ | ||
| 218 | + if (!TEST_false(create_ssl_connection(serverssl, clientssl, | ||
| 219 | + SSL_ERROR_NONE))) | ||
| 220 | + goto end; | ||
| 221 | + } else { | ||
| 222 | + const unsigned char *prot; | ||
| 223 | + unsigned int protlen; | ||
| 224 | + | ||
| 225 | + if (!TEST_true(create_ssl_connection(serverssl, clientssl, | ||
| 226 | + SSL_ERROR_NONE))) | ||
| 227 | + goto end; | ||
| 228 | + | ||
| 229 | + SSL_get0_alpn_selected(clientssl, &prot, &protlen); | ||
| 230 | + switch (idx) { | ||
| 231 | + case 0: | ||
| 232 | + if (!TEST_mem_eq(prot, protlen, fooprot + 1, *fooprot)) | ||
| 233 | + goto end; | ||
| 234 | + break; | ||
| 235 | + case 1: | ||
| 236 | + if (!TEST_uint_eq(protlen, 0)) | ||
| 237 | + goto end; | ||
| 238 | + break; | ||
| 239 | + default: | ||
| 240 | + TEST_error("Should not get here"); | ||
| 241 | + goto end; | ||
| 242 | + } | ||
| 243 | + } | ||
| 244 | + | ||
| 245 | + testresult = 1; | ||
| 246 | + end: | ||
| 247 | + SSL_free(serverssl); | ||
| 248 | + SSL_free(clientssl); | ||
| 249 | + SSL_CTX_free(sctx); | ||
| 250 | + SSL_CTX_free(cctx); | ||
| 251 | + | ||
| 252 | + return testresult; | ||
| 253 | +} | ||
| 254 | + | ||
| 255 | OPT_TEST_DECLARE_USAGE("certfile privkeyfile srpvfile tmpfile provider config dhfile\n") | ||
| 256 | |||
| 257 | int setup_tests(void) | ||
| 258 | @@ -12190,6 +12415,10 @@ int setup_tests(void) | ||
| 259 | ADD_TEST(test_data_retry); | ||
| 260 | ADD_ALL_TESTS(test_multi_resume, 5); | ||
| 261 | ADD_ALL_TESTS(test_select_next_proto, OSSL_NELEM(next_proto_tests)); | ||
| 262 | +#if !defined(OPENSSL_NO_TLS1_2) && !defined(OPENSSL_NO_NEXTPROTONEG) | ||
| 263 | + ADD_ALL_TESTS(test_npn, 5); | ||
| 264 | +#endif | ||
| 265 | + ADD_ALL_TESTS(test_alpn, 4); | ||
| 266 | return 1; | ||
| 267 | |||
| 268 | err: | ||
| 269 | -- | ||
| 270 | 2.44.0 | ||
| 271 | |||
diff --git a/meta/recipes-connectivity/openssl/openssl_3.2.2.bb b/meta/recipes-connectivity/openssl/openssl_3.2.3.bb index 3242dd69c6..53139df40c 100644 --- a/meta/recipes-connectivity/openssl/openssl_3.2.2.bb +++ b/meta/recipes-connectivity/openssl/openssl_3.2.3.bb | |||
| @@ -7,28 +7,18 @@ SECTION = "libs/network" | |||
| 7 | LICENSE = "Apache-2.0" | 7 | LICENSE = "Apache-2.0" |
| 8 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c75985e733726beaba57bc5253e96d04" | 8 | LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=c75985e733726beaba57bc5253e96d04" |
| 9 | 9 | ||
| 10 | SRC_URI = "http://www.openssl.org/source/openssl-${PV}.tar.gz \ | 10 | SRC_URI = "https://github.com/openssl/openssl/releases/download/openssl-${PV}/openssl-${PV}.tar.gz \ |
| 11 | file://run-ptest \ | 11 | file://run-ptest \ |
| 12 | file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \ | 12 | file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \ |
| 13 | file://0001-Configure-do-not-tweak-mips-cflags.patch \ | 13 | file://0001-Configure-do-not-tweak-mips-cflags.patch \ |
| 14 | file://0001-Added-handshake-history-reporting-when-test-fails.patch \ | 14 | file://0001-Added-handshake-history-reporting-when-test-fails.patch \ |
| 15 | file://CVE-2024-5535_1.patch \ | ||
| 16 | file://CVE-2024-5535_2.patch \ | ||
| 17 | file://CVE-2024-5535_3.patch \ | ||
| 18 | file://CVE-2024-5535_4.patch \ | ||
| 19 | file://CVE-2024-5535_5.patch \ | ||
| 20 | file://CVE-2024-5535_6.patch \ | ||
| 21 | file://CVE-2024-5535_7.patch \ | ||
| 22 | file://CVE-2024-5535_8.patch \ | ||
| 23 | file://CVE-2024-5535_9.patch \ | ||
| 24 | file://CVE-2024-5535_10.patch \ | ||
| 25 | " | 15 | " |
| 26 | 16 | ||
| 27 | SRC_URI:append:class-nativesdk = " \ | 17 | SRC_URI:append:class-nativesdk = " \ |
| 28 | file://environment.d-openssl.sh \ | 18 | file://environment.d-openssl.sh \ |
| 29 | " | 19 | " |
| 30 | 20 | ||
| 31 | SRC_URI[sha256sum] = "197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7" | 21 | SRC_URI[sha256sum] = "52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239" |
| 32 | 22 | ||
| 33 | inherit lib_package multilib_header multilib_script ptest perlnative manpages | 23 | inherit lib_package multilib_header multilib_script ptest perlnative manpages |
| 34 | MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash" | 24 | MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash" |
