This commit is contained in:
swrup 2026-02-18 20:45:22 +01:00
parent 7fe27b6e2a
commit 50a81663cd

View file

@ -288,44 +288,47 @@ module Make (Conn : Pg.CONN) = struct
let find_future_denomination h_pub = Hashtbl.find_opt t.future_dn_ht h_pub let find_future_denomination h_pub = Hashtbl.find_opt t.future_dn_ht h_pub
let certify_future_signkey pub ~master_sig = let certify_future_signkey pub ~master_sig =
match let* priv, future_sk =
( Hashtbl.find_opt t.future_sk_ht pub, match
Hashtbl.find_opt t.future_sk_key_ht pub ) ( Hashtbl.find_opt t.future_sk_key_ht pub,
with Hashtbl.find_opt t.future_sk_ht pub )
| None, _ | _, None -> with
Error "Keys certify_future_signkey: future signkey not found." | None, None ->
| Some future_sk, Some priv -> ( Error "Keys certify_future_signkey: future signkey not found."
match Hashtbl.find_opt t.sk_ht pub with | None, _ | _, None -> Error "Keys invalid state"
| Some _sk -> Error "Keys certify_future_signkey: already certified" | Some priv, Some future_sk -> Ok (priv, future_sk)
| None -> in
let Api.FutureSignKey. match Hashtbl.find_opt t.sk_ht pub with
{ | Some _sk -> Error "Keys certify_future_signkey: already certified"
key; | None ->
stamp_start; let Api.FutureSignKey.
stamp_expire; {
stamp_end; key;
signkey_secmod_sig= _; stamp_start;
} = stamp_expire;
future_sk stamp_end;
in signkey_secmod_sig= _;
let sk = } =
Signkey. future_sk
{ in
pub= key; let sk =
stamp_start; Signkey.
stamp_expire; {
stamp_end; pub= key;
master_sig; stamp_start;
revoked_sig= None; stamp_expire;
} stamp_end;
in master_sig;
Hashtbl.replace t.sk_ht pub sk; revoked_sig= None;
Hashtbl.replace t.sk_key_ht pub priv; }
Hashtbl.remove t.future_sk_ht pub; in
Hashtbl.remove t.future_sk_key_ht pub; Hashtbl.replace t.sk_ht pub sk;
Hashtbl.replace t.sk_key_ht pub priv;
Hashtbl.remove t.future_sk_ht pub;
Hashtbl.remove t.future_sk_key_ht pub;
let* () = Pg.insert_signkey (module Conn) sk |> unwrap_err_caqti in let* () = Pg.insert_signkey (module Conn) sk |> unwrap_err_caqti in
Ok ()) Ok ()
let certify_future_denomination h_pub ~master_sig = let certify_future_denomination h_pub ~master_sig =
match match