Home | History | Annotate | Line # | Download | only in recipes
70-test_tls13messages.t revision 1.1
      1 #! /usr/bin/env perl
      2 # Copyright 2015-2024 The OpenSSL Project Authors. All Rights Reserved.
      3 #
      4 # Licensed under the Apache License 2.0 (the "License").  You may not use
      5 # this file except in compliance with the License.  You can obtain a copy
      6 # in the file LICENSE in the source distribution or at
      7 # https://www.openssl.org/source/license.html
      8 
      9 use strict;
     10 use OpenSSL::Test qw/:DEFAULT cmdstr srctop_file srctop_dir bldtop_dir/;
     11 use OpenSSL::Test::Utils;
     12 use File::Temp qw(tempfile);
     13 use TLSProxy::Proxy;
     14 use checkhandshake qw(checkhandshake @handmessages @extensions);
     15 
     16 my $test_name = "test_tls13messages";
     17 setup($test_name);
     18 
     19 plan skip_all => "TLSProxy isn't usable on $^O"
     20     if $^O =~ /^(VMS)$/;
     21 
     22 plan skip_all => "$test_name needs the dynamic engine feature enabled"
     23     if disabled("engine") || disabled("dynamic-engine");
     24 
     25 plan skip_all => "$test_name needs the sock feature enabled"
     26     if disabled("sock");
     27 
     28 plan skip_all => "$test_name needs TLSv1.3 enabled"
     29     if disabled("tls1_3");
     30 
     31 plan skip_all => "$test_name needs EC enabled"
     32     if disabled("ec");
     33 
     34 @handmessages = (
     35     [TLSProxy::Message::MT_CLIENT_HELLO,
     36         checkhandshake::ALL_HANDSHAKES],
     37     [TLSProxy::Message::MT_SERVER_HELLO,
     38         checkhandshake::HRR_HANDSHAKE | checkhandshake::HRR_RESUME_HANDSHAKE],
     39     [TLSProxy::Message::MT_CLIENT_HELLO,
     40         checkhandshake::HRR_HANDSHAKE | checkhandshake::HRR_RESUME_HANDSHAKE],
     41     [TLSProxy::Message::MT_SERVER_HELLO,
     42         checkhandshake::ALL_HANDSHAKES],
     43     [TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS,
     44         checkhandshake::ALL_HANDSHAKES],
     45     [TLSProxy::Message::MT_CERTIFICATE_REQUEST,
     46         checkhandshake::CLIENT_AUTH_HANDSHAKE],
     47     [TLSProxy::Message::MT_CERTIFICATE,
     48         checkhandshake::ALL_HANDSHAKES & ~(checkhandshake::RESUME_HANDSHAKE | checkhandshake::HRR_RESUME_HANDSHAKE)],
     49     [TLSProxy::Message::MT_CERTIFICATE_VERIFY,
     50         checkhandshake::ALL_HANDSHAKES & ~(checkhandshake::RESUME_HANDSHAKE | checkhandshake::HRR_RESUME_HANDSHAKE)],
     51     [TLSProxy::Message::MT_FINISHED,
     52         checkhandshake::ALL_HANDSHAKES],
     53     [TLSProxy::Message::MT_CERTIFICATE,
     54         checkhandshake::CLIENT_AUTH_HANDSHAKE],
     55     [TLSProxy::Message::MT_CERTIFICATE_VERIFY,
     56         checkhandshake::CLIENT_AUTH_HANDSHAKE],
     57     [TLSProxy::Message::MT_FINISHED,
     58         checkhandshake::ALL_HANDSHAKES],
     59     [0, 0]
     60 );
     61 
     62 @extensions = (
     63     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SERVER_NAME,
     64         TLSProxy::Message::CLIENT,
     65         checkhandshake::SERVER_NAME_CLI_EXTENSION],
     66     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_STATUS_REQUEST,
     67         TLSProxy::Message::CLIENT,
     68         checkhandshake::STATUS_REQUEST_CLI_EXTENSION],
     69     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SUPPORTED_GROUPS,
     70         TLSProxy::Message::CLIENT,
     71         checkhandshake::DEFAULT_EXTENSIONS],
     72     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_EC_POINT_FORMATS,
     73         TLSProxy::Message::CLIENT,
     74         checkhandshake::DEFAULT_EXTENSIONS],
     75     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SIG_ALGS,
     76         TLSProxy::Message::CLIENT,
     77         checkhandshake::DEFAULT_EXTENSIONS],
     78     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_ALPN,
     79         TLSProxy::Message::CLIENT,
     80         checkhandshake::ALPN_CLI_EXTENSION],
     81     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SCT,
     82         TLSProxy::Message::CLIENT,
     83         checkhandshake::SCT_CLI_EXTENSION],
     84     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_ENCRYPT_THEN_MAC,
     85         TLSProxy::Message::CLIENT,
     86         checkhandshake::DEFAULT_EXTENSIONS],
     87     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_EXTENDED_MASTER_SECRET,
     88         TLSProxy::Message::CLIENT,
     89         checkhandshake::DEFAULT_EXTENSIONS],
     90     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SESSION_TICKET,
     91         TLSProxy::Message::CLIENT,
     92         checkhandshake::DEFAULT_EXTENSIONS],
     93     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_KEY_SHARE,
     94         TLSProxy::Message::CLIENT,
     95         checkhandshake::DEFAULT_EXTENSIONS],
     96     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SUPPORTED_VERSIONS,
     97         TLSProxy::Message::CLIENT,
     98         checkhandshake::DEFAULT_EXTENSIONS],
     99     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_PSK_KEX_MODES,
    100         TLSProxy::Message::CLIENT,
    101         checkhandshake::DEFAULT_EXTENSIONS],
    102     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_PSK,
    103         TLSProxy::Message::CLIENT,
    104         checkhandshake::PSK_CLI_EXTENSION],
    105     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_POST_HANDSHAKE_AUTH,
    106         TLSProxy::Message::CLIENT,
    107         checkhandshake::POST_HANDSHAKE_AUTH_CLI_EXTENSION],
    108     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_RENEGOTIATE,
    109         TLSProxy::Message::CLIENT,
    110         checkhandshake::DEFAULT_EXTENSIONS],
    111 
    112     [TLSProxy::Message::MT_SERVER_HELLO, TLSProxy::Message::EXT_SUPPORTED_VERSIONS,
    113         TLSProxy::Message::SERVER,
    114         checkhandshake::DEFAULT_EXTENSIONS],
    115     [TLSProxy::Message::MT_SERVER_HELLO, TLSProxy::Message::EXT_KEY_SHARE,
    116         TLSProxy::Message::SERVER,
    117         checkhandshake::KEY_SHARE_HRR_EXTENSION],
    118 
    119     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SERVER_NAME,
    120         TLSProxy::Message::CLIENT,
    121         checkhandshake::SERVER_NAME_CLI_EXTENSION],
    122     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_STATUS_REQUEST,
    123         TLSProxy::Message::CLIENT,
    124         checkhandshake::STATUS_REQUEST_CLI_EXTENSION],
    125     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SUPPORTED_GROUPS,
    126         TLSProxy::Message::CLIENT,
    127         checkhandshake::DEFAULT_EXTENSIONS],
    128     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_EC_POINT_FORMATS,
    129         TLSProxy::Message::CLIENT,
    130         checkhandshake::DEFAULT_EXTENSIONS],
    131     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SIG_ALGS,
    132         TLSProxy::Message::CLIENT,
    133         checkhandshake::DEFAULT_EXTENSIONS],
    134     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_ALPN,
    135         TLSProxy::Message::CLIENT,
    136         checkhandshake::ALPN_CLI_EXTENSION],
    137     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SCT,
    138         TLSProxy::Message::CLIENT,
    139         checkhandshake::SCT_CLI_EXTENSION],
    140     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_ENCRYPT_THEN_MAC,
    141         TLSProxy::Message::CLIENT,
    142         checkhandshake::DEFAULT_EXTENSIONS],
    143     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_EXTENDED_MASTER_SECRET,
    144         TLSProxy::Message::CLIENT,
    145         checkhandshake::DEFAULT_EXTENSIONS],
    146     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SESSION_TICKET,
    147         TLSProxy::Message::CLIENT,
    148         checkhandshake::DEFAULT_EXTENSIONS],
    149     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_KEY_SHARE,
    150         TLSProxy::Message::CLIENT,
    151         checkhandshake::DEFAULT_EXTENSIONS],
    152     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_SUPPORTED_VERSIONS,
    153         TLSProxy::Message::CLIENT,
    154         checkhandshake::DEFAULT_EXTENSIONS],
    155     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_PSK_KEX_MODES,
    156         TLSProxy::Message::CLIENT,
    157         checkhandshake::DEFAULT_EXTENSIONS],
    158     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_PSK,
    159         TLSProxy::Message::CLIENT,
    160         checkhandshake::PSK_CLI_EXTENSION],
    161     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_POST_HANDSHAKE_AUTH,
    162         TLSProxy::Message::CLIENT,
    163         checkhandshake::POST_HANDSHAKE_AUTH_CLI_EXTENSION],
    164     [TLSProxy::Message::MT_CLIENT_HELLO, TLSProxy::Message::EXT_RENEGOTIATE,
    165         TLSProxy::Message::CLIENT,
    166         checkhandshake::DEFAULT_EXTENSIONS],
    167 
    168     [TLSProxy::Message::MT_SERVER_HELLO, TLSProxy::Message::EXT_SUPPORTED_VERSIONS,
    169         TLSProxy::Message::SERVER,
    170         checkhandshake::DEFAULT_EXTENSIONS],
    171     [TLSProxy::Message::MT_SERVER_HELLO, TLSProxy::Message::EXT_KEY_SHARE,
    172         TLSProxy::Message::SERVER,
    173         checkhandshake::DEFAULT_EXTENSIONS],
    174     [TLSProxy::Message::MT_SERVER_HELLO, TLSProxy::Message::EXT_PSK,
    175         TLSProxy::Message::SERVER,
    176         checkhandshake::PSK_SRV_EXTENSION],
    177 
    178     [TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS, TLSProxy::Message::EXT_SERVER_NAME,
    179         TLSProxy::Message::SERVER,
    180         checkhandshake::SERVER_NAME_SRV_EXTENSION],
    181     [TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS, TLSProxy::Message::EXT_ALPN,
    182         TLSProxy::Message::SERVER,
    183         checkhandshake::ALPN_SRV_EXTENSION],
    184     [TLSProxy::Message::MT_ENCRYPTED_EXTENSIONS, TLSProxy::Message::EXT_SUPPORTED_GROUPS,
    185         TLSProxy::Message::SERVER,
    186         checkhandshake::SUPPORTED_GROUPS_SRV_EXTENSION],
    187 
    188     [TLSProxy::Message::MT_CERTIFICATE_REQUEST, TLSProxy::Message::EXT_SIG_ALGS,
    189         TLSProxy::Message::SERVER,
    190         checkhandshake::DEFAULT_EXTENSIONS],
    191 
    192     [TLSProxy::Message::MT_CERTIFICATE, TLSProxy::Message::EXT_STATUS_REQUEST,
    193         TLSProxy::Message::SERVER,
    194         checkhandshake::STATUS_REQUEST_SRV_EXTENSION],
    195     [TLSProxy::Message::MT_CERTIFICATE, TLSProxy::Message::EXT_SCT,
    196         TLSProxy::Message::SERVER,
    197         checkhandshake::SCT_SRV_EXTENSION],
    198 
    199     [0,0,0,0]
    200 );
    201 
    202 my $proxy = TLSProxy::Proxy->new(
    203     undef,
    204     cmdstr(app(["openssl"]), display => 1),
    205     srctop_file("apps", "server.pem"),
    206     (!$ENV{HARNESS_ACTIVE} || $ENV{HARNESS_VERBOSE})
    207 );
    208 
    209 #Test 1: Check we get all the right messages for a default handshake
    210 (undef, my $session) = tempfile();
    211 $proxy->serverconnects(2);
    212 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    213 $proxy->clientflags("-no_rx_cert_comp -sess_out ".$session);
    214 $proxy->sessionfile($session);
    215 $proxy->start() or plan skip_all => "Unable to start up Proxy for tests";
    216 plan tests => 17;
    217 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    218                checkhandshake::DEFAULT_EXTENSIONS,
    219                "Default handshake test");
    220 
    221 #Test 2: Resumption handshake
    222 $proxy->clearClient();
    223 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    224 $proxy->clientflags("-no_rx_cert_comp -sess_in ".$session);
    225 $proxy->clientstart();
    226 checkhandshake($proxy, checkhandshake::RESUME_HANDSHAKE,
    227                (checkhandshake::DEFAULT_EXTENSIONS
    228                 | checkhandshake::PSK_CLI_EXTENSION
    229                 | checkhandshake::PSK_SRV_EXTENSION),
    230                "Resumption handshake test");
    231 
    232 SKIP: {
    233     skip "No OCSP support in this OpenSSL build", 4
    234         if disabled("ct") || disabled("ec") || disabled("ocsp");
    235     #Test 3: A status_request handshake (client request only)
    236     $proxy->clear();
    237     $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    238     $proxy->clientflags("-no_rx_cert_comp -status");
    239     $proxy->start();
    240     checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    241                    checkhandshake::DEFAULT_EXTENSIONS
    242                    | checkhandshake::STATUS_REQUEST_CLI_EXTENSION,
    243                    "status_request handshake test (client)");
    244 
    245     #Test 4: A status_request handshake (server support only)
    246     $proxy->clear();
    247     $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    248     $proxy->clientflags("-no_rx_cert_comp");
    249     $proxy->serverflags("-no_rx_cert_comp -status_file "
    250                         .srctop_file("test", "recipes", "ocsp-response.der"));
    251     $proxy->start();
    252     checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    253                    checkhandshake::DEFAULT_EXTENSIONS,
    254                    "status_request handshake test (server)");
    255 
    256     #Test 5: A status_request handshake (client and server)
    257     $proxy->clear();
    258     $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    259     $proxy->clientflags("-no_rx_cert_comp -status");
    260     $proxy->serverflags("-no_rx_cert_comp -status_file "
    261                         .srctop_file("test", "recipes", "ocsp-response.der"));
    262     $proxy->start();
    263     checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    264                    checkhandshake::DEFAULT_EXTENSIONS
    265                    | checkhandshake::STATUS_REQUEST_CLI_EXTENSION
    266                    | checkhandshake::STATUS_REQUEST_SRV_EXTENSION,
    267                    "status_request handshake test");
    268 
    269     #Test 6: A status_request handshake (client and server) with client auth
    270     $proxy->clear();
    271     $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    272     $proxy->clientflags("-no_rx_cert_comp -status -enable_pha -cert "
    273                         .srctop_file("apps", "server.pem"));
    274     $proxy->serverflags("-no_rx_cert_comp -Verify 5 -status_file "
    275                         .srctop_file("test", "recipes", "ocsp-response.der"));
    276     $proxy->start();
    277     checkhandshake($proxy, checkhandshake::CLIENT_AUTH_HANDSHAKE,
    278                    checkhandshake::DEFAULT_EXTENSIONS
    279                    | checkhandshake::STATUS_REQUEST_CLI_EXTENSION
    280                    | checkhandshake::STATUS_REQUEST_SRV_EXTENSION
    281                    | checkhandshake::POST_HANDSHAKE_AUTH_CLI_EXTENSION,
    282                    "status_request handshake with client auth test");
    283 }
    284 
    285 #Test 7: A client auth handshake
    286 $proxy->clear();
    287 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    288 $proxy->clientflags("-no_rx_cert_comp -enable_pha -cert ".srctop_file("apps", "server.pem"));
    289 $proxy->serverflags("-no_rx_cert_comp -Verify 5");
    290 $proxy->start();
    291 checkhandshake($proxy, checkhandshake::CLIENT_AUTH_HANDSHAKE,
    292                checkhandshake::DEFAULT_EXTENSIONS |
    293                checkhandshake::POST_HANDSHAKE_AUTH_CLI_EXTENSION,
    294                "Client auth handshake test");
    295 
    296 #Test 8: Server name handshake (no client request)
    297 $proxy->clear();
    298 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    299 $proxy->clientflags("-no_rx_cert_comp -noservername");
    300 $proxy->start();
    301 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    302                checkhandshake::DEFAULT_EXTENSIONS
    303                & ~checkhandshake::SERVER_NAME_CLI_EXTENSION,
    304                "Server name handshake test (client)");
    305 
    306 #Test 9: Server name handshake (server support only)
    307 $proxy->clear();
    308 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    309 $proxy->clientflags("-no_rx_cert_comp -noservername");
    310 $proxy->serverflags("-no_rx_cert_comp -servername testhost");
    311 $proxy->start();
    312 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    313                checkhandshake::DEFAULT_EXTENSIONS
    314                & ~checkhandshake::SERVER_NAME_CLI_EXTENSION,
    315                "Server name handshake test (server)");
    316 
    317 #Test 10: Server name handshake (client and server)
    318 $proxy->clear();
    319 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    320 $proxy->clientflags("-no_rx_cert_comp -servername testhost");
    321 $proxy->serverflags("-no_rx_cert_comp -servername testhost");
    322 $proxy->start();
    323 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    324                checkhandshake::DEFAULT_EXTENSIONS
    325                | checkhandshake::SERVER_NAME_SRV_EXTENSION,
    326                "Server name handshake test");
    327 
    328 #Test 11: ALPN handshake (client request only)
    329 $proxy->clear();
    330 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    331 $proxy->clientflags("-no_rx_cert_comp -alpn test");
    332 $proxy->start();
    333 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    334                checkhandshake::DEFAULT_EXTENSIONS
    335                | checkhandshake::ALPN_CLI_EXTENSION,
    336                "ALPN handshake test (client)");
    337 
    338 #Test 12: ALPN handshake (server support only)
    339 $proxy->clear();
    340 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    341 $proxy->clientflags("-no_rx_cert_comp");
    342 $proxy->serverflags("-no_rx_cert_comp -alpn test");
    343 $proxy->start();
    344 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    345                checkhandshake::DEFAULT_EXTENSIONS,
    346                "ALPN handshake test (server)");
    347 
    348 #Test 13: ALPN handshake (client and server)
    349 $proxy->clear();
    350 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    351 $proxy->clientflags("-no_rx_cert_comp -alpn test");
    352 $proxy->serverflags("-no_rx_cert_comp -alpn test");
    353 $proxy->start();
    354 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    355                checkhandshake::DEFAULT_EXTENSIONS
    356                | checkhandshake::ALPN_CLI_EXTENSION
    357                | checkhandshake::ALPN_SRV_EXTENSION,
    358                "ALPN handshake test");
    359 
    360 SKIP: {
    361     skip "No CT, EC or OCSP support in this OpenSSL build", 1
    362         if disabled("ct") || disabled("ec") || disabled("ocsp");
    363 
    364     #Test 14: SCT handshake (client request only)
    365     $proxy->clear();
    366     $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    367     #Note: -ct also sends status_request
    368     $proxy->clientflags("-no_rx_cert_comp -ct");
    369     $proxy->serverflags("-no_rx_cert_comp -status_file "
    370                         .srctop_file("test", "recipes", "ocsp-response.der")
    371                         ." -serverinfo ".srctop_file("test", "serverinfo2.pem"));
    372     $proxy->start();
    373     checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    374                    checkhandshake::DEFAULT_EXTENSIONS
    375                    | checkhandshake::SCT_CLI_EXTENSION
    376                    | checkhandshake::SCT_SRV_EXTENSION
    377                    | checkhandshake::STATUS_REQUEST_CLI_EXTENSION
    378                    | checkhandshake::STATUS_REQUEST_SRV_EXTENSION,
    379                    "SCT handshake test");
    380 }
    381 
    382 #Test 15: HRR Handshake
    383 $proxy->clear();
    384 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    385 $proxy->clientflags("-no_rx_cert_comp");
    386 $proxy->serverflags("-no_rx_cert_comp -curves P-384");
    387 $proxy->start();
    388 checkhandshake($proxy, checkhandshake::HRR_HANDSHAKE,
    389                checkhandshake::DEFAULT_EXTENSIONS
    390                | checkhandshake::KEY_SHARE_HRR_EXTENSION,
    391                "HRR handshake test");
    392 
    393 #Test 16: Resumption handshake with HRR
    394 $proxy->clear();
    395 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    396 $proxy->clientflags("-no_rx_cert_comp -sess_in ".$session);
    397 $proxy->serverflags("-no_rx_cert_comp -curves P-384");
    398 $proxy->start();
    399 checkhandshake($proxy, checkhandshake::HRR_RESUME_HANDSHAKE,
    400                (checkhandshake::DEFAULT_EXTENSIONS
    401                 | checkhandshake::KEY_SHARE_HRR_EXTENSION
    402                 | checkhandshake::PSK_CLI_EXTENSION
    403                 | checkhandshake::PSK_SRV_EXTENSION),
    404                "Resumption handshake with HRR test");
    405 
    406 #Test 17: Acceptable but non preferred key_share
    407 $proxy->clear();
    408 $proxy->cipherc("DEFAULT:\@SECLEVEL=2");
    409 $proxy->clientflags("-no_rx_cert_comp -curves P-384");
    410 $proxy->start();
    411 checkhandshake($proxy, checkhandshake::DEFAULT_HANDSHAKE,
    412                checkhandshake::DEFAULT_EXTENSIONS
    413                | checkhandshake::SUPPORTED_GROUPS_SRV_EXTENSION,
    414                "Acceptable but non preferred key_share");
    415 
    416 unlink $session;
    417