From 9f2faa3caf9e3f7655a104e94f5266dab12a55bd Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Wed, 7 Mar 2018 14:26:23 +0100 Subject: [PATCH] Add enoise_protocol:supported() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It returns a map describing what is supported… --- src/enoise_protocol.erl | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/enoise_protocol.erl b/src/enoise_protocol.erl index 71581f8..fa0a323 100644 --- a/src/enoise_protocol.erl +++ b/src/enoise_protocol.erl @@ -11,8 +11,13 @@ , msgs/2 , pattern/1 , pre_msgs/2 + , supported/0 , to_name/1]). +-ifdef(TEST). +-export([to_name/4]). +-endif. + -type noise_pattern() :: nn | xk. -type noise_msg() :: {in | out, [enoise_hs_state:noise_token()]}. @@ -113,16 +118,24 @@ protocol(ix) -> {[], [{out, [e, s]}, {in, [e, ee, se, s, es]}]}. supported_pattern(P) -> - lists:member(P, [nn, kn, nk, kk, nx, kx, xn, in, xk, ik, xx, ix]). + lists:member(P, maps:get(hs_pattern, supported())). supported_hash(Hash) -> - lists:member(Hash, [blake2b, sha256, sha512]). + lists:member(Hash, maps:get(hash, supported())). supported_cipher(Cipher) -> - lists:member(Cipher, ['ChaChaPoly', 'AESGCM']). + lists:member(Cipher, maps:get(cipher, supported())). supported_dh(Dh) -> - lists:member(Dh, [dh25519]). + lists:member(Dh, maps:get(dh, supported())). + +-spec supported() -> map(). +supported() -> + #{ hs_pattern => [nn, kn, nk, kk, nx, kx, xn, in, xk, ik, xx, ix] + , hash => [blake2b, sha256, sha512] + , cipher => ['ChaChaPoly', 'AESGCM'] + , dh => [dh25519] + }. to_name(Pattern, Dh, Cipher, Hash) -> list_to_binary(lists:join("_", ["Noise", to_name_pattern(Pattern), to_name_dh(Dh),