For hashes that offer an incremental interface, the internal state of the algorithm is kept in an object of type
state which is initialised using
init and needs to be stored and passed as an argument to the other functions in the interface. It is automatically freed when no longer required.
val init : unit -> state
init () initializes and returns an internal state of the hash algorithm
update st msg updates the internal state of the hash algorithm
st with buffer
module HMAC : sig ... end