diff options
| author | Ingela Anderton Andin <[email protected]> | 2019-01-10 15:51:35 +0100 | 
|---|---|---|
| committer | Ingela Anderton Andin <[email protected]> | 2019-01-10 15:51:35 +0100 | 
| commit | 27092854c046a9094ec5801b2e2179af4420272b (patch) | |
| tree | e504b605f2a96b05715d658518b50e5341eefa2c /lib/ssl/test | |
| parent | 8c9eee40c1f8a136ea1ab3179be465afe3b553d3 (diff) | |
| parent | 99e235762c021af7107e7c2e9f08c62a21d41f85 (diff) | |
| download | otp-27092854c046a9094ec5801b2e2179af4420272b.tar.gz otp-27092854c046a9094ec5801b2e2179af4420272b.tar.bz2 otp-27092854c046a9094ec5801b2e2179af4420272b.zip  | |
Merge branch 'maint'
Diffstat (limited to 'lib/ssl/test')
| -rw-r--r-- | lib/ssl/test/ssl_payload_SUITE.erl | 144 | ||||
| -rw-r--r-- | lib/ssl/test/ssl_test_lib.erl | 75 | ||||
| -rw-r--r-- | lib/ssl/test/ssl_to_openssl_SUITE.erl | 5 | 
3 files changed, 83 insertions, 141 deletions
diff --git a/lib/ssl/test/ssl_payload_SUITE.erl b/lib/ssl/test/ssl_payload_SUITE.erl index 0f5a041a1b..27b9c258a0 100644 --- a/lib/ssl/test/ssl_payload_SUITE.erl +++ b/lib/ssl/test/ssl_payload_SUITE.erl @@ -574,50 +574,42 @@ client_active_once_server_close(            [{node, ClientNode}, {port, Port},             {host, Hostname},             {from, self()}, -           {mfa, {?MODULE, active_once_recv, [Length]}}, +           {mfa, {ssl_test_lib, active_once_recv, [Length]}},             {options,[{active, once}, {mode, binary} | ClientOpts]}]),      %%      ssl_test_lib:check_result(Server, ok, Client, ok). -send(Socket, Data, Count, Verify) -> -    send(Socket, Data, Count, <<>>, Verify). -%% -send(_Socket, _Data, 0, Acc, _Verify) -> -    Acc; -send(Socket, Data, Count, Acc, Verify) -> +send(_Socket, _Data, 0, _) -> +    ok; +send(Socket, Data, Count, RecvEcho) ->      ok = ssl:send(Socket, Data), -    NewAcc = Verify(Acc), -    send(Socket, Data, Count - 1, NewAcc, Verify). - +    RecvEcho(), +    send(Socket, Data, Count - 1, RecvEcho).  send_close(Socket, Data) ->      ok = ssl:send(Socket, Data),      ssl:close(Socket). -    +  sender(Socket, Data) ->      ct:log("Sender recv: ~p~n", [ssl:getopts(Socket, [active])]), -    <<>> = -        send( -          Socket, Data, 100, -          fun(Acc) -> verify_recv(Socket, Data, Acc) end), -    ok. +    send(Socket, Data, 100, +              fun() ->  +                      ssl_test_lib:recv_disregard(Socket, byte_size(Data))  +              end).  sender_active_once(Socket, Data) ->      ct:log("Sender active once: ~p~n", [ssl:getopts(Socket, [active])]), -    <<>> = -        send( -          Socket, Data, 100, -          fun(Acc) -> verify_active_once(Socket, Data, Acc) end), -    ok. +    send(Socket, Data, 100, +         fun() ->  +                 ssl_test_lib:active_once_disregard(Socket, byte_size(Data))  +         end).  sender_active(Socket, Data) ->      ct:log("Sender active: ~p~n", [ssl:getopts(Socket, [active])]), -    <<>> = -        send( -          Socket, Data, 100, -          fun(Acc) -> verify_active(Socket, Data, Acc) end), -    ok. - +    send(Socket, Data, 100, +         fun() ->  +                 ssl_test_lib:active_disregard(Socket, byte_size(Data))  +         end).  echoer(Socket, Size) ->      ct:log("Echoer recv: ~p~n", [ssl:getopts(Socket, [active])]), @@ -633,108 +625,32 @@ echoer_active(Socket, Size) ->  %% Receive Size bytes +echo_recv(_Socket, 0) -> +    ok;  echo_recv(Socket, Size) ->      {ok, Data} = ssl:recv(Socket, 0),      ok = ssl:send(Socket, Data), -    NewSize = Size - byte_size(Data), -    if -        0 < NewSize -> -            echo_recv(Socket, NewSize); -        0 == NewSize -> -            ok -    end. - -%% Verify that received data is SentData, return any superflous data -verify_recv(Socket, SentData, Acc) -> -    {ok, NewData} = ssl:recv(Socket, 0), -    SentSize = byte_size(SentData), -    NewAcc = <<Acc/binary, NewData/binary>>, -    NewSize = byte_size(NewAcc), -    if -        SentSize < NewSize -> -            {SentData,Rest} = split_binary(NewAcc, SentSize), -            Rest; -        NewSize < SentSize -> -            verify_recv(Socket, SentData, NewAcc); -        true -> -            SentData = NewAcc, -            <<>> -    end. +    echo_recv(Socket, Size - byte_size(Data)).  %% Receive Size bytes +echo_active_once(_Socket, 0) -> +    ok;  echo_active_once(Socket, Size) ->      receive          {ssl, Socket, Data} ->              ok = ssl:send(Socket, Data),              NewSize = Size - byte_size(Data),              ssl:setopts(Socket, [{active, once}]), -            if -                0 < NewSize -> -                    echo_active_once(Socket, NewSize); -                0 == NewSize -> -                    ok -            end +            echo_active_once(Socket, NewSize)      end. -%% Verify that received data is SentData, return any superflous data -verify_active_once(Socket, SentData, Acc) -> -    receive -        {ssl, Socket, Data} -> -            SentSize = byte_size(SentData), -            NewAcc = <<Acc/binary, Data/binary>>, -            NewSize = byte_size(NewAcc), -            ssl:setopts(Socket, [{active, once}]), -            if -                SentSize < NewSize -> -                    {SentData,Rest} = split_binary(NewAcc, SentSize), -                    Rest; -                NewSize < SentSize -> -                    verify_active_once(Socket, SentData, NewAcc); -                true -> -                    SentData = NewAcc, -                    <<>> -            end -    end. - -  %% Receive Size bytes +echo_active(_Socket, 0) -> +    ok;  echo_active(Socket, Size) ->      receive          {ssl, Socket, Data} ->              ok = ssl:send(Socket, Data), -            NewSize = Size - byte_size(Data), -            if -                0 < NewSize -> -                    echo_active(Socket, NewSize); -                0 == NewSize -> -                    ok -            end -    end. - -%% Verify that received data is SentData, return any superflous data -verify_active(Socket, SentData, Acc) -> -    receive -        {ssl, Socket, Data} -> -            SentSize = byte_size(SentData), -            NewAcc = <<Acc/binary, Data/binary>>, -            NewSize = byte_size(NewAcc), -            if -                SentSize < NewSize -> -                    {SentData,Rest} = split_binary(NewAcc, SentSize), -                    Rest; -                NewSize < SentSize -> -                    verify_active(Socket, SentData, NewAcc); -                true -> -                    SentData = NewAcc, -                    <<>> -            end -    end. - -active_once_recv(_Socket, 0) -> -    ok; -active_once_recv(Socket, N) -> -    receive  -	{ssl, Socket, Bytes} -> -            ssl:setopts(Socket, [{active, once}]), -            active_once_recv(Socket, N-byte_size(Bytes)) -    end. +            echo_active(Socket, Size - byte_size(Data)) +    end.     +         diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl index 7767d76a0d..929b1ae12a 100644 --- a/lib/ssl/test/ssl_test_lib.erl +++ b/lib/ssl/test/ssl_test_lib.erl @@ -1583,35 +1583,22 @@ v_1_2_check(ecdh_rsa, ecdh_ecdsa) ->  v_1_2_check(_, _) ->      false. -send_recv_result_active(Socket) -> -    ssl:send(Socket, "Hello world"), -    receive -	{ssl, Socket, "H"} -> -	    receive -		{ssl, Socket, "ello world"} -> -		    ok -	    end; -	{ssl, Socket, "Hello world"} -> -	    ok -    end. -  send_recv_result(Socket) -> -    ssl:send(Socket, "Hello world"), -    {ok,"Hello world"} = ssl:recv(Socket, 11), +    Data =  "Hello world", +    ssl:send(Socket, Data), +    {ok, Data} = ssl:recv(Socket, length(Data)), +    ok. + +send_recv_result_active(Socket) -> +    Data =  "Hello world", +    ssl:send(Socket, Data), +    Data = active_recv(Socket, length(Data)),      ok.  send_recv_result_active_once(Socket) -> -    ssl:send(Socket, "Hello world"), -    receive -	{ssl, Socket, "H"} -> -	    ssl:setopts(Socket, [{active, once}]), -	    receive -		{ssl, Socket, "ello world"} -> -		    ok -	    end; -	{ssl, Socket, "Hello world"} -> -	    ok -    end. +    Data = "Hello world", +    ssl:send(Socket, Data), +    active_once_recv_list(Socket, length(Data)).  active_recv(Socket, N) ->      active_recv(Socket, N, []). @@ -1624,6 +1611,44 @@ active_recv(Socket, N, Acc) ->              active_recv(Socket, N-length(Bytes),  Acc ++ Bytes)      end. +active_once_recv(_Socket, 0) -> +    ok; +active_once_recv(Socket, N) -> +    receive  +	{ssl, Socket, Bytes} -> +            ssl:setopts(Socket, [{active, once}]), +            active_once_recv(Socket, N-byte_size(Bytes)) +    end. + +active_once_recv_list(_Socket, 0) -> +    ok; +active_once_recv_list(Socket, N) -> +    receive  +	{ssl, Socket, Bytes} -> +            ssl:setopts(Socket, [{active, once}]), +            active_once_recv_list(Socket, N-length(Bytes)) +    end. +recv_disregard(_Socket, 0) -> +    ok; +recv_disregard(Socket, N) -> +    {ok, Bytes} = ssl:recv(Socket, 0), +    recv_disregard(Socket, N-byte_size(Bytes)). + +active_disregard(_Socket, 0) -> +    ok; +active_disregard(Socket, N) -> +    receive  +	{ssl, Socket, Bytes} -> +            active_disregard(Socket, N-byte_size(Bytes)) +    end. +active_once_disregard(_Socket, 0) -> +    ok; +active_once_disregard(Socket, N) -> +    receive  +	{ssl, Socket, Bytes} -> +            ssl:setopts(Socket, [{active, once}]), +            active_once_disregard(Socket, N-byte_size(Bytes)) +    end.  is_sane_ecc(openssl) ->      case os:cmd("openssl version") of  	"OpenSSL 1.0.0a" ++ _ -> % Known bug in openssl diff --git a/lib/ssl/test/ssl_to_openssl_SUITE.erl b/lib/ssl/test/ssl_to_openssl_SUITE.erl index 3c8b25b912..018b652c22 100644 --- a/lib/ssl/test/ssl_to_openssl_SUITE.erl +++ b/lib/ssl/test/ssl_to_openssl_SUITE.erl @@ -260,8 +260,9 @@ special_init(TestCase, Config) when      Config;  special_init(TestCase, Config)    when TestCase == erlang_client_openssl_server_renegotiate; -        TestCase == erlang_client_openssl_server_nowrap_seqnum; -       TestCase == erlang_server_openssl_client_nowrap_seqnum +       TestCase == erlang_client_openssl_server_nowrap_seqnum; +       TestCase == erlang_server_openssl_client_nowrap_seqnum; +       TestCase == erlang_client_openssl_server_renegotiate_after_client_data          ->      {ok, Version} = application:get_env(ssl, protocol_version),      check_sane_openssl_renegotaite(Config, Version);  | 
