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