module Digest: sig .. end
   This module provides functions to compute 128-bit 'digests' of
   arbitrary-length strings or files. The digests are of cryptographic
   quality: it is very hard, given a digest, to forge a string having
   that digest. The algorithm used is MD5. This module should not be
   used for secure and sensitive cryptographic applications. For these
   kind of applications more recent and stronger cryptographic
   primitives should be used instead.
type t = string;
let compare: (t, t) => int;
Pervasives.compare and the implementation
    shared with String.compare. Along with the type t, this
    function compare allows the module Digest to be passed as
    argument to the functors Set.Make and Map.Make.let string: string => t;
let bytes: bytes => t;
let substring: (string, int, int) => t;
Digest.substring s ofs len returns the digest of the substring
   of s starting at index ofs and containing len characters.let subbytes: (bytes, int, int) => t;
Digest.subbytes s ofs len returns the digest of the subsequence
    of s starting at index ofs and containing len bytes.let channel: (Pervasives.in_channel, int) => t;
len is nonnegative, Digest.channel ic len reads len
   characters from channel ic and returns their digest, or raises
   End_of_file if end-of-file is reached before len characters
   are read.  If len is negative, Digest.channel ic len reads
   all characters from ic until end-of-file is reached and return
   their digest.let file: string => t;
let output: (Pervasives.out_channel, t) => unit;
let input: Pervasives.in_channel => t;
let to_hex: t => string;
let from_hex: string => t;
Invalid_argument if the argument is not exactly 32 hexadecimal
   characters.