+ secmod; + .master_sig

This commit is contained in:
swrup 2025-10-19 01:10:52 +02:00
parent bc6ea09a59
commit aa2ff7b2f0
6 changed files with 66 additions and 43 deletions

View file

@ -1,16 +1,16 @@
open Types
type t = {
pub: EddsaPublicKey.t;
stamp_start: Ptime.t;
stamp_expire: Ptime.t;
stamp_end: Ptime.t;
pub: EddsaPublicKey.t;
sign: string -> EddsaSignature.t;
(* signature of this key by offline master key *)
master_sig: EddsaSignature.t option;
}
let make ~name =
let finally _key = () in
Vif.Device.v ~name ~finally [] @@ fun () ->
let generate () =
(* TODO
- look if it exists
- if not, create it (TOFU initialization scheme)
@ -19,12 +19,10 @@ let make ~name =
correctly set those: *)
let stamp_start = Ptime_clock.now () in
let stamp_expire =
match Ptime.add_span stamp_start Config.Exchange.signkey_legal_duration with
| None ->
Fmt.failwith "Ptime.add_span: result is not in the range [min;max]"
| Some v -> v
Util.ptime_add_span_exn stamp_start Config.Exchange.signkey_legal_duration
in
let stamp_end = stamp_expire in
let priv, pub = Mirage_crypto_ec.Ed25519.generate () in
let sign s = EddsaSignature.sign ~key:priv s in
{ stamp_start; stamp_expire; stamp_end; pub; sign }
let master_sig = None in
{ pub; stamp_start; stamp_expire; stamp_end; master_sig; sign }