Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0542-Remove-duplicated-code.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0542-Remove-duplicated-code.patch of Package erlang
From fdfe80b2f0928ecd24debb0c6c4923d0c06178bc Mon Sep 17 00:00:00 2001 From: Nelson Vides <videsnelson@gmail.com> Date: Sun, 11 Apr 2021 23:22:04 +0200 Subject: [PATCH 2/6] Remove duplicated code PRF is specific to pre-TLSv1.3, so it should not be on ssl_gen_statem. Indeed, the exact same code can be found in tls_dtls_connection, but a quick look at test coverage said that it wasn't being called to begin with. I believe that this duplication was introduced in ff15b5748d2. --- lib/ssl/src/ssl_gen_statem.erl | 26 +------------------------- lib/ssl/src/tls_dtls_connection.erl | 2 ++ 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/lib/ssl/src/ssl_gen_statem.erl b/lib/ssl/src/ssl_gen_statem.erl index c2dd4e5c7a..b84f544228 100644 --- a/lib/ssl/src/ssl_gen_statem.erl +++ b/lib/ssl/src/ssl_gen_statem.erl @@ -774,33 +774,9 @@ handle_call({set_opts, Opts0}, From, StateName, handle_call(renegotiate, From, StateName, _) when StateName =/= connection -> {keep_state_and_data, [{reply, From, {error, already_renegotiating}}]}; -handle_call({prf, Secret, Label, Seed, WantedLength}, From, _, - #state{connection_states = ConnectionStates, - connection_env = #connection_env{negotiated_version = Version}}) -> - #{security_parameters := SecParams} = - ssl_record:current_connection_state(ConnectionStates, read), - #security_parameters{master_secret = MasterSecret, - client_random = ClientRandom, - server_random = ServerRandom, - prf_algorithm = PRFAlgorithm} = SecParams, - Reply = try - SecretToUse = case Secret of - _ when is_binary(Secret) -> Secret; - master_secret -> MasterSecret - end, - SeedToUse = lists:reverse( - lists:foldl(fun(X, Acc) when is_binary(X) -> [X|Acc]; - (client_random, Acc) -> [ClientRandom|Acc]; - (server_random, Acc) -> [ServerRandom|Acc] - end, [], Seed)), - ssl_handshake:prf(ssl:tls_version(Version), PRFAlgorithm, SecretToUse, Label, SeedToUse, WantedLength) - catch - exit:_ -> {error, badarg}; - error:Reason -> {error, Reason} - end, - {keep_state_and_data, [{reply, From, Reply}]}; handle_call(_,_,_,_) -> {keep_state_and_data, [postpone]}. + handle_info({ErrorTag, Socket, econnaborted}, StateName, #state{static_env = #static_env{role = Role, host = Host, diff --git a/lib/ssl/src/tls_dtls_connection.erl b/lib/ssl/src/tls_dtls_connection.erl index c27feadfcf..767cd826d2 100644 --- a/lib/ssl/src/tls_dtls_connection.erl +++ b/lib/ssl/src/tls_dtls_connection.erl @@ -646,6 +646,8 @@ connection({call, From}, negotiated_protocol, negotiated_protocol = undefined}} = State) -> ssl_gen_statem:hibernate_after(?FUNCTION_NAME, State, [{reply, From, {ok, SelectedProtocol}}]); +connection({call, From}, Msg, State) when element(1, Msg) =:= prf -> + handle_call(Msg, From, ?FUNCTION_NAME, State); connection(cast, {internal_renegotiate, WriteState}, #state{static_env = #static_env{protocol_cb = tls_gen_connection}, handshake_env = HsEnv, connection_states = ConnectionStates} -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor