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 => "Only RSA-PSS Certificate, TLS v1.1",
270 server => $server_pss_only,
272 "MaxProtocol" => "TLSv1.1",
275 "ExpectedResult" => "ServerFail"
279 name => "Suite B P-256 Hash Algorithm Selection",
281 "ECDSA.Certificate" => test_pem("p256-server-cert.pem"),
282 "ECDSA.PrivateKey" => test_pem("p256-server-key.pem"),
283 "MaxProtocol" => "TLSv1.2",
284 "CipherString" => "SUITEB128"
287 "VerifyCAFile" => test_pem("p384-root.pem"),
288 "SignatureAlgorithms" => "ECDSA+SHA384:ECDSA+SHA256"
291 "ExpectedServerCertType" => "P-256",
292 "ExpectedServerSignHash" => "SHA256",
293 "ExpectedServerSignType" => "EC",
294 "ExpectedResult" => "Success"
298 name => "Suite B P-384 Hash Algorithm Selection",
300 "ECDSA.Certificate" => test_pem("p384-server-cert.pem"),
301 "ECDSA.PrivateKey" => test_pem("p384-server-key.pem"),
302 "MaxProtocol" => "TLSv1.2",
303 "CipherString" => "SUITEB128"
306 "VerifyCAFile" => test_pem("p384-root.pem"),
307 "SignatureAlgorithms" => "ECDSA+SHA256:ECDSA+SHA384"
310 "ExpectedServerCertType" => "P-384",
311 "ExpectedServerSignHash" => "SHA384",
312 "ExpectedServerSignType" => "EC",
313 "ExpectedResult" => "Success"
317 name => "TLS 1.2 Ed25519 Client Auth",
319 "VerifyCAFile" => test_pem("root-cert.pem"),
320 "VerifyMode" => "Require"
323 "EdDSA.Certificate" => test_pem("client-ed25519-cert.pem"),
324 "EdDSA.PrivateKey" => test_pem("client-ed25519-key.pem"),
325 "MinProtocol" => "TLSv1.2",
326 "MaxProtocol" => "TLSv1.2"
329 "ExpectedClientCertType" => "Ed25519",
330 "ExpectedClientSignType" => "Ed25519",
331 "ExpectedResult" => "Success"
336 my $server_tls_1_3 = {
337 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
338 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
339 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
340 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
341 "MinProtocol" => "TLSv1.3",
342 "MaxProtocol" => "TLSv1.3"
345 my $server_tls_1_3_pss = {
346 "PSS.Certificate" => test_pem("server-pss-cert.pem"),
347 "PSS.PrivateKey" => test_pem("server-pss-key.pem"),
348 "ECDSA.Certificate" => test_pem("server-ecdsa-cert.pem"),
349 "ECDSA.PrivateKey" => test_pem("server-ecdsa-key.pem"),
350 "EdDSA.Certificate" => test_pem("server-ed25519-cert.pem"),
351 "EdDSA.PrivateKey" => test_pem("server-ed25519-key.pem"),
352 "MinProtocol" => "TLSv1.3",
353 "MaxProtocol" => "TLSv1.3"
356 my $client_tls_1_3 = {
357 "RSA.Certificate" => test_pem("ee-client-chain.pem"),
358 "RSA.PrivateKey" => test_pem("ee-key.pem"),
359 "ECDSA.Certificate" => test_pem("ee-ecdsa-client-chain.pem"),
360 "ECDSA.PrivateKey" => test_pem("ee-ecdsa-key.pem"),
361 "MinProtocol" => "TLSv1.3",
362 "MaxProtocol" => "TLSv1.3"
365 my @tests_tls_1_3 = (
367 name => "TLS 1.3 ECDSA Signature Algorithm Selection",
368 server => $server_tls_1_3,
370 "SignatureAlgorithms" => "ECDSA+SHA256",
373 "ExpectedServerCertType" => "P-256",
374 "ExpectedServerSignHash" => "SHA256",
375 "ExpectedServerSignType" => "EC",
376 "ExpectedServerCANames" => "empty",
377 "ExpectedResult" => "Success"
381 name => "TLS 1.3 ECDSA Signature Algorithm Selection compressed point",
383 "ECDSA.Certificate" => test_pem("server-cecdsa-cert.pem"),
384 "ECDSA.PrivateKey" => test_pem("server-cecdsa-key.pem"),
385 "MinProtocol" => "TLSv1.3",
386 "MaxProtocol" => "TLSv1.3"
389 "SignatureAlgorithms" => "ECDSA+SHA256",
392 "ExpectedResult" => "ServerFail"
396 name => "TLS 1.3 ECDSA Signature Algorithm Selection SHA1",
397 server => $server_tls_1_3,
399 "SignatureAlgorithms" => "ECDSA+SHA1",
402 "ExpectedResult" => "ServerFail"
406 name => "TLS 1.3 ECDSA Signature Algorithm Selection with PSS",
407 server => $server_tls_1_3,
409 "SignatureAlgorithms" => "ECDSA+SHA256:RSA-PSS+SHA256",
410 "RequestCAFile" => test_pem("root-cert.pem"),
413 "ExpectedServerCertType" => "P-256",
414 "ExpectedServerSignHash" => "SHA256",
415 "ExpectedServerSignType" => "EC",
416 "ExpectedServerCANames" => test_pem("root-cert.pem"),
417 "ExpectedResult" => "Success"
421 name => "TLS 1.3 RSA Signature Algorithm Selection SHA384 with PSS",
422 server => $server_tls_1_3,
424 "SignatureAlgorithms" => "ECDSA+SHA384:RSA-PSS+SHA384",
427 "ExpectedServerCertType" => "RSA",
428 "ExpectedServerSignHash" => "SHA384",
429 "ExpectedServerSignType" => "RSA-PSS",
430 "ExpectedResult" => "Success"
434 name => "TLS 1.3 ECDSA Signature Algorithm Selection, no ECDSA certificate",
436 "MinProtocol" => "TLSv1.3",
437 "MaxProtocol" => "TLSv1.3"
440 "SignatureAlgorithms" => "ECDSA+SHA256",
443 "ExpectedResult" => "ServerFail"
447 name => "TLS 1.3 RSA Signature Algorithm Selection, no PSS",
448 server => $server_tls_1_3,
450 "SignatureAlgorithms" => "RSA+SHA256",
453 "ExpectedResult" => "ServerFail"
457 name => "TLS 1.3 RSA-PSS Signature Algorithm Selection",
458 server => $server_tls_1_3,
460 "SignatureAlgorithms" => "RSA-PSS+SHA256",
463 "ExpectedServerCertType" => "RSA",
464 "ExpectedServerSignHash" => "SHA256",
465 "ExpectedServerSignType" => "RSA-PSS",
466 "ExpectedResult" => "Success"
470 name => "TLS 1.3 Ed25519 Signature Algorithm Selection",
471 server => $server_tls_1_3,
473 "SignatureAlgorithms" => "ed25519",
476 "ExpectedServerCertType" => "Ed25519",
477 "ExpectedServerSignType" => "Ed25519",
478 "ExpectedResult" => "Success"
482 name => "TLS 1.3 Ed25519 CipherString and Groups Selection",
483 server => $server_tls_1_3,
485 "SignatureAlgorithms" => "ECDSA+SHA256:ed25519",
486 # Excluding P-256 from the supported groups list should
487 # mean server still uses a P-256 certificate because supported
488 # groups is not used in signature selection for TLS 1.3
492 "ExpectedServerCertType" =>, "P-256",
493 "ExpectedServerSignType" =>, "EC",
494 "ExpectedResult" => "Success"
498 name => "TLS 1.3 RSA Client Auth Signature Algorithm Selection",
500 "ClientSignatureAlgorithms" => "PSS+SHA256",
501 "VerifyCAFile" => test_pem("root-cert.pem"),
502 "VerifyMode" => "Require"
504 client => $client_tls_1_3,
506 "ExpectedClientCertType" => "RSA",
507 "ExpectedClientSignHash" => "SHA256",
508 "ExpectedClientSignType" => "RSA-PSS",
509 "ExpectedClientCANames" => "empty",
510 "ExpectedResult" => "Success"
514 name => "TLS 1.3 RSA Client Auth Signature Algorithm Selection non-empty CA Names",
516 "ClientSignatureAlgorithms" => "PSS+SHA256",
517 "VerifyCAFile" => test_pem("root-cert.pem"),
518 "RequestCAFile" => test_pem("root-cert.pem"),
519 "VerifyMode" => "Require"
521 client => $client_tls_1_3,
523 "ExpectedClientCertType" => "RSA",
524 "ExpectedClientSignHash" => "SHA256",
525 "ExpectedClientSignType" => "RSA-PSS",
526 "ExpectedClientCANames" => test_pem("root-cert.pem"),
527 "ExpectedResult" => "Success"
531 name => "TLS 1.3 ECDSA Client Auth Signature Algorithm Selection",
533 "ClientSignatureAlgorithms" => "ECDSA+SHA256",
534 "VerifyCAFile" => test_pem("root-cert.pem"),
535 "VerifyMode" => "Require"
537 client => $client_tls_1_3,
539 "ExpectedClientCertType" => "P-256",
540 "ExpectedClientSignHash" => "SHA256",
541 "ExpectedClientSignType" => "EC",
542 "ExpectedResult" => "Success"
546 name => "TLS 1.3 Ed25519 Client Auth",
548 "VerifyCAFile" => test_pem("root-cert.pem"),
549 "VerifyMode" => "Require"
552 "EdDSA.Certificate" => test_pem("client-ed25519-cert.pem"),
553 "EdDSA.PrivateKey" => test_pem("client-ed25519-key.pem"),
554 "MinProtocol" => "TLSv1.3",
555 "MaxProtocol" => "TLSv1.3"
558 "ExpectedClientCertType" => "Ed25519",
559 "ExpectedClientSignType" => "Ed25519",
560 "ExpectedResult" => "Success"
565 push @tests, @tests_tls_1_3 unless disabled("tls1_3");
567 my @tests_dsa_tls_1_2 = (
569 name => "TLS 1.2 DSA Certificate Test",
571 "DSA.Certificate" => test_pem("server-dsa-cert.pem"),
572 "DSA.PrivateKey" => test_pem("server-dsa-key.pem"),
573 "DHParameters" => test_pem("dhp2048.pem"),
574 "MinProtocol" => "TLSv1.2",
575 "MaxProtocol" => "TLSv1.2",
576 "CipherString" => "ALL",
579 "SignatureAlgorithms" => "DSA+SHA256:DSA+SHA1",
580 "CipherString" => "ALL",
583 "ExpectedResult" => "Success"
588 my @tests_dsa_tls_1_3 = (
590 name => "TLS 1.3 Client Auth No TLS 1.3 Signature Algorithms",
592 "ClientSignatureAlgorithms" => "ECDSA+SHA1:DSA+SHA256:RSA+SHA256",
593 "VerifyCAFile" => test_pem("root-cert.pem"),
594 "VerifyMode" => "Request"
598 "ExpectedResult" => "ServerFail"
602 name => "TLS 1.3 DSA Certificate Test",
604 "DSA.Certificate" => test_pem("server-dsa-cert.pem"),
605 "DSA.PrivateKey" => test_pem("server-dsa-key.pem"),
606 "MinProtocol" => "TLSv1.3",
607 "MaxProtocol" => "TLSv1.3",
608 "CipherString" => "ALL",
611 "SignatureAlgorithms" => "DSA+SHA1:DSA+SHA256:ECDSA+SHA256",
612 "CipherString" => "ALL",
615 "ExpectedResult" => "ServerFail"
620 if (!disabled("dsa")) {
621 push @tests, @tests_dsa_tls_1_2 unless disabled("dh");
622 push @tests, @tests_dsa_tls_1_3 unless disabled("tls1_3");