sig
  type ctx
  type buf =
      (int, Stdlib.Bigarray.int8_unsigned_elt, Stdlib.Bigarray.c_layout)
      Stdlib.Bigarray.Array1.t
  type t
  val zero : Sha512.t
  external init : unit -> Sha512.ctx = "stub_sha512_init"
  external unsafe_update_substring :
    Sha512.ctx -> string -> int -> int -> unit = "stub_sha512_update"
  val update_substring : Sha512.ctx -> string -> int -> int -> unit
  val update_string : Sha512.ctx -> string -> unit
  external update_buffer : Sha512.ctx -> Sha512.buf -> unit
    = "stub_sha512_update_bigarray"
  external finalize : Sha512.ctx -> Sha512.t = "stub_sha512_finalize"
  external copy : Sha512.ctx -> Sha512.ctx = "stub_sha512_copy"
  val string : string -> Sha512.t
  val substring : string -> int -> int -> Sha512.t
  val buffer : Sha512.buf -> Sha512.t
  val channel : Stdlib.in_channel -> int -> Sha512.t
  val file : string -> Sha512.t
  val file_fast : string -> Sha512.t
  val output : Stdlib.out_channel -> Sha512.t -> unit
  val input : Stdlib.in_channel -> Sha512.t
  val to_bin : Sha512.t -> string
  val to_hex : Sha512.t -> string
  val equal : Sha512.t -> Sha512.t -> bool
  val of_bin : bytes -> Sha512.t
  val of_hex : string -> Sha512.t
end