EverCrypt.Hash
Agile, multiplexing hashing interface, exposing 4 variants of SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), 4 variants of SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), BLAKE2 (both BLAKE2b and BLAKE2s), and 2 legacy algorithms (SHA-1, MD5). It offers both direct hashing and a streaming interface.
val hash : alg:SharedDefs.HashDefs.alg -> msg:bytes -> bytes
hash alg msg
hashes msg
using algorithm alg
and returns the digest.
To use the agile streaming interface, users first need to initialise an internal state using init
. The state will then need to be passed to every call to update
and finish
. Both update
and finish
can be called as many times as needed without invalidating the state. Users are not required to manually free the state.
When using the streaming interface, the total number of bytes passed through update
must not exceed
val init : alg:SharedDefs.HashDefs.alg -> t
init alg
allocates the internal state for algorithm alg
and returns a t
.
update st msg
updates the internal state st
with the contents of msg
.
module Noalloc : sig ... end
Versions of these functions which write their output in a buffer passed in as an argument