package b0

  1. Overview
  2. Docs

Hash values and functions.

The property we want from these functions is speed and collision resistance. Build correctness depends on the latter.

Hash values

type t

The type for hash values. All hash functions use this representation. It is not possible to distinguish them, except for their length which might vary, or not.

val nil : t

nil is the only hash value of length 0.

val length : t -> int

length h is the length of h in bytes.

Predicate and comparisons

val is_nil : t -> bool

is_nil h is true iff h is nil.

val equal : t -> t -> bool

equal h0 h1 is true iff h0 and h1 are equal.

val compare : t -> t -> int

compare h0 h1 is a total order on hashes compatible with equal.

Converting

val to_bytes : t -> string

to_bytes h is the sequence of bytes of h.

val of_bytes : string -> t

of_bytes s is the sequences of bytes of s as a hash value.

val to_hex : t -> string

to_hex h is String.Ascii.to_hex (to_bytes h).

val of_hex : string -> (t, int) result

of_hex s is Result.map of_bytes (String.Ascii.of_hex s).

val conv : t Conv.t

conv converts using Conv.string_bytes.

val pp : t Fmt.t

pp formats using to_hex or, if the hash is nil, formats "nil".

Hash functions

module type T = sig ... end

The type for hash functions.

module Murmur3_128 : T

Murmur3_128 is the MurmurHash3 128-bit hash.

module Xxh_64 : T

Xxh_64 is the xxHash 64-bit hash.

val funs : unit -> (module T) list

funs () is the list of available hash functions.

val add_fun : (module T) -> unit

add_fun m adds m to the list returned by funs.

OCaml

Innovation. Community. Security.