Fix multi-part signatures
Remove the signstate wrapper as it is not needed anyore.
This commit is contained in:
parent
a5e66ff204
commit
d850b16d1b
@ -649,7 +649,7 @@ sign_verify_detached(SIG, M, PK) ->
|
||||
false -> {error, failed_verification}
|
||||
end.
|
||||
|
||||
-type sign_state() :: {signstate, reference()}.
|
||||
-type sign_state() :: reference().
|
||||
|
||||
%% @doc sign_init/0 initialize a multi-part signature state.
|
||||
%%
|
||||
@ -665,7 +665,7 @@ sign_init() ->
|
||||
-spec sign_update(S, M) -> sign_state() | {error, sign_update_error}
|
||||
when S :: sign_state(),
|
||||
M :: iodata().
|
||||
sign_update({signstate, SignState}, M) ->
|
||||
sign_update(SignState, M) ->
|
||||
enacl_nif:crypto_sign_update(SignState, M).
|
||||
|
||||
|
||||
@ -675,7 +675,7 @@ sign_update({signstate, SignState}, M) ->
|
||||
-spec sign_final_create(S, SK) -> {ok, binary()} | {error, atom()}
|
||||
when S :: sign_state(),
|
||||
SK :: iodata().
|
||||
sign_final_create({signstate, SignState}, SK) ->
|
||||
sign_final_create(SignState, SK) ->
|
||||
enacl_nif:crypto_sign_final_create(SignState, SK).
|
||||
|
||||
%% @doc sign_final_verify/3 verify a chunked signature
|
||||
@ -687,7 +687,7 @@ sign_final_create({signstate, SignState}, SK) ->
|
||||
when S :: sign_state(),
|
||||
SIG :: binary(),
|
||||
PK :: iodata().
|
||||
sign_final_verify({signstate, SignState}, SIG, PK) ->
|
||||
sign_final_verify(SignState, SIG, PK) ->
|
||||
enacl_nif:crypto_sign_final_verify(SignState, SIG, PK).
|
||||
|
||||
%% @private
|
||||
|
@ -42,7 +42,8 @@ groups() ->
|
||||
generichash_chunked,
|
||||
aead_xchacha20poly1305,
|
||||
aead_chacha20poly1305,
|
||||
pwhash]},
|
||||
pwhash,
|
||||
sign]},
|
||||
|
||||
[Neg, Pos].
|
||||
|
||||
@ -121,3 +122,20 @@ pwhash(_Config) ->
|
||||
true = enacl:pwhash_str_verify(Str1, PW),
|
||||
false = enacl:pwhash_str_verify(Str1, <<PW/binary, 1>>),
|
||||
ok.
|
||||
|
||||
sign(_Config) ->
|
||||
#{public := PK, secret := SK} = enacl:sign_keypair(),
|
||||
Msg = <<"Test">>,
|
||||
State = enacl:sign_init(),
|
||||
Create = sign_chunked(State, Msg, 10000),
|
||||
{ok, Signature} = enacl:sign_final_create(Create, SK),
|
||||
StateVerify = enacl:sign_init(),
|
||||
Verify = sign_chunked(StateVerify, Msg, 10000),
|
||||
ok = enacl:sign_final_verify(Verify, Signature, PK),
|
||||
ok.
|
||||
|
||||
sign_chunked(S, _M, 0) -> S;
|
||||
sign_chunked(S, M, N) ->
|
||||
S2 = enacl:sign_update(S, M),
|
||||
sign_chunked(S2, M, N-1).
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user