Refactor keypair into separate module enoise_keypair
This commit is contained in:
@@ -5,21 +5,22 @@
|
||||
-module(enoise_crypto_tests).
|
||||
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-record(key_pair, { puk, pik }).
|
||||
|
||||
curve25519_test() ->
|
||||
KeyPair1 = enoise_crypto:new_key_pair(dh25519),
|
||||
KeyPair2 = enoise_crypto:new_key_pair(dh25519),
|
||||
KeyPair1 = enoise_keypair:new(dh25519),
|
||||
KeyPair2 = enoise_keypair:new(dh25519),
|
||||
|
||||
SharedA = enoise_crypto:dh(dh25519, KeyPair1, KeyPair2#key_pair.puk),
|
||||
SharedB = enoise_crypto:dh(dh25519, KeyPair2, KeyPair1#key_pair.puk),
|
||||
SharedA = enoise_crypto:dh(dh25519, KeyPair1, KeyPair2),
|
||||
SharedB = enoise_crypto:dh(dh25519, KeyPair2, KeyPair1),
|
||||
?assertMatch(SharedA, SharedB),
|
||||
|
||||
#{ a_pub := APub, a_priv := APriv,
|
||||
b_pub := BPub, b_priv := BPriv, shared := Shared } = test_utils:curve25519_data(),
|
||||
|
||||
?assertMatch(Shared, enoise_crypto:dh(dh25519, #key_pair{ puk = APub, pik = APriv }, BPub)),
|
||||
?assertMatch(Shared, enoise_crypto:dh(dh25519, #key_pair{ puk = BPub, pik = BPriv }, APub)),
|
||||
KeyPair3 = enoise_keypair:new(dh25519, APriv, APub),
|
||||
KeyPair4 = enoise_keypair:new(dh25519, BPriv, BPub),
|
||||
?assertMatch(Shared, enoise_crypto:dh(dh25519, KeyPair3, KeyPair4)),
|
||||
?assertMatch(Shared, enoise_crypto:dh(dh25519, KeyPair4, KeyPair3)),
|
||||
|
||||
ok.
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
-module(enoise_hs_state_tests).
|
||||
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-record(key_pair, { puk, pik }).
|
||||
|
||||
noise_hs_test_() ->
|
||||
%% Test vectors from https://raw.githubusercontent.com/rweather/noise-c/master/tests/vector/noise-c-basic.txt
|
||||
@@ -40,11 +39,11 @@ noise_hs_test(V = #{ name := Name }) ->
|
||||
ok.
|
||||
|
||||
noise_test(_Name, Protocol, Init, Resp, Messages, HSHash) ->
|
||||
PubK = fun(undefined) -> undefined; (S) -> enacl:curve25519_scalarmult_base(S) end,
|
||||
DH = enoise_protocol:dh(Protocol),
|
||||
SecK = fun(undefined) -> undefined; (Sec) -> enoise_keypair:new(DH, Sec, undefined) end,
|
||||
PubK = fun(undefined) -> undefined; (Pub) -> enoise_keypair:new(DH, Pub) end,
|
||||
HSInit = fun(P, R, #{ e := E, s := S, rs := RS, prologue := PL }) ->
|
||||
enoise_hs_state:init(P, R, PL, {#key_pair{ pik = S, puk = PubK(S) },
|
||||
#key_pair{ pik = E, puk = PubK(E) },
|
||||
RS, undefined})
|
||||
enoise_hs_state:init(P, R, PL, {SecK(S), SecK(E), PubK(RS), undefined})
|
||||
end,
|
||||
|
||||
InitHS = HSInit(Protocol, initiator, Init),
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
-module(enoise_sym_state_tests).
|
||||
|
||||
-include_lib("eunit/include/eunit.hrl").
|
||||
-include("enoise.hrl").
|
||||
|
||||
noise_XK_25519_ChaChaPoly_Blake2b_test() ->
|
||||
Protocol = enoise_protocol:from_name("Noise_XK_25519_ChaChaPoly_BLAKE2b"),
|
||||
|
||||
+23
-23
@@ -18,8 +18,8 @@ noise_dh25519_test_() ->
|
||||
|
||||
setup_dh25519() ->
|
||||
%% Generate a static key-pair for Client and Server
|
||||
SrvKeyPair = enoise_crypto:new_key_pair(dh25519),
|
||||
CliKeyPair = enoise_crypto:new_key_pair(dh25519),
|
||||
SrvKeyPair = enoise_keypair:new(dh25519),
|
||||
CliKeyPair = enoise_keypair:new(dh25519),
|
||||
|
||||
#{ hs_pattern := Ps, hash := Hs, cipher := Cs } = enoise_protocol:supported(),
|
||||
Configurations = [ enoise_protocol:to_name(P, dh25519, C, H)
|
||||
@@ -31,11 +31,11 @@ noise_test(Conf, SKP, CKP) ->
|
||||
Protocol = enoise_protocol:from_name(Conf),
|
||||
Port = 4556,
|
||||
|
||||
EchoSrv = echo_srv_start(Port, Protocol, SKP, enoise_crypto:pub_key(CKP)),
|
||||
EchoSrv = echo_srv_start(Port, Protocol, SKP, CKP),
|
||||
|
||||
{ok, TcpSock} = gen_tcp:connect("localhost", Port, [{active, false}, binary, {reuseaddr, true}], 100),
|
||||
|
||||
Opts = [{noise, Protocol}, {s, CKP}] ++ [{rs, enoise_crypto:pub_key(SKP)} || need_rs(initiator, Conf) ],
|
||||
Opts = [{noise, Protocol}, {s, CKP}] ++ [{rs, SKP} || need_rs(initiator, Conf) ],
|
||||
{ok, EConn} = enoise:connect(TcpSock, Opts),
|
||||
|
||||
ok = enoise:send(EConn, <<"Hello World!">>),
|
||||
@@ -86,27 +86,27 @@ need_rs(Role, Protocol) ->
|
||||
lists:member({in, [s]}, PreMsgs).
|
||||
|
||||
%% Talks to local echo-server (noise-c)
|
||||
%% client_test() ->
|
||||
%% TestProtocol = enoise_protocol:from_name("Noise_XK_25519_ChaChaPoly_BLAKE2b"),
|
||||
%% ClientPrivKey = <<64,168,119,119,151,194,94,141,86,245,144,220,78,53,243,231,168,216,66,199,49,148,202,117,98,40,61,109,170,37,133,122>>,
|
||||
%% ClientPubKey = <<115,39,86,77,44,85,192,176,202,11,4,6,194,144,127,123, 34,67,62,180,190,232,251,5,216,168,192,190,134,65,13,64>>,
|
||||
%% ServerPubKey = <<112,91,141,253,183,66,217,102,211,40,13,249,238,51,77,114,163,159,32,1,162,219,76,106,89,164,34,71,149,2,103,59>>,
|
||||
client_test() ->
|
||||
TestProtocol = enoise_protocol:from_name("Noise_XK_25519_ChaChaPoly_BLAKE2b"),
|
||||
ClientPrivKey = <<64,168,119,119,151,194,94,141,86,245,144,220,78,53,243,231,168,216,66,199,49,148,202,117,98,40,61,109,170,37,133,122>>,
|
||||
ClientPubKey = <<115,39,86,77,44,85,192,176,202,11,4,6,194,144,127,123, 34,67,62,180,190,232,251,5,216,168,192,190,134,65,13,64>>,
|
||||
ServerPubKey = <<112,91,141,253,183,66,217,102,211,40,13,249,238,51,77,114,163,159,32,1,162,219,76,106,89,164,34,71,149,2,103,59>>,
|
||||
|
||||
%% {ok, TcpSock} = gen_tcp:connect("localhost", 7890, [{active, false}, binary, {reuseaddr, true}], 1000),
|
||||
%% gen_tcp:send(TcpSock, <<0,8,0,0,3>>), %% "Noise_XK_25519_ChaChaPoly_Blake2b"
|
||||
{ok, TcpSock} = gen_tcp:connect("localhost", 7890, [{active, false}, binary, {reuseaddr, true}], 1000),
|
||||
gen_tcp:send(TcpSock, <<0,8,0,0,3>>), %% "Noise_XK_25519_ChaChaPoly_Blake2b"
|
||||
|
||||
%% Opts = [ {noise, TestProtocol}
|
||||
%% , {s, #key_pair{ pik = ClientPrivKey, puk = ClientPubKey }}
|
||||
%% , {rs, ServerPubKey}
|
||||
%% , {prologue, <<0,8,0,0,3>>}],
|
||||
Opts = [ {noise, TestProtocol}
|
||||
, {s, enoise_keypair:new(dh25519, ClientPrivKey, ClientPubKey)}
|
||||
, {rs, enoise_keypair:new(dh25519, ServerPubKey)}
|
||||
, {prologue, <<0,8,0,0,3>>}],
|
||||
|
||||
%% {ok, EConn} = enoise:connect(TcpSock, Opts),
|
||||
%% ok = enoise:send(EConn, <<"ok\n">>),
|
||||
%% %% receive
|
||||
%% %% {noise, EConn, <<"ok\n">>} -> ok
|
||||
%% %% after 1000 -> error(timeout) end,
|
||||
%% {ok, <<"ok\n">>} = enoise:recv(EConn, 3, 1000),
|
||||
%% enoise:close(EConn).
|
||||
{ok, EConn} = enoise:connect(TcpSock, Opts),
|
||||
ok = enoise:send(EConn, <<"ok\n">>),
|
||||
%% receive
|
||||
%% {noise, EConn, <<"ok\n">>} -> ok
|
||||
%% after 1000 -> error(timeout) end,
|
||||
{ok, <<"ok\n">>} = enoise:recv(EConn, 3, 1000),
|
||||
enoise:close(EConn).
|
||||
|
||||
|
||||
%% Expects a call-in from a local echo-client (noise-c)
|
||||
@@ -118,7 +118,7 @@ need_rs(Role, Protocol) ->
|
||||
%% ServerPubKey = <<112,91,141,253,183,66,217,102,211,40,13,249,238,51,77,114,163,159,32,1,162,219,76,106,89,164,34,71,149,2,103,59>>,
|
||||
|
||||
%% Opts = [ {noise, TestProtocol}
|
||||
%% , {s, #key_pair{ pik = ServerPrivKey, puk = ServerPubKey }}
|
||||
%% , {s, enoise_keypair:new(dh25519, ServerPrivKey, ServerPubKey)}
|
||||
%% , {prologue, <<0,8,0,0,3>>}],
|
||||
|
||||
%% {ok, LSock} = gen_tcp:listen(7891, [{reuseaddr, true}, binary]),
|
||||
|
||||
Reference in New Issue
Block a user