Provide correctness test cases for the verification codes.
This commit is contained in:
parent
dc78d268e6
commit
f64e62d16e
@ -216,3 +216,53 @@ prop_crypto_hash_neq() ->
|
||||
enacl:hash(X) /= enacl:hash(Y)
|
||||
)).
|
||||
|
||||
%% STRING COMPARISON
|
||||
%% -------------------------
|
||||
|
||||
verify_pair_bad(Sz) ->
|
||||
?LET(X, elements([fst, snd]),
|
||||
case X of
|
||||
fst ->
|
||||
{?SUCHTHAT(B, binary(), byte_size(B) /= Sz), binary(Sz)};
|
||||
snd ->
|
||||
{binary(Sz), ?SUCHTHAT(B, binary(), byte_size(B) /= Sz)}
|
||||
end).
|
||||
|
||||
verify_pair_good(Sz) ->
|
||||
oneof([
|
||||
?LET(Bin, binary(Sz), {Bin, Bin}),
|
||||
?SUCHTHAT({X, Y}, {binary(Sz), binary(Sz)}, X /= Y)]).
|
||||
|
||||
verify_pair(Sz) ->
|
||||
fault(verify_pair_bad(Sz), verify_pair_good(Sz)).
|
||||
|
||||
verify_pair_valid(Sz, X, Y) ->
|
||||
byte_size(X) == Sz andalso byte_size(Y) == Sz.
|
||||
|
||||
prop_verify_16() ->
|
||||
?FORALL({X, Y}, verify_pair(16),
|
||||
case verify_pair_valid(16, X, Y) of
|
||||
true ->
|
||||
equals(X == Y, enacl:verify_16(X, Y));
|
||||
false ->
|
||||
try
|
||||
enacl:verify_16(X, Y),
|
||||
false
|
||||
catch
|
||||
error:badarg -> true
|
||||
end
|
||||
end).
|
||||
|
||||
prop_verify_32() ->
|
||||
?FORALL({X, Y}, verify_pair(32),
|
||||
case verify_pair_valid(32, X, Y) of
|
||||
true ->
|
||||
equals(X == Y, enacl:verify_32(X, Y));
|
||||
false ->
|
||||
try
|
||||
enacl:verify_32(X, Y),
|
||||
false
|
||||
catch
|
||||
error:badarg -> true
|
||||
end
|
||||
end).
|
@ -19,12 +19,20 @@
|
||||
]).
|
||||
|
||||
-export([
|
||||
hash/1
|
||||
hash/1,
|
||||
verify_16/2,
|
||||
verify_32/2
|
||||
]).
|
||||
|
||||
hash(Bin) ->
|
||||
enacl_nif:crypto_hash(Bin).
|
||||
%% Low level helper functions
|
||||
%% -----------------
|
||||
|
||||
hash(Bin) -> enacl_nif:crypto_hash(Bin).
|
||||
verify_16(X, Y) -> enacl_nif:crypto_verify_16(X, Y).
|
||||
verify_32(X, Y) -> enacl_nif:crypto_verify_32(X, Y).
|
||||
|
||||
%% Public Key Crypto
|
||||
%% ---------------------
|
||||
box_keypair() ->
|
||||
enacl_nif:crypto_box_keypair().
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user