@@ -1173,20 +1173,25 @@ test_just_tls_common(P, T) ->
11731173 ? cfg (P ++ [verify_mode ], none , T (#{<<" verify_mode" >> => <<" none" >>})),
11741174 M = tls_ca_raw (),
11751175 ? cfg (P ++ [cacertfile ], " priv/ca.pem" , T (M )),
1176- ? cfg (P ++ [certfile ], " priv/cert.pem" , T (M #{<<" certfile" >> => <<" priv/cert.pem" >>})),
1176+ % % Certfile with keyfile should work
1177+ ? cfg (P ++ [certfile ], " priv/cert.pem" , T (M #{<<" certfile" >> => <<" priv/cert.pem" >>,
1178+ <<" keyfile" >> => <<" priv/dc1.pem" >>})),
11771179 ? cfg (P ++ [ciphers ], " TLS_AES_256_GCM_SHA384" ,
11781180 T (M #{<<" ciphers" >> => <<" TLS_AES_256_GCM_SHA384" >>})),
11791181 ? cfg (P ++ [keyfile ], " priv/dc1.pem" , T (M #{<<" keyfile" >> => <<" priv/dc1.pem" >>})),
11801182 ? cfg (P ++ [password ], " secret" , T (M #{<<" password" >> => <<" secret" >>})),
11811183 ? cfg (P ++ [versions ], ['tlsv1.2' , 'tlsv1.3' ],
11821184 T (M #{<<" versions" >> => [<<" tlsv1.2" >>, <<" tlsv1.3" >>]})),
11831185 ? err (T (#{<<" verify_mode" >> => <<" whatever" >>})),
1184- ? err (T (M #{<<" certfile" >> => <<" no_such_file.pem" >>})),
11851186 ? err (T (M #{<<" cacertfile" >> => <<" no_such_file.pem" >>})),
11861187 ? err (T (M #{<<" ciphers" >> => [<<" TLS_AES_256_GCM_SHA384" >>]})),
11871188 ? err (T (M #{<<" keyfile" >> => <<" no_such_file.pem" >>})),
11881189 ? err (T (M #{<<" password" >> => false })),
1189- ? err (T (M #{<<" versions" >> => <<" tlsv1.2" >>})).
1190+ ? err (T (M #{<<" versions" >> => <<" tlsv1.2" >>})),
1191+ % % Certfile without keyfile should fail (OTP 28.1+ requirement)
1192+ ? err (T (#{<<" certfile" >> => <<" priv/cert.pem" >>})),
1193+ ? err (T (M #{<<" certfile" >> => <<" priv/cert.pem" >>})),
1194+ ? err (T (M #{<<" certfile" >> => <<" no_such_file.pem" >>})).
11901195
11911196test_just_tls_client_sni (ParentP , ParentT ) ->
11921197 P = ParentP ++ [server_name_indication ],
@@ -1447,20 +1452,23 @@ s2s_outgoing_tls(_Config) ->
14471452 ? cfgh (P , default_config (P ), T (#{})), % default options if tls section is present
14481453 ? cfgh (P ++ [verify_mode ], none , T (#{<<" verify_mode" >> => <<" none" >>})),
14491454 ? cfgh (P ++ [cacertfile ], " priv/ca.pem" , T (tls_ca_raw ())),
1450- ? cfgh (P ++ [certfile ], " priv/cert.pem" , T (#{<<" certfile" >> => <<" priv/cert.pem" >>})),
1455+ ? cfgh (P ++ [certfile ], " priv/cert.pem" , T (#{<<" certfile" >> => <<" priv/cert.pem" >>,
1456+ <<" keyfile" >> => <<" priv/dc1.pem" >>})),
14511457 ? cfgh (P ++ [ciphers ], " TLS_AES_256_GCM_SHA384" ,
14521458 T (#{<<" ciphers" >> => <<" TLS_AES_256_GCM_SHA384" >>})),
14531459 ? cfgh (P ++ [keyfile ], " priv/dc1.pem" , T (#{<<" keyfile" >> => <<" priv/dc1.pem" >>})),
14541460 ? cfgh (P ++ [password ], " secret" , T (#{<<" password" >> => <<" secret" >>})),
14551461 ? cfgh (P ++ [versions ], ['tlsv1.2' , 'tlsv1.3' ],
14561462 T (#{<<" versions" >> => [<<" tlsv1.2" >>, <<" tlsv1.3" >>]})),
14571463 ? err (T (#{<<" verify_mode" >> => <<" whatever" >>})),
1458- ? err (T (#{<<" certfile" >> => <<" no_such_file.pem" >>})),
14591464 ? err (T (#{<<" cacertfile" >> => <<" no_such_file.pem" >>})),
14601465 ? err (T (#{<<" ciphers" >> => [<<" TLS_AES_256_GCM_SHA384" >>]})),
14611466 ? err (T (#{<<" keyfile" >> => <<" no_such_file.pem" >>})),
14621467 ? err (T (#{<<" password" >> => false })),
1463- ? err (T (#{<<" versions" >> => <<" tlsv1.2" >>})).
1468+ ? err (T (#{<<" versions" >> => <<" tlsv1.2" >>})),
1469+ % % Certfile without keyfile should fail (OTP 28.1+ requirement)
1470+ ? err (T (#{<<" certfile" >> => <<" priv/cert.pem" >>})),
1471+ ? err (T (#{<<" certfile" >> => <<" no_such_file.pem" >>})).
14641472
14651473% % modules
14661474
0 commit comments