Module Bytesrw_crypto.Sha_256

SHA-256 hashes.

Algorithm

val algorithm : Hash.Algorithm.t

algorithm is the hash algorithm.

val id : string

id identifies the algorithm. This is Algorithm.to_string algorithm.

val length : int

length is the byte length of hashes produced by the function. Note that this can be 0 if the algorithm is unsupported.

Hashes

type t

The type for hashes.

module State : sig ... end

Hash state.

val value : State.t -> t

value state is the hash of state.

Warning. This must be called only once. It has an effect on state. Trying to do the following operations afterwards raises Bytesrw_crypto.Panic exceptions:

val verify_value : State.t -> t -> bool

verify_value state h checks in constant time that value state is equal to h.

Warning. This has all the caveats of value.

Hashing

val string : string -> t

string s is the hash of s.

val bytes : bytes -> t

bytes b is the hash of b.

val slice : Bytesrw.Bytes.Slice.t -> t

slice s is the hash of the bytes in the range of s.

val reader : Bytesrw.Bytes.Reader.t -> t

reader r is the hash of stream r. This consumes the reader. See also reads.

Hashing streams

reads r is hr, hstate with:

  • hr a reader that taps the reads of r to update hstate.
  • hstate, a hash state of the reads made on hr so far. This is state if explicitely given, otherwise defaults to a fresh State.make.

To get the final hash result use value on hstate once.

writes ?state w is hw, hstate with:

  • hw a writer that taps the writes to update hstate before giving them to w.
  • hstate, a hash state of the writes made on hw so far. This is state if explicitely given, otherwise defaults to a fresh State.make.

To get the final hash result use value on hstate once.

Predicates and comparisons

val equal : t -> t -> bool

equal h0 h1 uses Verify.equal_strings to assert the equality of h0 and h1.

Converting

val to_binary_string : t -> string

to_binary_string h is a binary representation of h of length length.

val of_binary_string : string -> (t, string) Stdlib.result

of_binary_string s is a hash from the binary representation stored in s.

val to_hex : t -> string

to_hex h is the binary representation of h using lowercase US-ASCII hex digits.

val of_hex : string -> (t, string) Stdlib.result

of_hex s parses a sequence of hex digits into a hash.

val pp : Stdlib.Format.formatter -> t -> unit

pp formats hashes for inspection.