Test enacl:sign_open/2 as well.
This commit is contained in:
parent
9cd38c7651
commit
33612a083e
@ -174,13 +174,42 @@ prop_sign() ->
|
|||||||
end
|
end
|
||||||
end).
|
end).
|
||||||
|
|
||||||
|
signed_message_good(M) ->
|
||||||
|
#{ public := PK, secret := SK} = enacl:sign_keypair(),
|
||||||
|
SM = enacl:sign(M, SK),
|
||||||
|
frequency([
|
||||||
|
{3, return({{valid, SM}, PK})},
|
||||||
|
{1, ?LET(X, elements([sm, pk]),
|
||||||
|
case X of
|
||||||
|
sm -> {{invalid, binary(byte_size(SM))}, PK};
|
||||||
|
pk -> {{invalid, SM}, binary(byte_size(PK))}
|
||||||
|
end)}]).
|
||||||
|
|
||||||
|
signed_message_bad() ->
|
||||||
|
Sz = enacl:sign_keypair_public_size(),
|
||||||
|
{binary(), oneof([a, int(), ?SUCHTHAT(B, binary(Sz), byte_size(B) /= Sz)])}.
|
||||||
|
|
||||||
|
signed_message(M) ->
|
||||||
|
fault(signed_message_bad(), signed_message_good(M)).
|
||||||
|
|
||||||
|
signed_message_valid({valid, _}, _) -> true;
|
||||||
|
signed_message_valid({invalid, _}, _) -> true;
|
||||||
|
signed_message_valid(_, _) -> false.
|
||||||
|
|
||||||
prop_sign_open() ->
|
prop_sign_open() ->
|
||||||
?FORALL({Msg, KeyPair}, {binary(), sign_keypair()},
|
?FORALL(Msg, binary(),
|
||||||
begin
|
?FORALL({SignMsg, PK}, signed_message(Msg),
|
||||||
#{ public := Public, secret := Secret } = KeyPair,
|
case signed_message_valid(SignMsg, PK) of
|
||||||
SM = enacl:sign(Msg, Secret),
|
true ->
|
||||||
equals({ok, Msg}, enacl:sign_open(SM, Public))
|
case SignMsg of
|
||||||
end).
|
{valid, SM} ->
|
||||||
|
equals({ok, Msg}, enacl:sign_open(SM, PK));
|
||||||
|
{invalid, SM} ->
|
||||||
|
equals({error, failed_verification}, enacl:sign_open(SM, PK))
|
||||||
|
end;
|
||||||
|
false ->
|
||||||
|
badargs(fun() -> enacl:sign_open(SignMsg, PK) end)
|
||||||
|
end)).
|
||||||
|
|
||||||
%% CRYPTO SECRET BOX
|
%% CRYPTO SECRET BOX
|
||||||
%% -------------------------------
|
%% -------------------------------
|
||||||
|
Loading…
x
Reference in New Issue
Block a user