From a024fc4dc9bd79ab2eef50c6c430288bc6b0e6b2 Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Wed, 25 Apr 2018 09:37:26 +0200 Subject: [PATCH] Handle failed decrypts in handshake --- src/enoise.erl | 8 ++++++-- src/enoise_hs_state.erl | 9 ++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/enoise.erl b/src/enoise.erl index 0df59f3..c57116b 100644 --- a/src/enoise.erl +++ b/src/enoise.erl @@ -181,8 +181,12 @@ do_handshake(HState, ComState, Timeout) -> in -> case hs_recv_msg(ComState, Timeout) of {ok, Data, ComState1} -> - {ok, HState1, _Msg} = enoise_hs_state:read_message(HState, Data), - do_handshake(HState1, ComState1, Timeout); + case enoise_hs_state:read_message(HState, Data) of + {ok, HState1, _Msg} -> + do_handshake(HState1, ComState1, Timeout); + Err = {error, _} -> + Err + end; Err = {error, _} -> Err end; diff --git a/src/enoise_hs_state.erl b/src/enoise_hs_state.erl index ae92433..cba8f97 100644 --- a/src/enoise_hs_state.erl +++ b/src/enoise_hs_state.erl @@ -160,8 +160,11 @@ encrypt_and_hash(HS = #noise_hs{ ss = SS0 }, PlainText) -> {ok, HS#noise_hs{ ss = SS1 }, CipherText}. decrypt_and_hash(HS = #noise_hs{ ss = SS0 }, CipherText) -> - {ok, SS1, PlainText} = enoise_sym_state:decrypt_and_hash(SS0, CipherText), - {ok, HS#noise_hs{ ss = SS1 }, PlainText}. - + case enoise_sym_state:decrypt_and_hash(SS0, CipherText) of + {ok, SS1, PlainText} -> + {ok, HS#noise_hs{ ss = SS1 }, PlainText}; + {error, Reason} -> + {error, Reason} + end.