xref: /freebsd/crypto/openssl/test/ssl-tests/18-dtls-renegotiate.cnf.in (revision e0c4386e7e71d93b0edc0c8fa156263fc4a8b0b6)
1*e0c4386eSCy Schubert# -*- mode: perl; -*-
2*e0c4386eSCy Schubert# Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
3*e0c4386eSCy Schubert#
4*e0c4386eSCy Schubert# Licensed under the Apache License 2.0 (the "License").  You may not use
5*e0c4386eSCy Schubert# this file except in compliance with the License.  You can obtain a copy
6*e0c4386eSCy Schubert# in the file LICENSE in the source distribution or at
7*e0c4386eSCy Schubert# https://www.openssl.org/source/license.html
8*e0c4386eSCy Schubert
9*e0c4386eSCy Schubert
10*e0c4386eSCy Schubert## Test Renegotiation
11*e0c4386eSCy Schubert
12*e0c4386eSCy Schubertuse strict;
13*e0c4386eSCy Schubertuse warnings;
14*e0c4386eSCy Schubert
15*e0c4386eSCy Schubertpackage ssltests;
16*e0c4386eSCy Schubertuse OpenSSL::Test::Utils;
17*e0c4386eSCy Schubert
18*e0c4386eSCy Schubertour $fips_mode;
19*e0c4386eSCy Schubert
20*e0c4386eSCy Schubertour @tests = ();
21*e0c4386eSCy Schubert
22*e0c4386eSCy Schubertforeach my $sctp ("No", "Yes")
23*e0c4386eSCy Schubert{
24*e0c4386eSCy Schubert    next if disabled("sctp") && $sctp eq "Yes";
25*e0c4386eSCy Schubert    next if disabled("dtls1_2") && $fips_mode;
26*e0c4386eSCy Schubert
27*e0c4386eSCy Schubert    my $suffix = ($sctp eq "No") ? "" : "-sctp";
28*e0c4386eSCy Schubert    our @tests_basic = (
29*e0c4386eSCy Schubert        {
30*e0c4386eSCy Schubert            name => "renegotiate-client-no-resume".$suffix,
31*e0c4386eSCy Schubert            server => {
32*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0',
33*e0c4386eSCy Schubert                "Options" => "NoResumptionOnRenegotiation"
34*e0c4386eSCy Schubert            },
35*e0c4386eSCy Schubert            client => {
36*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
37*e0c4386eSCy Schubert            },
38*e0c4386eSCy Schubert            test => {
39*e0c4386eSCy Schubert                "Method" => "DTLS",
40*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
41*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateClient",
42*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
43*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
44*e0c4386eSCy Schubert            }
45*e0c4386eSCy Schubert        },
46*e0c4386eSCy Schubert        {
47*e0c4386eSCy Schubert            name => "renegotiate-client-resume".$suffix,
48*e0c4386eSCy Schubert            server => {
49*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
50*e0c4386eSCy Schubert            },
51*e0c4386eSCy Schubert            client => {
52*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
53*e0c4386eSCy Schubert            },
54*e0c4386eSCy Schubert            test => {
55*e0c4386eSCy Schubert                "Method" => "DTLS",
56*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
57*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateClient",
58*e0c4386eSCy Schubert                "ResumptionExpected" => "Yes",
59*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
60*e0c4386eSCy Schubert            }
61*e0c4386eSCy Schubert        },
62*e0c4386eSCy Schubert        # Note: Unlike the TLS tests, we will never do resumption with server
63*e0c4386eSCy Schubert        # initiated reneg. This is because an OpenSSL DTLS client will always do a full
64*e0c4386eSCy Schubert        # handshake (i.e. it doesn't supply a session id) when it receives a
65*e0c4386eSCy Schubert        # HelloRequest. This is different to the OpenSSL TLS implementation where an
66*e0c4386eSCy Schubert        # OpenSSL client will always try an abbreviated handshake (i.e. it will supply
67*e0c4386eSCy Schubert        # the session id). This goes all the way to commit 48ae85b6f when abbreviated
68*e0c4386eSCy Schubert        # handshake support was first added. Neither behaviour is wrong, but the
69*e0c4386eSCy Schubert        # discrepancy is strange. TODO: Should we harmonise the TLS and DTLS behaviour,
70*e0c4386eSCy Schubert        # and if so, what to?
71*e0c4386eSCy Schubert        {
72*e0c4386eSCy Schubert            name => "renegotiate-server-resume".$suffix,
73*e0c4386eSCy Schubert            server => {
74*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
75*e0c4386eSCy Schubert            },
76*e0c4386eSCy Schubert            client => {
77*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
78*e0c4386eSCy Schubert            },
79*e0c4386eSCy Schubert            test => {
80*e0c4386eSCy Schubert                "Method" => "DTLS",
81*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
82*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateServer",
83*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
84*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
85*e0c4386eSCy Schubert            }
86*e0c4386eSCy Schubert        },
87*e0c4386eSCy Schubert        {
88*e0c4386eSCy Schubert            name => "renegotiate-client-auth-require".$suffix,
89*e0c4386eSCy Schubert            server => {
90*e0c4386eSCy Schubert                "VerifyCAFile" => test_pem("root-cert.pem"),
91*e0c4386eSCy Schubert                "VerifyMode" => "Require",
92*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
93*e0c4386eSCy Schubert            },
94*e0c4386eSCy Schubert            client => {
95*e0c4386eSCy Schubert                "Certificate" => test_pem("ee-client-chain.pem"),
96*e0c4386eSCy Schubert                "PrivateKey"  => test_pem("ee-key.pem"),
97*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
98*e0c4386eSCy Schubert            },
99*e0c4386eSCy Schubert            test => {
100*e0c4386eSCy Schubert                "Method" => "DTLS",
101*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
102*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateServer",
103*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
104*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
105*e0c4386eSCy Schubert            }
106*e0c4386eSCy Schubert        },
107*e0c4386eSCy Schubert        {
108*e0c4386eSCy Schubert            name => "renegotiate-client-auth-once".$suffix,
109*e0c4386eSCy Schubert            server => {
110*e0c4386eSCy Schubert                "VerifyCAFile" => test_pem("root-cert.pem"),
111*e0c4386eSCy Schubert                "VerifyMode" => "Once",
112*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
113*e0c4386eSCy Schubert            },
114*e0c4386eSCy Schubert            client => {
115*e0c4386eSCy Schubert                "Certificate" => test_pem("ee-client-chain.pem"),
116*e0c4386eSCy Schubert                "PrivateKey"  => test_pem("ee-key.pem"),
117*e0c4386eSCy Schubert                "CipherString" => 'DEFAULT:@SECLEVEL=0'
118*e0c4386eSCy Schubert            },
119*e0c4386eSCy Schubert            test => {
120*e0c4386eSCy Schubert                "Method" => "DTLS",
121*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
122*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateServer",
123*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
124*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
125*e0c4386eSCy Schubert            }
126*e0c4386eSCy Schubert        }
127*e0c4386eSCy Schubert    );
128*e0c4386eSCy Schubert    push @tests, @tests_basic;
129*e0c4386eSCy Schubert
130*e0c4386eSCy Schubert    next if disabled("dtls1_2");
131*e0c4386eSCy Schubert    our @tests_dtls1_2 = (
132*e0c4386eSCy Schubert        {
133*e0c4386eSCy Schubert            name => "renegotiate-aead-to-non-aead".$suffix,
134*e0c4386eSCy Schubert            server => {
135*e0c4386eSCy Schubert                "Options" => "NoResumptionOnRenegotiation"
136*e0c4386eSCy Schubert            },
137*e0c4386eSCy Schubert            client => {
138*e0c4386eSCy Schubert                "CipherString" => "AES128-GCM-SHA256",
139*e0c4386eSCy Schubert                extra => {
140*e0c4386eSCy Schubert                    "RenegotiateCiphers" => "AES128-SHA"
141*e0c4386eSCy Schubert                }
142*e0c4386eSCy Schubert            },
143*e0c4386eSCy Schubert            test => {
144*e0c4386eSCy Schubert                "Method" => "DTLS",
145*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
146*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateClient",
147*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
148*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
149*e0c4386eSCy Schubert            }
150*e0c4386eSCy Schubert        },
151*e0c4386eSCy Schubert        {
152*e0c4386eSCy Schubert            name => "renegotiate-non-aead-to-aead".$suffix,
153*e0c4386eSCy Schubert            server => {
154*e0c4386eSCy Schubert                "Options" => "NoResumptionOnRenegotiation"
155*e0c4386eSCy Schubert            },
156*e0c4386eSCy Schubert            client => {
157*e0c4386eSCy Schubert                "CipherString" => "AES128-SHA",
158*e0c4386eSCy Schubert                extra => {
159*e0c4386eSCy Schubert                    "RenegotiateCiphers" => "AES128-GCM-SHA256"
160*e0c4386eSCy Schubert                }
161*e0c4386eSCy Schubert            },
162*e0c4386eSCy Schubert            test => {
163*e0c4386eSCy Schubert                "Method" => "DTLS",
164*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
165*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateClient",
166*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
167*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
168*e0c4386eSCy Schubert            }
169*e0c4386eSCy Schubert        },
170*e0c4386eSCy Schubert        {
171*e0c4386eSCy Schubert            name => "renegotiate-non-aead-to-non-aead".$suffix,
172*e0c4386eSCy Schubert            server => {
173*e0c4386eSCy Schubert                "Options" => "NoResumptionOnRenegotiation"
174*e0c4386eSCy Schubert            },
175*e0c4386eSCy Schubert            client => {
176*e0c4386eSCy Schubert                "CipherString" => "AES128-SHA",
177*e0c4386eSCy Schubert                extra => {
178*e0c4386eSCy Schubert                    "RenegotiateCiphers" => "AES256-SHA"
179*e0c4386eSCy Schubert                }
180*e0c4386eSCy Schubert            },
181*e0c4386eSCy Schubert            test => {
182*e0c4386eSCy Schubert                "Method" => "DTLS",
183*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
184*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateClient",
185*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
186*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
187*e0c4386eSCy Schubert            }
188*e0c4386eSCy Schubert        },
189*e0c4386eSCy Schubert        {
190*e0c4386eSCy Schubert            name => "renegotiate-aead-to-aead".$suffix,
191*e0c4386eSCy Schubert            server => {
192*e0c4386eSCy Schubert                "Options" => "NoResumptionOnRenegotiation"
193*e0c4386eSCy Schubert            },
194*e0c4386eSCy Schubert            client => {
195*e0c4386eSCy Schubert                "CipherString" => "AES128-GCM-SHA256",
196*e0c4386eSCy Schubert                extra => {
197*e0c4386eSCy Schubert                    "RenegotiateCiphers" => "AES256-GCM-SHA384"
198*e0c4386eSCy Schubert                }
199*e0c4386eSCy Schubert            },
200*e0c4386eSCy Schubert            test => {
201*e0c4386eSCy Schubert                "Method" => "DTLS",
202*e0c4386eSCy Schubert                "UseSCTP" => $sctp,
203*e0c4386eSCy Schubert                "HandshakeMode" => "RenegotiateClient",
204*e0c4386eSCy Schubert                "ResumptionExpected" => "No",
205*e0c4386eSCy Schubert                "ExpectedResult" => "Success"
206*e0c4386eSCy Schubert            }
207*e0c4386eSCy Schubert        },
208*e0c4386eSCy Schubert    );
209*e0c4386eSCy Schubert    push @tests, @tests_dtls1_2;
210*e0c4386eSCy Schubert}
211