29 lines
818 B
OCaml
29 lines
818 B
OCaml
open Crypto
|
|
|
|
(* TODO master_sig
|
|
not sur how to handle master_sig initialization *)
|
|
type t = {
|
|
pub: EddsaPublicKey.t;
|
|
priv: EddsaPrivateKey.t;
|
|
stamp_start: Timestamp.t;
|
|
stamp_expire: Timestamp.t;
|
|
stamp_end: Timestamp.t;
|
|
(* signature of this key by offline master key *)
|
|
master_sig: EddsaSignature.t option;
|
|
}
|
|
|
|
let generate () =
|
|
(* TODO
|
|
- look if it exists
|
|
- if not, create it (TOFU initialization scheme)
|
|
- write it *)
|
|
let stamp_start = Ptime_clock.now () |> Option.some in
|
|
let stamp_expire =
|
|
Timestamp.add_span_exn stamp_start
|
|
(Some Config.Exchange.signkey_legal_duration)
|
|
in
|
|
let stamp_end = stamp_expire in
|
|
|
|
let priv, pub = Mirage_crypto_ec.Ed25519.generate () in
|
|
let master_sig = None in
|
|
{ pub; priv; stamp_start; stamp_expire; stamp_end; master_sig }
|