package noise

  1. Overview
  2. Docs

Source file tweetnacl.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
exception Wrong_key_size

external caml_tweetnacl_poly1305 :
  Cstruct.buffer -> Cstruct.buffer -> int64 -> Cstruct.buffer -> unit
  = "caml_tweetnacl_poly1305"

let poly1305 ~key msg =
  let poly1305_key_length = 32 in
  let poly1305_output_length = 16 in
  if Cstruct.len key <> poly1305_key_length then raise Wrong_key_size;
  let key_buffer = Cstruct.to_bigarray key in
  let result = Cstruct.create poly1305_output_length in
  let result_buffer = Cstruct.to_bigarray result in
  let msg_len = Int64.of_int @@ Cstruct.len msg in
  let msg_buffer = Cstruct.to_bigarray msg in
  caml_tweetnacl_poly1305 result_buffer msg_buffer msg_len key_buffer;
  result
OCaml

Innovation. Community. Security.