This commit is contained in:
parent
7fe27b6e2a
commit
50a81663cd
1 changed files with 40 additions and 37 deletions
77
src/keys.ml
77
src/keys.ml
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue