This commit is contained in:
swrup 2025-12-15 16:00:52 +01:00
parent c62f91c306
commit c6b197bde6
2 changed files with 16 additions and 21 deletions

View file

@ -22,9 +22,9 @@ let secmod_signkey =
let finally _key = () in let finally _key = () in
Vif.Device.v ~name:"secmod_signkey" ~finally Vif.Device.v ~name:"secmod_signkey" ~finally
[ Vif.Device.value db_connection ] [ Vif.Device.value db_connection ]
@@ fun conn (_env : env) -> Secmod_signkey.init conn @@ fun conn (_env : env) -> Secmod.init conn
let secmod_denom = let secmod_denom =
let finally _key = () in let finally _key = () in
Vif.Device.v ~name:"secmod_denom" ~finally [ Vif.Device.value db_connection ] Vif.Device.v ~name:"secmod_denom" ~finally [ Vif.Device.value db_connection ]
@@ fun conn (_env : env) -> Secmod_denom.init conn @@ fun conn (_env : env) -> Secmod.init conn

View file

@ -64,25 +64,24 @@ module Keys_get = struct
FutureSignKey. FutureSignKey.
{ key= pub; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig } { key= pub; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig }
let mk_future_keys_response ~(sm_signkey : Secmod_signkey.t) let mk_future_keys_response ~(sm_signkey : Secmod.t) ~(sm_denom : Secmod.t) =
~(sm_denom : Secmod_denom.t) =
let future_signkeys = let future_signkeys =
Secmod_signkey.get_signkeys sm_signkey Secmod.get_signkeys sm_signkey
|> List.filter (fun k -> Option.is_none k.Signkey.master_sig) |> List.filter (fun k -> Option.is_none k.Signkey.master_sig)
|> List.map (fun signkey -> |> List.map (fun signkey ->
let sm_signkey_priv = Secmod_signkey.get_sm_key_priv sm_signkey in let sm_signkey_priv = Secmod.get_sm_key_priv sm_signkey in
mk_future_signkey ~sm_signkey_priv signkey) mk_future_signkey ~sm_signkey_priv signkey)
in in
let future_denoms = let future_denoms =
Secmod_denom.get_denoms sm_denom Secmod.get_denoms sm_denom
|> List.filter (fun k -> Option.is_none k.Denomination.master_sig) |> List.filter (fun k -> Option.is_none k.Denomination.master_sig)
|> List.map (fun denom -> |> List.map (fun denom ->
let sm_denom_priv = Secmod_denom.get_sm_key_priv sm_denom in let sm_denom_priv = Secmod.get_sm_key_priv sm_denom in
mk_future_denom ~sm_denom_priv denom) mk_future_denom ~sm_denom_priv denom)
in in
let master_pub = Config.Exchange.master_public_key in let master_pub = Config.Exchange.master_public_key in
let denom_secmod_public_key = Secmod_denom.get_sm_key_pub sm_denom in let denom_secmod_public_key = Secmod.get_sm_key_pub sm_denom in
let signkey_secmod_public_key = Secmod_signkey.get_sm_key_pub sm_signkey in let signkey_secmod_public_key = Secmod.get_sm_key_pub sm_signkey in
FutureKeysResponse. FutureKeysResponse.
{ {
future_denoms; future_denoms;
@ -111,7 +110,7 @@ module Keys_post = struct
DenomSignature.{ h_denom_pub; master_sig } = DenomSignature.{ h_denom_pub; master_sig } =
let denom_hash = HashCode.to_denomination_hash h_denom_pub in let denom_hash = HashCode.to_denomination_hash h_denom_pub in
let* denom = let* denom =
Secmod_denom.get_denoms sm_denom Secmod.get_denoms sm_denom
|> List.find_opt (fun (denom : Denomination.t) -> |> List.find_opt (fun (denom : Denomination.t) ->
denom.h_pub = denom_hash) denom.h_pub = denom_hash)
|> function |> function
@ -141,7 +140,7 @@ module Keys_post = struct
let verify_signkey_signature ~sm_signkey SignKeySignature.{ key; master_sig } let verify_signkey_signature ~sm_signkey SignKeySignature.{ key; master_sig }
= =
let* signkey = let* signkey =
Secmod_signkey.get_signkeys sm_signkey Secmod.get_signkeys sm_signkey
|> List.find_opt (fun (signkey : Signkey.t) -> signkey.pub = key) |> List.find_opt (fun (signkey : Signkey.t) -> signkey.pub = key)
|> function |> function
| None -> | None ->
@ -169,7 +168,7 @@ module Keys_post = struct
(* TODO move to test *) (* TODO move to test *)
let check_master_signatures_update ~db_conn ~sm_denom = let check_master_signatures_update ~db_conn ~sm_denom =
Secmod_denom.get_denoms sm_denom Secmod.get_denoms sm_denom
|> list_iter (fun denom -> |> list_iter (fun denom ->
let error = Error "update_master_signatures sanity check failure" in let error = Error "update_master_signatures sanity check failure" in
let* opt = let* opt =
@ -203,14 +202,14 @@ module Keys_post = struct
signkey_sigs signkey_sigs
|> List.map (fun SignKeySignature.{ key; master_sig } -> |> List.map (fun SignKeySignature.{ key; master_sig } ->
(key, master_sig)) (key, master_sig))
|> Secmod_signkey.add_master_signatures db_conn sm_signkey |> Secmod.add_master_signatures db_conn sm_signkey
in in
let* () = let* () =
denom_sigs denom_sigs
|> List.map (fun DenomSignature.{ h_denom_pub; master_sig } -> |> List.map (fun DenomSignature.{ h_denom_pub; master_sig } ->
let h_denom_pub = HashCode.to_denomination_hash h_denom_pub in let h_denom_pub = HashCode.to_denomination_hash h_denom_pub in
(h_denom_pub, master_sig)) (h_denom_pub, master_sig))
|> Secmod_denom.add_master_signatures db_conn sm_denom |> Secmod.add_master_signatures db_conn sm_denom
in in
let* () = check_master_signatures_update ~db_conn ~sm_denom in let* () = check_master_signatures_update ~db_conn ~sm_denom in
Ok () Ok ()
@ -238,9 +237,7 @@ module Denom_revoke = struct
let do_ ~db_conn ~sm_denom h_denom_pub DenomRevocationSignature.{ master_sig } let do_ ~db_conn ~sm_denom h_denom_pub DenomRevocationSignature.{ master_sig }
= =
let* () = let* () = Secmod.revoke_denomination sm_denom h_denom_pub master_sig in
Secmod_denom.revoke_denomination sm_denom h_denom_pub master_sig
in
let+ () = let+ () =
Pg.insert_denomination_revocation db_conn h_denom_pub master_sig Pg.insert_denomination_revocation db_conn h_denom_pub master_sig
|> unwrap_err_caqti |> unwrap_err_caqti
@ -271,9 +268,7 @@ module Signkey_revoke = struct
let do_ ~db_conn ~sm_signkey exchange_pub let do_ ~db_conn ~sm_signkey exchange_pub
SignkeyRevocationSignature.{ master_sig } = SignkeyRevocationSignature.{ master_sig } =
let* () = let* () = Secmod.revoke_signkey sm_signkey exchange_pub master_sig in
Secmod_signkey.revoke_signkey sm_signkey exchange_pub master_sig
in
let+ () = let+ () =
Pg.insert_signkey_revocation db_conn exchange_pub master_sig Pg.insert_signkey_revocation db_conn exchange_pub master_sig
|> unwrap_err_caqti |> unwrap_err_caqti