package octez-libs

  1. Overview
  2. Docs
A package that contains multiple base libraries used by the Octez suite

Install

Dune Dependency

Authors

Maintainers

Sources

tezos-18.0.tar.gz
sha256=dbc3b675aee59c2c574e5d0a771193a2ecfca31e7a5bc5aed66598080596ce1c
sha512=b97ed762b9d24744305c358af0d20f394376b64bfdd758dd4a81775326caf445caa57c4f6445da3dd6468ff492de18e4c14af6f374dfcbb7e4d64b7b720e5e2a

doc/src/octez-libs.bls12-381-hash/jive.ml.html

Source file jive.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
let digest_b (type p) (module P : S.PERMUTATION with type parameters = p)
    (parameters : p) input b =
  let state_size = Array.length input in
  if state_size mod b != 0 then failwith "b must divide the state size" ;
  let m = state_size / b in
  let ctxt = P.allocate_ctxt parameters in
  let () = P.set_state ctxt input in
  let () = P.apply_permutation ctxt in
  let final_state = P.get_state ctxt in
  let output = Array.init m (fun _ -> Bls12_381.Fr.(copy zero)) in
  let rec aux i j =
    if i = m then output
    else if j = b then aux (i + 1) 0
    else (
      Bls12_381.Fr.add_inplace
        output.(i)
        output.(i)
        (Bls12_381.Fr.add final_state.(i + (m * j)) input.(i + (m * j))) ;
      aux i (j + 1))
  in
  aux 0 0

let digest (type p) (module P : S.PERMUTATION with type parameters = p)
    (parameters : p) input =
  let res = digest_b (module P) parameters input (Array.length input) in
  res.(0)
OCaml

Innovation. Community. Security.