module By = Digestif_by module Bi = Digestif_bi module type S = sig type ctx type kind = [ `SHA384 ] val init : unit -> ctx val unsafe_feed_bytes : ctx -> By.t -> int -> int -> unit val unsafe_feed_bigstring : ctx -> Bi.t -> int -> int -> unit val unsafe_get : ctx -> By.t val dup : ctx -> ctx end module Unsafe : S = struct type kind = [ `SHA384 ] open Baijiu_sha512.Unsafe type nonrec ctx = ctx let init () = let b = By.make 128 '\x00' in { size = [| 0L; 0L |]; b; h = [| 0xcbbb9d5dc1059ed8L; 0x629a292a367cd507L; 0x9159015a3070dd17L; 0x152fecd8f70e5939L; 0x67332667ffc00b31L; 0x8eb44a8768581511L; 0xdb0c2e0d64f98fa7L; 0x47b5481dbefa4fa4L; |]; } let unsafe_get ctx = let res = unsafe_get ctx in By.sub res 0 48 let dup = dup let unsafe_feed_bytes = unsafe_feed_bytes let unsafe_feed_bigstring = unsafe_feed_bigstring end