Fix issue in 18-dtls-renegotiate.conf.in
[openssl.git] / test / ssl-tests / 08-npn.conf.in
1 # -*- mode: perl; -*-
2 # Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved.
3 #
4 # Licensed under the OpenSSL license (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
10 ## Test NPN. Note that NPN is only supported up to TLSv1.2
11
12 use strict;
13 use warnings;
14
15 package ssltests;
16
17 our @tests = (
18     {
19         name => "npn-simple",
20         server => {
21             extra => {
22                 "NPNProtocols" => "foo",
23             },
24         },
25         client => {
26             extra => {
27                 "NPNProtocols" => "foo",
28             },
29             "MaxProtocol" => "TLSv1.2"
30         },
31         test => {
32             "ExpectedNPNProtocol" => "foo",
33         },
34     },
35     {
36         name => "npn-client-finds-match",
37         server => {
38             extra => {
39                 "NPNProtocols" => "baz,bar",
40             },
41         },
42         client => {
43             extra => {
44                 "NPNProtocols" => "foo,bar",
45             },
46             "MaxProtocol" => "TLSv1.2"
47         },
48         test => {
49             "ExpectedNPNProtocol" => "bar",
50         },
51     },
52     {
53         name => "npn-client-honours-server-pref",
54         server => {
55             extra => {
56                 "NPNProtocols" => "bar,foo",
57             },
58         },
59         client => {
60             extra => {
61                 "NPNProtocols" => "foo,bar",
62             },
63             "MaxProtocol" => "TLSv1.2"
64         },
65         test => {
66             "ExpectedNPNProtocol" => "bar",
67         },
68     },
69     {
70         name => "npn-client-first-pref-on-mismatch",
71         server => {
72             extra => {
73                 "NPNProtocols" => "baz",
74             },
75         },
76         client => {
77             extra => {
78                 "NPNProtocols" => "foo,bar",
79             },
80             "MaxProtocol" => "TLSv1.2"
81         },
82         test => {
83             "ExpectedNPNProtocol" => "foo",
84         },
85     },
86     {
87         name => "npn-no-server-support",
88         server => {},
89         client => {
90             extra => {
91                 "NPNProtocols" => "foo",
92             },
93             "MaxProtocol" => "TLSv1.2"
94         },
95         test => {
96             "ExpectedNPNProtocol" => undef,
97         },
98     },
99     {
100         name => "npn-no-client-support",
101         server => {
102             extra => {
103                 "NPNProtocols" => "foo",
104             },
105         },
106         client => {
107             "MaxProtocol" => "TLSv1.2"
108         },
109         test => {
110             "ExpectedNPNProtocol" => undef,
111         },
112     },
113     {
114         name => "npn-with-sni-no-context-switch",
115         server => {
116             extra => {
117                 "NPNProtocols" => "foo",
118                 "ServerNameCallback" => "IgnoreMismatch",
119             },
120         },
121         server2 => {
122             extra => {
123                 "NPNProtocols" => "bar",
124             },
125         },
126         client => {
127             extra => {
128                 "NPNProtocols" => "foo,bar",
129                 "ServerName" => "server1",
130             },
131             "MaxProtocol" => "TLSv1.2"
132         },
133         test => {
134             "ExpectedServerName" => "server1",
135             "ExpectedNPNProtocol" => "foo",
136         },
137     },
138     {
139         name => "npn-with-sni-context-switch",
140         server => {
141             extra => {
142                 "NPNProtocols" => "foo",
143                 "ServerNameCallback" => "IgnoreMismatch",
144             },
145         },
146         server2 => {
147             extra => {
148                 "NPNProtocols" => "bar",
149             },
150         },
151         client => {
152             extra => {
153                 "NPNProtocols" => "foo,bar",
154                 "ServerName" => "server2",
155             },
156             "MaxProtocol" => "TLSv1.2"
157         },
158         test => {
159             "ExpectedServerName" => "server2",
160             "ExpectedNPNProtocol" => "bar",
161         },
162     },
163     {
164         name => "npn-selected-sni-server-supports-npn",
165         server => {
166             extra => {
167                 "ServerNameCallback" => "IgnoreMismatch",
168             },
169         },
170         server2 => {
171             extra => {
172                 "NPNProtocols" => "bar",
173             },
174         },
175         client => {
176             extra => {
177                 "NPNProtocols" => "foo,bar",
178                 "ServerName" => "server2",
179             },
180             "MaxProtocol" => "TLSv1.2"
181         },
182         test => {
183             "ExpectedServerName" => "server2",
184             "ExpectedNPNProtocol" => "bar",
185         },
186     },
187     {
188         name => "npn-selected-sni-server-does-not-support-npn",
189         server => {
190             extra => {
191                 "NPNProtocols" => "bar",
192                 "ServerNameCallback" => "IgnoreMismatch",
193             },
194         },
195         server2 => { },
196         client => {
197             extra => {
198                 "NPNProtocols" => "foo,bar",
199                 "ServerName" => "server2",
200             },
201             "MaxProtocol" => "TLSv1.2"
202         },
203         test => {
204              "ExpectedServerName" => "server2",
205              "ExpectedNPNProtocol" => undef,
206         },
207     },
208     {
209         name => "alpn-preferred-over-npn",
210         server => {
211             extra => {
212                 "ALPNProtocols" => "foo",
213                 "NPNProtocols" => "bar",
214             },
215         },
216         client => {
217             extra => {
218                 "ALPNProtocols" => "foo",
219                 "NPNProtocols" => "bar",
220             },
221             "MaxProtocol" => "TLSv1.2"
222         },
223         test => {
224             "ExpectedALPNProtocol" => "foo",
225             "ExpectedNPNProtocol" => undef,
226         },
227     },
228     {
229         name => "sni-npn-preferred-over-alpn",
230         server => {
231             extra => {
232                 "ServerNameCallback" => "IgnoreMismatch",
233                 "ALPNProtocols" => "foo",
234             },
235         },
236         server2 => {
237             extra => {
238                 "NPNProtocols" => "bar",
239             },
240         },
241         client => {
242             extra => {
243                 "ServerName" => "server2",
244                 "ALPNProtocols" => "foo",
245                 "NPNProtocols" => "bar",
246             },
247             "MaxProtocol" => "TLSv1.2"
248         },
249         test => {
250             "ExpectedALPNProtocol" => undef,
251             "ExpectedNPNProtocol" => "bar",
252             "ExpectedServerName" => "server2",  
253         },
254     },
255     {
256         name => "npn-simple-resumption",
257         server => {
258             extra => {
259                 "NPNProtocols" => "foo",
260             },
261         },
262         client => {
263             extra => {
264                 "NPNProtocols" => "foo",
265             },
266             "MaxProtocol" => "TLSv1.2"
267         },
268         test => {
269             "HandshakeMode" => "Resume",
270             "ResumptionExpected" => "Yes",
271             "ExpectedNPNProtocol" => "foo",
272         },
273     },
274     {
275         name => "npn-server-switch-resumption",
276         server => {
277             extra => {
278                 "NPNProtocols" => "bar,foo",
279             },
280         },
281         resume_server => {
282             extra => {
283                 "NPNProtocols" => "baz,foo",
284             },
285         },
286         client => {
287             extra => {
288                 "NPNProtocols" => "foo,bar,baz",
289             },
290             "MaxProtocol" => "TLSv1.2"
291         },
292         test => {
293             "HandshakeMode" => "Resume",
294             "ResumptionExpected" => "Yes",
295             "ExpectedNPNProtocol" => "baz",
296         },
297     },
298     {
299         name => "npn-client-switch-resumption",
300         server => {
301             extra => {
302                 "NPNProtocols" => "foo,bar,baz",
303             },
304         },
305         client => {
306             extra => {
307                 "NPNProtocols" => "foo,baz",
308             },
309             "MaxProtocol" => "TLSv1.2"
310         },
311         resume_client => {
312             extra => {
313                 "NPNProtocols" => "bar,baz",
314             },
315             "MaxProtocol" => "TLSv1.2"
316         },
317         test => {
318             "HandshakeMode" => "Resume",
319             "ResumptionExpected" => "Yes",
320             "ExpectedNPNProtocol" => "bar",
321         },
322     },
323     {
324         name => "npn-client-first-pref-on-mismatch-resumption",
325         server => {
326             extra => {
327                 "NPNProtocols" => "bar",
328             },
329         },
330         resume_server => {
331             extra => {
332                 "NPNProtocols" => "baz",
333             },
334         },
335         client => {
336             extra => {
337                 "NPNProtocols" => "foo,bar",
338             },
339             "MaxProtocol" => "TLSv1.2"
340         },
341         test => {
342             "HandshakeMode" => "Resume",
343             "ResumptionExpected" => "Yes",
344             "ExpectedNPNProtocol" => "foo",
345         },
346     },
347     {
348         name => "npn-no-server-support-resumption",
349         server => {
350             extra => {
351                 "NPNProtocols" => "foo",
352             },
353         },
354         resume_server => { },
355         client => {
356             extra => {
357                 "NPNProtocols" => "foo",
358             },
359             "MaxProtocol" => "TLSv1.2"
360         },
361         test => {
362             "HandshakeMode" => "Resume",
363             "ResumptionExpected" => "Yes",
364             "ExpectedNPNProtocol" => undef,
365         },
366     },
367     {
368         name => "npn-no-client-support-resumption",
369         server => {
370             extra => {
371                 "NPNProtocols" => "foo",
372             },
373         },
374         client => {
375             extra => {
376                 "NPNProtocols" => "foo",
377             },
378             "MaxProtocol" => "TLSv1.2"
379         },
380         resume_client => {
381             "MaxProtocol" => "TLSv1.2"
382         },
383         test => {
384             "HandshakeMode" => "Resume",
385             "ResumptionExpected" => "Yes",
386             "ExpectedNPNProtocol" => undef,
387         },
388     },
389     {
390         name => "alpn-preferred-over-npn-resumption",
391         server => {
392             extra => {
393                 "NPNProtocols" => "bar",
394             },
395         },
396         resume_server => {
397             extra => {
398                 "ALPNProtocols" => "foo",
399                 "NPNProtocols" => "baz",
400             },
401         },
402         client => {
403             extra => {
404                 "ALPNProtocols" => "foo",
405                 "NPNProtocols" => "bar,baz",
406             },
407             "MaxProtocol" => "TLSv1.2"
408         },
409         test => {
410             "HandshakeMode" => "Resume",
411             "ResumptionExpected" => "Yes",
412             "ExpectedALPNProtocol" => "foo",
413             "ExpectedNPNProtocol" => undef,
414         },
415     },
416     {
417         name => "npn-used-if-alpn-not-supported-resumption",
418         server => {
419             extra => {
420                 "ALPNProtocols" => "foo",
421                 "NPNProtocols" => "bar",
422             },
423         },
424         resume_server => {
425             extra => {
426                 "NPNProtocols" => "baz",
427             },
428         },
429         client => {
430             extra => {
431                 "ALPNProtocols" => "foo",
432                 "NPNProtocols" => "bar,baz",
433             },
434             "MaxProtocol" => "TLSv1.2"
435         },
436         test => {
437             "HandshakeMode" => "Resume",
438             "ResumptionExpected" => "Yes",
439             "ExpectedALPNProtocol" => undef,
440             "ExpectedNPNProtocol" => "baz",
441         },
442     },
443 );