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 Legacy Signature Algorithm Selection",
236 server => $server_pss,
238 "SignatureAlgorithms" => "RSA-PSS+SHA256",
241 "ExpectedServerCertType" => "RSA",
242 "ExpectedServerSignHash" => "SHA256",
243 "ExpectedServerSignType" => "RSA-PSS",
244 "ExpectedResult" => "Success"
248 name => "RSA-PSS Certificate Unified Signature Algorithm Selection",
249 server => $server_pss,
251 "SignatureAlgorithms" => "rsa_pss_pss_sha256",
254 "ExpectedServerCertType" => "RSA-PSS",
255 "ExpectedServerSignHash" => "SHA256",
256 "ExpectedServerSignType" => "RSA-PSS",
257 "ExpectedResult" => "Success"
261 name => "Only RSA-PSS Certificate",
262 server => $server_pss_only,
265 "ExpectedServerCertType" => "RSA-PSS",
266 "ExpectedServerSignHash" => "SHA256",
267 "ExpectedServerSignType" => "RSA-PSS",
268 "ExpectedResult" => "Success"
272 name => "RSA-PSS Certificate, no PSS signature algorithms",
273 server => $server_pss_only,
275 "SignatureAlgorithms" => "RSA+SHA256",
278 "ExpectedResult" => "ServerFail"
282 name => "Suite B P-256 Hash Algorithm Selection",
284 "ECDSA.Certificate" => test_pem("p256-server-cert.pem"),
285 "ECDSA.PrivateKey" => test_pem("p256-server-key.pem"),
286 "MaxProtocol" => "TLSv1.2",
287 "CipherString" => "SUITEB128"
290 "VerifyCAFile" => test_pem("p384-root.pem"),
291 "SignatureAlgorithms" => "ECDSA+SHA384:ECDSA+SHA256"
294 "ExpectedServerCertType" => "P-256",
295 "ExpectedServerSignHash" => "SHA256",
296 "ExpectedServerSignType" => "EC",
297 "ExpectedResult" => "Success"
301 name => "Suite B P-384 Hash Algorithm Selection",
303 "ECDSA.Certificate" => test_pem("p384-server-cert.pem"),
304 "ECDSA.PrivateKey" => test_pem("p384-server-key.pem"),
305 "MaxProtocol" => "TLSv1.2",
306 "CipherString" => "SUITEB128"
309 "VerifyCAFile" => test_pem("p384-root.pem"),
310 "SignatureAlgorithms" => "ECDSA+SHA256:ECDSA+SHA384"
313 "ExpectedServerCertType" => "P-384",
314 "ExpectedServerSignHash" => "SHA384",
315 "ExpectedServerSignType" => "EC",
316 "ExpectedResult" => "Success"
320 name => "TLS 1.2 Ed25519 Client Auth",
322 "VerifyCAFile" => test_pem("root-cert.pem"),
323 "VerifyMode" => "Require"
326 "EdDSA.Certificate" => test_pem("client-ed25519-cert.pem"),
327 "EdDSA.PrivateKey" => test_pem("client-ed25519-key.pem"),
328 "MinProtocol" => "TLSv1.2",
329 "MaxProtocol" => "TLSv1.2"
332 "ExpectedClientCertType" => "Ed25519",
333 "ExpectedClientSignType" => "Ed25519",
334 "ExpectedResult" => "Success"
339 my @tests_tls_1_1 = (
341 name => "Only RSA-PSS Certificate, TLS v1.1",
342 server => $server_pss_only,
344 "MaxProtocol" => "TLSv1.1",
347 "ExpectedResult" => "ServerFail"
352 push @tests, @tests_tls_1_1 unless disabled("tls1_1");
354 my $server_tls_1_3 = {
355 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
356 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
357 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
358 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
359 "MinProtocol" => "TLSv1.3",
360 "MaxProtocol" => "TLSv1.3"
363 my $server_tls_1_3_pss = {
364 "PSS.Certificate" => test_pem("server-pss-cert.pem"),
365 "PSS.PrivateKey" => test_pem("server-pss-key.pem"),
366 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
367 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
368 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
369 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
370 "MinProtocol" => "TLSv1.3",
371 "MaxProtocol" => "TLSv1.3"
374 my $client_tls_1_3 = {
375 "RSA.Certificate" => test_pem("ee-client-chain.pem"),
376 "RSA.PrivateKey" => test_pem("ee-key.pem"),
377 "ECDSA.Certificate" => test_pem("ee-ecdsa-client-chain.pem"),
378 "ECDSA.PrivateKey" => test_pem("ee-ecdsa-key.pem"),
379 "MinProtocol" => "TLSv1.3",
380 "MaxProtocol" => "TLSv1.3"
383 my @tests_tls_1_3 = (
385 name => "TLS 1.3 ECDSA Signature Algorithm Selection",
386 server => $server_tls_1_3,
388 "SignatureAlgorithms" => "ECDSA+SHA256",
391 "ExpectedServerCertType" => "P-256",
392 "ExpectedServerSignHash" => "SHA256",
393 "ExpectedServerSignType" => "EC",
394 "ExpectedServerCANames" => "empty",
395 "ExpectedResult" => "Success"
399 name => "TLS 1.3 ECDSA Signature Algorithm Selection compressed point",
401 "ECDSA.Certificate" => test_pem("server-cecdsa-cert.pem"),
402 "ECDSA.PrivateKey" => test_pem("server-cecdsa-key.pem"),
403 "MinProtocol" => "TLSv1.3",
404 "MaxProtocol" => "TLSv1.3"
407 "SignatureAlgorithms" => "ECDSA+SHA256",
410 "ExpectedResult" => "ServerFail"
414 name => "TLS 1.3 ECDSA Signature Algorithm Selection SHA1",
415 server => $server_tls_1_3,
417 "SignatureAlgorithms" => "ECDSA+SHA1",
420 "ExpectedResult" => "ServerFail"
424 name => "TLS 1.3 ECDSA Signature Algorithm Selection with PSS",
425 server => $server_tls_1_3,
427 "SignatureAlgorithms" => "ECDSA+SHA256:RSA-PSS+SHA256",
428 "RequestCAFile" => test_pem("root-cert.pem"),
431 "ExpectedServerCertType" => "P-256",
432 "ExpectedServerSignHash" => "SHA256",
433 "ExpectedServerSignType" => "EC",
434 "ExpectedServerCANames" => test_pem("root-cert.pem"),
435 "ExpectedResult" => "Success"
439 name => "TLS 1.3 RSA Signature Algorithm Selection SHA384 with PSS",
440 server => $server_tls_1_3,
442 "SignatureAlgorithms" => "ECDSA+SHA384:RSA-PSS+SHA384",
445 "ExpectedServerCertType" => "RSA",
446 "ExpectedServerSignHash" => "SHA384",
447 "ExpectedServerSignType" => "RSA-PSS",
448 "ExpectedResult" => "Success"
452 name => "TLS 1.3 ECDSA Signature Algorithm Selection, no ECDSA certificate",
454 "MinProtocol" => "TLSv1.3",
455 "MaxProtocol" => "TLSv1.3"
458 "SignatureAlgorithms" => "ECDSA+SHA256",
461 "ExpectedResult" => "ServerFail"
465 name => "TLS 1.3 RSA Signature Algorithm Selection, no PSS",
466 server => $server_tls_1_3,
468 "SignatureAlgorithms" => "RSA+SHA256",
471 "ExpectedResult" => "ServerFail"
475 name => "TLS 1.3 RSA-PSS Signature Algorithm Selection",
476 server => $server_tls_1_3,
478 "SignatureAlgorithms" => "RSA-PSS+SHA256",
481 "ExpectedServerCertType" => "RSA",
482 "ExpectedServerSignHash" => "SHA256",
483 "ExpectedServerSignType" => "RSA-PSS",
484 "ExpectedResult" => "Success"
488 name => "TLS 1.3 Ed25519 Signature Algorithm Selection",
489 server => $server_tls_1_3,
491 "SignatureAlgorithms" => "ed25519",
494 "ExpectedServerCertType" => "Ed25519",
495 "ExpectedServerSignType" => "Ed25519",
496 "ExpectedResult" => "Success"
500 name => "TLS 1.3 Ed25519 CipherString and Groups Selection",
501 server => $server_tls_1_3,
503 "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
504 # Excluding P-256 from the supported groups list should
505 # mean server still uses a P-256 certificate because supported
506 # groups is not used in signature selection for TLS 1.3
510 "ExpectedServerCertType" =>, "P-256",
511 "ExpectedServerSignType" =>, "EC",
512 "ExpectedResult" => "Success"
516 name => "TLS 1.3 RSA Client Auth Signature Algorithm Selection",
518 "ClientSignatureAlgorithms" => "PSS+SHA256",
519 "VerifyCAFile" => test_pem("root-cert.pem"),
520 "VerifyMode" => "Require"
522 client => $client_tls_1_3,
524 "ExpectedClientCertType" => "RSA",
525 "ExpectedClientSignHash" => "SHA256",
526 "ExpectedClientSignType" => "RSA-PSS",
527 "ExpectedClientCANames" => "empty",
528 "ExpectedResult" => "Success"
532 name => "TLS 1.3 RSA Client Auth Signature Algorithm Selection non-empty CA Names",
534 "ClientSignatureAlgorithms" => "PSS+SHA256",
535 "VerifyCAFile" => test_pem("root-cert.pem"),
536 "RequestCAFile" => test_pem("root-cert.pem"),
537 "VerifyMode" => "Require"
539 client => $client_tls_1_3,
541 "ExpectedClientCertType" => "RSA",
542 "ExpectedClientSignHash" => "SHA256",
543 "ExpectedClientSignType" => "RSA-PSS",
544 "ExpectedClientCANames" => test_pem("root-cert.pem"),
545 "ExpectedResult" => "Success"
549 name => "TLS 1.3 ECDSA Client Auth Signature Algorithm Selection",
551 "ClientSignatureAlgorithms" => "ECDSA+SHA256",
552 "VerifyCAFile" => test_pem("root-cert.pem"),
553 "VerifyMode" => "Require"
555 client => $client_tls_1_3,
557 "ExpectedClientCertType" => "P-256",
558 "ExpectedClientSignHash" => "SHA256",
559 "ExpectedClientSignType" => "EC",
560 "ExpectedResult" => "Success"
564 name => "TLS 1.3 Ed25519 Client Auth",
566 "VerifyCAFile" => test_pem("root-cert.pem"),
567 "VerifyMode" => "Require"
570 "EdDSA.Certificate" => test_pem("client-ed25519-cert.pem"),
571 "EdDSA.PrivateKey" => test_pem("client-ed25519-key.pem"),
572 "MinProtocol" => "TLSv1.3",
573 "MaxProtocol" => "TLSv1.3"
576 "ExpectedClientCertType" => "Ed25519",
577 "ExpectedClientSignType" => "Ed25519",
578 "ExpectedResult" => "Success"
583 push @tests, @tests_tls_1_3 unless disabled("tls1_3");
585 my @tests_dsa_tls_1_2 = (
587 name => "TLS 1.2 DSA Certificate Test",
589 "DSA.Certificate" => test_pem("server-dsa-cert.pem"),
590 "DSA.PrivateKey" => test_pem("server-dsa-key.pem"),
591 "DHParameters" => test_pem("dhp2048.pem"),
592 "MinProtocol" => "TLSv1.2",
593 "MaxProtocol" => "TLSv1.2",
594 "CipherString" => "ALL",
597 "SignatureAlgorithms" => "DSA+SHA256:DSA+SHA1",
598 "CipherString" => "ALL",
601 "ExpectedResult" => "Success"
606 my @tests_dsa_tls_1_3 = (
608 name => "TLS 1.3 Client Auth No TLS 1.3 Signature Algorithms",
610 "ClientSignatureAlgorithms" => "ECDSA+SHA1:DSA+SHA256:RSA+SHA256",
611 "VerifyCAFile" => test_pem("root-cert.pem"),
612 "VerifyMode" => "Request"
616 "ExpectedResult" => "ServerFail"
620 name => "TLS 1.3 DSA Certificate Test",
622 "DSA.Certificate" => test_pem("server-dsa-cert.pem"),
623 "DSA.PrivateKey" => test_pem("server-dsa-key.pem"),
624 "MinProtocol" => "TLSv1.3",
625 "MaxProtocol" => "TLSv1.3",
626 "CipherString" => "ALL",
629 "SignatureAlgorithms" => "DSA+SHA1:DSA+SHA256:ECDSA+SHA256",
630 "CipherString" => "ALL",
633 "ExpectedResult" => "ServerFail"
638 if (!disabled("dsa")) {
639 push @tests, @tests_dsa_tls_1_2 unless disabled("dh");
640 push @tests, @tests_dsa_tls_1_3 unless disabled("tls1_3");