+ wip clean keys.ml

This commit is contained in:
swrup 2026-02-20 20:44:52 +01:00
parent 07659222dc
commit e19c6d60c2
7 changed files with 249 additions and 520 deletions

View file

@ -4,19 +4,20 @@ open Hash
module Keys_get = struct
let mk_future_keys_response (module Keys : Keys.S) =
let future_signkeys = Keys.get_future_signkeys () in
let future_denoms = Keys.get_future_denominations () in
let master_pub = Config.Exchange.master_public_key in
let denom_secmod_public_key = Keys.sm_pubkey in
let signkey_secmod_public_key = Keys.sm_pubkey in
FutureKeysResponse.
{
future_denoms;
future_signkeys;
master_pub;
denom_secmod_public_key;
signkey_secmod_public_key;
}
let* future_signkeys = Keys.future_signkeys () in
let* future_denoms = Keys.future_denominations () in
let master_pub = Keys.master_pub in
let denom_secmod_public_key = Keys.secmod_rsa_pub in
let signkey_secmod_public_key = Keys.secmod_eddsa_pub in
Ok
FutureKeysResponse.
{
future_denoms;
future_signkeys;
master_pub;
denom_secmod_public_key;
signkey_secmod_public_key;
}
let jsont = FutureKeysResponse.jsont
@ -24,7 +25,7 @@ module Keys_get = struct
Logs.info (fun m -> m "GET /management/keys/");
let keys = Vif.Server.device Devices.keys server in
let res =
let v = mk_future_keys_response keys in
let* v = mk_future_keys_response keys in
let s = Api.encode_exn jsont v in
Ok s
in
@ -38,10 +39,8 @@ module Keys_post = struct
let verify_denom_signature (module Keys : Keys.S)
DenomSignature.{ h_denom_pub; master_sig } =
let* denom =
Keys.find_future_denomination h_denom_pub
|> Option.to_result ~none:error_key_unknown
in
let* opt = Keys.find_future_denomination h_denom_pub in
let* denom = Option.to_result ~none:error_key_unknown opt in
let open Signatures.DenominationKeyValidity in
let r : r =
{
@ -86,16 +85,15 @@ module Keys_post = struct
let* () =
list_iter
(fun SignKeySignature.{ key; master_sig } ->
Keys.certify_future_signkey key ~master_sig)
Keys.certify_future_signkey key master_sig)
signkey_sigs
in
let* () =
list_iter
(fun DenomSignature.{ h_denom_pub; master_sig } ->
Keys.certify_future_denomination h_denom_pub ~master_sig)
Keys.certify_future_denomination h_denom_pub master_sig)
denom_sigs
in
let* () = Keys.save () in
Ok ()
let jsont = MasterSignatures.jsont
@ -117,7 +115,9 @@ module Denom_revoke = struct
let verify (module Keys : Keys.S) h_denom_pub
DenomRevocationSignature.{ master_sig } =
let open Signatures.MasterDenominationKeyRevocation in
verify_f ~f:Keys.verify_with_master_key master_sig { h_denom_pub }
verify_f
~f:(Crypto.EddsaSignature.verify ~key:Keys.master_pub)
master_sig { h_denom_pub }
let do_ (module Keys : Keys.S) h_denom_pub
DenomRevocationSignature.{ master_sig } =