diff options
author | Ingela Anderton Andin <[email protected]> | 2018-04-17 16:43:28 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2018-04-30 07:30:35 +0200 |
commit | a34cb1484224134c6e02ce033459523d2333f430 (patch) | |
tree | 253c39f53ee6d2b5d9ce7ce4c66743c1a52ab433 /lib/ssl/test/ssl_test_lib.erl | |
parent | 6f4139977174602a558e98f09d96295122bc3d7f (diff) | |
download | otp-a34cb1484224134c6e02ce033459523d2333f430.tar.gz otp-a34cb1484224134c6e02ce033459523d2333f430.tar.bz2 otp-a34cb1484224134c6e02ce033459523d2333f430.zip |
ssl: Avoid hardcoding of cipher suites and fix ECDH suite handling
ECDH suite handling did not use the EC parameters form the certs
as expected.
Diffstat (limited to 'lib/ssl/test/ssl_test_lib.erl')
-rw-r--r-- | lib/ssl/test/ssl_test_lib.erl | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl index a45249b75e..4022f49077 100644 --- a/lib/ssl/test/ssl_test_lib.erl +++ b/lib/ssl/test/ssl_test_lib.erl @@ -1434,16 +1434,33 @@ sufficient_crypto_support(_) -> check_key_exchange_send_active(Socket, false) -> send_recv_result_active(Socket); check_key_exchange_send_active(Socket, KeyEx) -> - {ok, [{cipher_suite, Suite}]} = ssl:connection_information(Socket, [cipher_suite]), - true = check_key_exchange(Suite, KeyEx), + {ok, Info} = + ssl:connection_information(Socket, [cipher_suite, protocol]), + Suite = proplists:get_value(cipher_suite, Info), + Version = proplists:get_value(protocol, Info), + true = check_key_exchange(Suite, KeyEx, Version), send_recv_result_active(Socket). -check_key_exchange({KeyEx,_, _}, KeyEx) -> +check_key_exchange({KeyEx,_, _}, KeyEx, _) -> true; -check_key_exchange({KeyEx,_,_,_}, KeyEx) -> +check_key_exchange({KeyEx,_,_,_}, KeyEx, _) -> true; -check_key_exchange(KeyEx1, KeyEx2) -> - ct:pal("Negotiated ~p Expected ~p", [KeyEx1, KeyEx2]), +check_key_exchange(KeyEx1, KeyEx2, Version) -> + case Version of + 'tlsv1.2' -> + v_1_2_check(element(1, KeyEx1), KeyEx2); + 'dtlsv1.2' -> + v_1_2_check(element(1, KeyEx1), KeyEx2); + _ -> + ct:pal("Negotiated ~p Expected ~p", [KeyEx1, KeyEx2]), + false + end. + +v_1_2_check(ecdh_ecdsa, ecdh_rsa) -> + true; +v_1_2_check(ecdh_rsa, ecdh_ecdsa) -> + true; +v_1_2_check(_, _) -> false. send_recv_result_active(Socket) -> |