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
module RngZ = Nocrypto.Rng.Z
module NumZ = Nocrypto.Numeric.Z
let __gen_min bits = "1" ^ Core.String.init (bits - 1) ~f:(Core.const '0')
let __gen_max bits = Core.String.init bits ~f:(Core.const '1')
let __max_bits bits = Z.of_string_base 2 @@ __gen_max bits
let __min_bits bits = Z.of_string_base 2 @@ __gen_min bits
let __random_bits bits =
let _min_random = __min_bits bits in
let _max_random = __max_bits bits in
NumZ.to_cstruct_be @@ RngZ.gen_r _min_random _max_random
let max_bits bits = NumZ.to_cstruct_be @@ __max_bits bits
let min_bits bits = NumZ.to_cstruct_be @@ __min_bits bits
let key () = __random_bits 256
let iv () = __random_bits 128
let _ = Nocrypto_entropy_unix.initialize ()