3 ## SSL test configurations
10 use OpenSSL::Test::Utils;
13 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
14 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
15 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
16 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
17 "MaxProtocol" => "TLSv1.2"
21 "PSS.Certificate" => test_pem("server-pss-cert.pem"),
22 "PSS.PrivateKey" => test_pem("server-pss-key.pem"),
23 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
24 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
25 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
26 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
27 "MaxProtocol" => "TLSv1.2"
30 my $server_pss_only = {
31 "Certificate" => test_pem("server-pss-cert.pem"),
32 "PrivateKey" => test_pem("server-pss-key.pem"),
37 name => "ECDSA CipherString Selection",
40 "CipherString" => "aECDSA",
41 "MaxProtocol" => "TLSv1.2",
42 "RequestCAFile" => test_pem("root-cert.pem"),
45 "ExpectedServerCertType" =>, "P-256",
46 "ExpectedServerSignType" =>, "EC",
47 # Note: certificate_authorities not sent for TLS < 1.3
48 "ExpectedServerCANames" =>, "empty",
49 "ExpectedResult" => "Success"
53 name => "Ed25519 CipherString and Signature Algorithm Selection",
56 "CipherString" => "aECDSA",
57 "MaxProtocol" => "TLSv1.2",
58 "SignatureAlgorithms" => "ed25519:ECDSA+SHA256",
59 "RequestCAFile" => test_pem("root-cert.pem"),
62 "ExpectedServerCertType" =>, "Ed25519",
63 "ExpectedServerSignType" =>, "Ed25519",
64 # Note: certificate_authorities not sent for TLS < 1.3
65 "ExpectedServerCANames" =>, "empty",
66 "ExpectedResult" => "Success"
70 name => "RSA CipherString Selection",
73 "CipherString" => "aRSA",
74 "MaxProtocol" => "TLSv1.2",
77 "ExpectedServerCertType" =>, "RSA",
78 "ExpectedServerSignType" =>, "RSA-PSS",
79 "ExpectedResult" => "Success"
83 name => "RSA-PSS Certificate CipherString Selection",
84 server => $server_pss,
86 "CipherString" => "aRSA",
87 "MaxProtocol" => "TLSv1.2",
90 "ExpectedServerCertType" =>, "RSA-PSS",
91 "ExpectedServerSignType" =>, "RSA-PSS",
92 "ExpectedResult" => "Success"
96 name => "P-256 CipherString and Signature Algorithm Selection",
99 "CipherString" => "aECDSA",
100 "MaxProtocol" => "TLSv1.2",
101 "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
104 "ExpectedServerCertType" => "P-256",
105 "ExpectedServerSignHash" => "SHA256",
106 "ExpectedServerSignType" => "EC",
107 "ExpectedResult" => "Success"
111 name => "Ed25519 CipherString and Curves Selection",
114 "CipherString" => "aECDSA",
115 "MaxProtocol" => "TLSv1.2",
116 "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
117 # Excluding P-256 from the supported curves list means server
118 # certificate should be Ed25519 and not P-256
122 "ExpectedServerCertType" =>, "Ed25519",
123 "ExpectedServerSignType" =>, "Ed25519",
124 "ExpectedResult" => "Success"
128 name => "ECDSA CipherString Selection, no ECDSA certificate",
130 "MaxProtocol" => "TLSv1.2"
133 "CipherString" => "aECDSA",
134 "MaxProtocol" => "TLSv1.2"
137 "ExpectedResult" => "ServerFail"
141 name => "ECDSA Signature Algorithm Selection",
144 "SignatureAlgorithms" => "ECDSA+SHA256",
147 "ExpectedServerCertType" => "P-256",
148 "ExpectedServerSignHash" => "SHA256",
149 "ExpectedServerSignType" => "EC",
150 "ExpectedResult" => "Success"
154 name => "ECDSA Signature Algorithm Selection SHA384",
157 "SignatureAlgorithms" => "ECDSA+SHA384",
160 "ExpectedServerCertType" => "P-256",
161 "ExpectedServerSignHash" => "SHA384",
162 "ExpectedServerSignType" => "EC",
163 "ExpectedResult" => "Success"
167 name => "ECDSA Signature Algorithm Selection SHA1",
170 "SignatureAlgorithms" => "ECDSA+SHA1",
173 "ExpectedServerCertType" => "P-256",
174 "ExpectedServerSignHash" => "SHA1",
175 "ExpectedServerSignType" => "EC",
176 "ExpectedResult" => "Success"
180 name => "ECDSA Signature Algorithm Selection compressed point",
182 "ECDSA.Certificate" => test_pem("server-cecdsa-cert.pem"),
183 "ECDSA.PrivateKey" => test_pem("server-cecdsa-key.pem"),
184 "MaxProtocol" => "TLSv1.2"
187 "SignatureAlgorithms" => "ECDSA+SHA256",
190 "ExpectedServerCertType" => "P-256",
191 "ExpectedServerSignHash" => "SHA256",
192 "ExpectedServerSignType" => "EC",
193 "ExpectedResult" => "Success"
197 name => "ECDSA Signature Algorithm Selection, no ECDSA certificate",
199 "MaxProtocol" => "TLSv1.2"
202 "SignatureAlgorithms" => "ECDSA+SHA256",
205 "ExpectedResult" => "ServerFail"
209 name => "RSA Signature Algorithm Selection",
212 "SignatureAlgorithms" => "RSA+SHA256",
215 "ExpectedServerCertType" => "RSA",
216 "ExpectedServerSignHash" => "SHA256",
217 "ExpectedServerSignType" => "RSA",
218 "ExpectedResult" => "Success"
222 name => "RSA-PSS Signature Algorithm Selection",
225 "SignatureAlgorithms" => "RSA-PSS+SHA256",
228 "ExpectedServerCertType" => "RSA",
229 "ExpectedServerSignHash" => "SHA256",
230 "ExpectedServerSignType" => "RSA-PSS",
231 "ExpectedResult" => "Success"
235 name => "RSA-PSS Certificate Signature Algorithm Selection",
236 server => $server_pss,
238 "SignatureAlgorithms" => "RSA-PSS+SHA256",
241 "ExpectedServerCertType" => "RSA-PSS",
242 "ExpectedServerSignHash" => "SHA256",
243 "ExpectedServerSignType" => "RSA-PSS",
244 "ExpectedResult" => "Success"
248 name => "Only RSA-PSS Certificate",
249 server => $server_pss_only,
252 "ExpectedServerCertType" => "RSA-PSS",
253 "ExpectedServerSignHash" => "SHA256",
254 "ExpectedServerSignType" => "RSA-PSS",
255 "ExpectedResult" => "Success"
259 name => "RSA-PSS Certificate, no PSS signature algorithms",
260 server => $server_pss_only,
262 "SignatureAlgorithms" => "RSA+SHA256",
265 "ExpectedResult" => "ServerFail"
269 name => "Suite B P-256 Hash Algorithm Selection",
271 "ECDSA.Certificate" => test_pem("p256-server-cert.pem"),
272 "ECDSA.PrivateKey" => test_pem("p256-server-key.pem"),
273 "MaxProtocol" => "TLSv1.2",
274 "CipherString" => "SUITEB128"
277 "VerifyCAFile" => test_pem("p384-root.pem"),
278 "SignatureAlgorithms" => "ECDSA+SHA384:ECDSA+SHA256"
281 "ExpectedServerCertType" => "P-256",
282 "ExpectedServerSignHash" => "SHA256",
283 "ExpectedServerSignType" => "EC",
284 "ExpectedResult" => "Success"
288 name => "Suite B P-384 Hash Algorithm Selection",
290 "ECDSA.Certificate" => test_pem("p384-server-cert.pem"),
291 "ECDSA.PrivateKey" => test_pem("p384-server-key.pem"),
292 "MaxProtocol" => "TLSv1.2",
293 "CipherString" => "SUITEB128"
296 "VerifyCAFile" => test_pem("p384-root.pem"),
297 "SignatureAlgorithms" => "ECDSA+SHA256:ECDSA+SHA384"
300 "ExpectedServerCertType" => "P-384",
301 "ExpectedServerSignHash" => "SHA384",
302 "ExpectedServerSignType" => "EC",
303 "ExpectedResult" => "Success"
307 name => "TLS 1.2 Ed25519 Client Auth",
309 "VerifyCAFile" => test_pem("root-cert.pem"),
310 "VerifyMode" => "Require"
313 "EdDSA.Certificate" => test_pem("client-ed25519-cert.pem"),
314 "EdDSA.PrivateKey" => test_pem("client-ed25519-key.pem"),
315 "MinProtocol" => "TLSv1.2",
316 "MaxProtocol" => "TLSv1.2"
319 "ExpectedClientCertType" => "Ed25519",
320 "ExpectedClientSignType" => "Ed25519",
321 "ExpectedResult" => "Success"
326 my @tests_tls_1_1 = (
328 name => "Only RSA-PSS Certificate, TLS v1.1",
329 server => $server_pss_only,
331 "MaxProtocol" => "TLSv1.1",
334 "ExpectedResult" => "ServerFail"
339 push @tests, @tests_tls_1_1 unless disabled("tls1_1");
341 my $server_tls_1_3 = {
342 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
343 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
344 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
345 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
346 "MinProtocol" => "TLSv1.3",
347 "MaxProtocol" => "TLSv1.3"
350 my $server_tls_1_3_pss = {
351 "PSS.Certificate" => test_pem("server-pss-cert.pem"),
352 "PSS.PrivateKey" => test_pem("server-pss-key.pem"),
353 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
354 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
355 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
356 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
357 "MinProtocol" => "TLSv1.3",
358 "MaxProtocol" => "TLSv1.3"
361 my $client_tls_1_3 = {
362 "RSA.Certificate" => test_pem("ee-client-chain.pem"),
363 "RSA.PrivateKey" => test_pem("ee-key.pem"),
364 "ECDSA.Certificate" => test_pem("ee-ecdsa-client-chain.pem"),
365 "ECDSA.PrivateKey" => test_pem("ee-ecdsa-key.pem"),
366 "MinProtocol" => "TLSv1.3",
367 "MaxProtocol" => "TLSv1.3"
370 my @tests_tls_1_3 = (
372 name => "TLS 1.3 ECDSA Signature Algorithm Selection",
373 server => $server_tls_1_3,
375 "SignatureAlgorithms" => "ECDSA+SHA256",
378 "ExpectedServerCertType" => "P-256",
379 "ExpectedServerSignHash" => "SHA256",
380 "ExpectedServerSignType" => "EC",
381 "ExpectedServerCANames" => "empty",
382 "ExpectedResult" => "Success"
386 name => "TLS 1.3 ECDSA Signature Algorithm Selection compressed point",
388 "ECDSA.Certificate" => test_pem("server-cecdsa-cert.pem"),
389 "ECDSA.PrivateKey" => test_pem("server-cecdsa-key.pem"),
390 "MinProtocol" => "TLSv1.3",
391 "MaxProtocol" => "TLSv1.3"
394 "SignatureAlgorithms" => "ECDSA+SHA256",
397 "ExpectedResult" => "ServerFail"
401 name => "TLS 1.3 ECDSA Signature Algorithm Selection SHA1",
402 server => $server_tls_1_3,
404 "SignatureAlgorithms" => "ECDSA+SHA1",
407 "ExpectedResult" => "ServerFail"
411 name => "TLS 1.3 ECDSA Signature Algorithm Selection with PSS",
412 server => $server_tls_1_3,
414 "SignatureAlgorithms" => "ECDSA+SHA256:RSA-PSS+SHA256",
415 "RequestCAFile" => test_pem("root-cert.pem"),
418 "ExpectedServerCertType" => "P-256",
419 "ExpectedServerSignHash" => "SHA256",
420 "ExpectedServerSignType" => "EC",
421 "ExpectedServerCANames" => test_pem("root-cert.pem"),
422 "ExpectedResult" => "Success"
426 name => "TLS 1.3 RSA Signature Algorithm Selection SHA384 with PSS",
427 server => $server_tls_1_3,
429 "SignatureAlgorithms" => "ECDSA+SHA384:RSA-PSS+SHA384",
432 "ExpectedServerCertType" => "RSA",
433 "ExpectedServerSignHash" => "SHA384",
434 "ExpectedServerSignType" => "RSA-PSS",
435 "ExpectedResult" => "Success"
439 name => "TLS 1.3 ECDSA Signature Algorithm Selection, no ECDSA certificate",
441 "MinProtocol" => "TLSv1.3",
442 "MaxProtocol" => "TLSv1.3"
445 "SignatureAlgorithms" => "ECDSA+SHA256",
448 "ExpectedResult" => "ServerFail"
452 name => "TLS 1.3 RSA Signature Algorithm Selection, no PSS",
453 server => $server_tls_1_3,
455 "SignatureAlgorithms" => "RSA+SHA256",
458 "ExpectedResult" => "ServerFail"
462 name => "TLS 1.3 RSA-PSS Signature Algorithm Selection",
463 server => $server_tls_1_3,
465 "SignatureAlgorithms" => "RSA-PSS+SHA256",
468 "ExpectedServerCertType" => "RSA",
469 "ExpectedServerSignHash" => "SHA256",
470 "ExpectedServerSignType" => "RSA-PSS",
471 "ExpectedResult" => "Success"
475 name => "TLS 1.3 Ed25519 Signature Algorithm Selection",
476 server => $server_tls_1_3,
478 "SignatureAlgorithms" => "ed25519",
481 "ExpectedServerCertType" => "Ed25519",
482 "ExpectedServerSignType" => "Ed25519",
483 "ExpectedResult" => "Success"
487 name => "TLS 1.3 Ed25519 CipherString and Groups Selection",
488 server => $server_tls_1_3,
490 "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
491 # Excluding P-256 from the supported groups list should
492 # mean server still uses a P-256 certificate because supported
493 # groups is not used in signature selection for TLS 1.3
497 "ExpectedServerCertType" =>, "P-256",
498 "ExpectedServerSignType" =>, "EC",
499 "ExpectedResult" => "Success"
503 name => "TLS 1.3 RSA Client Auth Signature Algorithm Selection",
505 "ClientSignatureAlgorithms" => "PSS+SHA256",
506 "VerifyCAFile" => test_pem("root-cert.pem"),
507 "VerifyMode" => "Require"
509 client => $client_tls_1_3,
511 "ExpectedClientCertType" => "RSA",
512 "ExpectedClientSignHash" => "SHA256",
513 "ExpectedClientSignType" => "RSA-PSS",
514 "ExpectedClientCANames" => "empty",
515 "ExpectedResult" => "Success"
519 name => "TLS 1.3 RSA Client Auth Signature Algorithm Selection non-empty CA Names",
521 "ClientSignatureAlgorithms" => "PSS+SHA256",
522 "VerifyCAFile" => test_pem("root-cert.pem"),
523 "RequestCAFile" => test_pem("root-cert.pem"),
524 "VerifyMode" => "Require"
526 client => $client_tls_1_3,
528 "ExpectedClientCertType" => "RSA",
529 "ExpectedClientSignHash" => "SHA256",
530 "ExpectedClientSignType" => "RSA-PSS",
531 "ExpectedClientCANames" => test_pem("root-cert.pem"),
532 "ExpectedResult" => "Success"
536 name => "TLS 1.3 ECDSA Client Auth Signature Algorithm Selection",
538 "ClientSignatureAlgorithms" => "ECDSA+SHA256",
539 "VerifyCAFile" => test_pem("root-cert.pem"),
540 "VerifyMode" => "Require"
542 client => $client_tls_1_3,
544 "ExpectedClientCertType" => "P-256",
545 "ExpectedClientSignHash" => "SHA256",
546 "ExpectedClientSignType" => "EC",
547 "ExpectedResult" => "Success"
551 name => "TLS 1.3 Ed25519 Client Auth",
553 "VerifyCAFile" => test_pem("root-cert.pem"),
554 "VerifyMode" => "Require"
557 "EdDSA.Certificate" => test_pem("client-ed25519-cert.pem"),
558 "EdDSA.PrivateKey" => test_pem("client-ed25519-key.pem"),
559 "MinProtocol" => "TLSv1.3",
560 "MaxProtocol" => "TLSv1.3"
563 "ExpectedClientCertType" => "Ed25519",
564 "ExpectedClientSignType" => "Ed25519",
565 "ExpectedResult" => "Success"
570 push @tests, @tests_tls_1_3 unless disabled("tls1_3");
572 my @tests_dsa_tls_1_2 = (
574 name => "TLS 1.2 DSA Certificate Test",
576 "DSA.Certificate" => test_pem("server-dsa-cert.pem"),
577 "DSA.PrivateKey" => test_pem("server-dsa-key.pem"),
578 "DHParameters" => test_pem("dhp2048.pem"),
579 "MinProtocol" => "TLSv1.2",
580 "MaxProtocol" => "TLSv1.2",
581 "CipherString" => "ALL",
584 "SignatureAlgorithms" => "DSA+SHA256:DSA+SHA1",
585 "CipherString" => "ALL",
588 "ExpectedResult" => "Success"
593 my @tests_dsa_tls_1_3 = (
595 name => "TLS 1.3 Client Auth No TLS 1.3 Signature Algorithms",
597 "ClientSignatureAlgorithms" => "ECDSA+SHA1:DSA+SHA256:RSA+SHA256",
598 "VerifyCAFile" => test_pem("root-cert.pem"),
599 "VerifyMode" => "Request"
603 "ExpectedResult" => "ServerFail"
607 name => "TLS 1.3 DSA Certificate Test",
609 "DSA.Certificate" => test_pem("server-dsa-cert.pem"),
610 "DSA.PrivateKey" => test_pem("server-dsa-key.pem"),
611 "MinProtocol" => "TLSv1.3",
612 "MaxProtocol" => "TLSv1.3",
613 "CipherString" => "ALL",
616 "SignatureAlgorithms" => "DSA+SHA1:DSA+SHA256:ECDSA+SHA256",
617 "CipherString" => "ALL",
620 "ExpectedResult" => "ServerFail"
625 if (!disabled("dsa")) {
626 push @tests, @tests_dsa_tls_1_2 unless disabled("dh");
627 push @tests, @tests_dsa_tls_1_3 unless disabled("tls1_3");