package b0

  1. Overview
  2. Docs
Module type
Class type

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.


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) Stdlib.result

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

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 Xxh3_64 : T

Xxh3_64 is the xxHash3 64-bit hash.

module Xxh3_128 : T

Xxh3_128 is the xxHash3 128-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.

val get_fun : string -> ((module T), string) Stdlib.result

get_fun id is the hash function with identifier id or an error message.


Innovation. Community. Security.