mirage-crypto

Simple symmetric cryptography for the modern age
IN THIS PACKAGE
Module Mirage_crypto . Hash
type digest = Cstruct.t
type 'a iter = ( 'a -> unit ) -> unit

A general (inner) iterator. It applies the provided function to a collection of elements.

For instance:

  • let iter_k : 'a -> 'a iter = fun x f -> f x
  • let iter_pair : 'a * 'a -> 'a iter = fun (x, y) f = f x; f y
  • let iter_list : 'a list -> 'a iter = fun xs f -> List.iter f xs

Hashing algorithms

module type S = sig ... end

A single hash algorithm.

module MD5 : S
module SHA1 : S
module SHA224 : S
module SHA256 : S
module SHA384 : S
module SHA512 : S

Codes-based interface

type hash = [
| `MD5
| `SHA1
| `SHA224
| `SHA256
| `SHA384
| `SHA512
]

Algorithm codes.

val hashes : hash list

hashes is a list of all implemented hash algorithms.

val module_of : [< hash ] -> (module S)

module_of hash is the (first-class) module corresponding to the code hash.

This is the most convenient way to go from a code to a module.

Hash functions

val digest : [< hash ] -> Cstruct.t -> digest

digest algorithm bytes is algorithm applied to bytes.

val digesti : [< hash ] -> Cstruct.t iter -> digest

digesti algorithm iter is algorithm applied to iter.

val mac : [< hash ] -> key:Cstruct.t -> Cstruct.t -> digest

mac algorithm ~key bytes is the mac algorithm applied to bytes under key.

val maci : [< hash ] -> key:Cstruct.t -> Cstruct.t iter -> digest

maci algorithm ~key iter is the mac algorithm applied to iter under key.

val digest_size : [< hash ] -> int

digest_size algorithm is the size of the algorithm in bytes.