Crypto: add Secretbox
This commit is contained in:
parent
28adbb5814
commit
dfeb96842a
@ -17,6 +17,32 @@ type channel_key = Box.combined Box.key
|
|||||||
type nonce = Nonce.t
|
type nonce = Nonce.t
|
||||||
type target = Z.t
|
type target = Z.t
|
||||||
|
|
||||||
|
module Secretbox = struct
|
||||||
|
include Secretbox
|
||||||
|
|
||||||
|
let of_bytes bytes =
|
||||||
|
of_cstruct (Cstruct.of_bigarray bytes)
|
||||||
|
|
||||||
|
let of_bytes_exn bytes =
|
||||||
|
of_cstruct_exn (Cstruct.of_bigarray bytes)
|
||||||
|
|
||||||
|
let box key msg nonce =
|
||||||
|
let msg = Cstruct.of_bigarray msg in
|
||||||
|
Cstruct.to_bigarray (box ~key ~msg ~nonce)
|
||||||
|
|
||||||
|
let box_open key cmsg nonce =
|
||||||
|
let cmsg = Cstruct.of_bigarray cmsg in
|
||||||
|
Option.map ~f:Cstruct.to_bigarray (box_open ~key ~cmsg ~nonce)
|
||||||
|
|
||||||
|
let box_noalloc key nonce msg =
|
||||||
|
let msg = Cstruct.of_bigarray msg in
|
||||||
|
box_noalloc ~key ~nonce ~msg
|
||||||
|
|
||||||
|
let box_open_noalloc key nonce cmsg =
|
||||||
|
let cmsg = Cstruct.of_bigarray cmsg in
|
||||||
|
box_open_noalloc ~key ~nonce ~cmsg
|
||||||
|
end
|
||||||
|
|
||||||
module Public_key_hash = Blake2B.Make (Base58) (struct
|
module Public_key_hash = Blake2B.Make (Base58) (struct
|
||||||
let name = "Crypto_box.Public_key_hash"
|
let name = "Crypto_box.Public_key_hash"
|
||||||
let title = "A Cryptobox public key ID"
|
let title = "A Cryptobox public key ID"
|
||||||
@ -36,6 +62,8 @@ let boxzerobytes = Box.boxzerobytes
|
|||||||
let random_keypair () =
|
let random_keypair () =
|
||||||
let pk, sk = Box.keypair () in
|
let pk, sk = Box.keypair () in
|
||||||
sk, pk, hash pk
|
sk, pk, hash pk
|
||||||
|
|
||||||
|
let zero_nonce = Tweetnacl.Nonce.(of_cstruct_exn (Cstruct.create bytes))
|
||||||
let random_nonce = Nonce.gen
|
let random_nonce = Nonce.gen
|
||||||
let increment_nonce = Nonce.increment
|
let increment_nonce = Nonce.increment
|
||||||
|
|
||||||
|
@ -11,9 +11,26 @@
|
|||||||
|
|
||||||
type nonce
|
type nonce
|
||||||
|
|
||||||
|
val zero_nonce : nonce
|
||||||
val random_nonce : unit -> nonce
|
val random_nonce : unit -> nonce
|
||||||
val increment_nonce : ?step:int -> nonce -> nonce
|
val increment_nonce : ?step:int -> nonce -> nonce
|
||||||
|
|
||||||
|
module Secretbox : sig
|
||||||
|
type key
|
||||||
|
|
||||||
|
val zerobytes : int
|
||||||
|
val boxzerobytes : int
|
||||||
|
|
||||||
|
val of_bytes : MBytes.t -> key option
|
||||||
|
val of_bytes_exn : MBytes.t -> key
|
||||||
|
|
||||||
|
val box : key -> MBytes.t -> nonce -> MBytes.t
|
||||||
|
val box_open : key -> MBytes.t -> nonce -> MBytes.t option
|
||||||
|
|
||||||
|
val box_noalloc : key -> nonce -> MBytes.t -> unit
|
||||||
|
val box_open_noalloc : key -> nonce -> MBytes.t -> bool
|
||||||
|
end
|
||||||
|
|
||||||
type target
|
type target
|
||||||
val default_target : target
|
val default_target : target
|
||||||
val make_target : float -> target
|
val make_target : float -> target
|
||||||
|
Loading…
Reference in New Issue
Block a user