mte/unikernel/duniverse/digestif/src-ocaml/baijiu_sha384.ml

43 lines
945 B
OCaml
Raw Normal View History

2025-11-11 02:07:51 +01:00
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