anchor.diff:  sign_verify_detached(SIG, M, PK) ->
       enacl_nif:crypto_sign_verify_detached(SIG, M, PK).
   
  --type sign_state() :: reference().
   
   %% @doc sign_init/0 initialize a multi-part signature state.
   %%
  
positive.code: secretstream_xchacha20poly1305_init_push(Key) ->
      enacl_nif:crypto_secretstream_xchacha20poly1305_init_push(Key).
  
  -type secretstream_xchacha20poly1305_tag() :: message | rekey | final | push | pos_integer().
  %% @doc secretstream_xchacha20poly1305_push/4 returns encrypted chunk binary.
  %% Updates a secretstream context referenced by `Ref' with `Message' data,
  %% given `Tag' and additional data `AD'.
  
negative.code: %% This function generates a hash of the message using a key. The hash size is
  %% either 16, 32 or 64 bytes
  %% @end
  -spec generichash(generichash_bytes(), iodata(), binary()) -> binary().
  generichash(HashSize, Message, Key) ->
      enacl_nif:crypto_generichash(HashSize, Message, Key).
  