From 8caf83e90a32882c4340476fbc770283dd34f78c Mon Sep 17 00:00:00 2001 From: swrup Date: Wed, 18 Feb 2026 18:13:50 +0100 Subject: [PATCH] do pg revoke in keys.ml --- src/http_management.ml | 22 ++++++---------------- src/keys.ml | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/src/http_management.ml b/src/http_management.ml index 9ba83b1b..54ea2557 100644 --- a/src/http_management.ml +++ b/src/http_management.ml @@ -119,26 +119,21 @@ module Denom_revoke = struct let open Signatures.MasterDenominationKeyRevocation in verify_f ~f:Keys.verify_with_master_key master_sig { h_denom_pub } - let do_ ~db_conn (module Keys : Keys.S) h_denom_pub + let do_ (module Keys : Keys.S) h_denom_pub DenomRevocationSignature.{ master_sig } = - let* () = Keys.revoke_denomination h_denom_pub master_sig in - let+ () = - Pg.insert_denomination_revocation db_conn h_denom_pub master_sig - |> unwrap_err_caqti - in + let+ () = Keys.revoke_denomination h_denom_pub master_sig in () let jsont = DenomRevocationSignature.jsont let f req h_denom_pub server _env = Logs.info (fun m -> m "POST /management/denominations/$H_DENOM_PUB/revoke/"); - let db_conn = Vif.Server.device Devices.db_connection server in let sm = Vif.Server.device Devices.secmod server in let res = let* h_denom_pub = DenominationHash.of_b32 h_denom_pub in let* v = Vif.Request.of_json req |> unwrap_err_msg in let* () = verify sm h_denom_pub v in - let* () = do_ ~db_conn sm h_denom_pub v in + let* () = do_ sm h_denom_pub v in Ok "" in Respond.result res req @@ -150,26 +145,21 @@ module Signkey_revoke = struct let open Signatures.MasterSigningKeyRevocation in verify_f ~f:Keys.verify_with_master_key master_sig { exchange_pub } - let do_ ~db_conn (module Keys : Keys.S) exchange_pub + let do_ (module Keys : Keys.S) exchange_pub SignkeyRevocationSignature.{ master_sig } = - let* () = Keys.revoke_signkey exchange_pub master_sig in - let+ () = - Pg.insert_signkey_revocation db_conn exchange_pub master_sig - |> unwrap_err_caqti - in + let+ () = Keys.revoke_signkey exchange_pub master_sig in () let jsont = SignkeyRevocationSignature.jsont let f req exchange_pub server _env = Logs.info (fun m -> m "POST /management/signkeys/$EXCHANGE_PUB/revoke/"); - let db_conn = Vif.Server.device Devices.db_connection server in let sm = Vif.Server.device Devices.secmod server in let res = let* exchange_pub = Crypto.EddsaPublicKey.of_b32 exchange_pub in let* v = Vif.Request.of_json req |> unwrap_err_msg in let* () = verify sm exchange_pub v in - let* () = do_ ~db_conn sm exchange_pub v in + let* () = do_ sm exchange_pub v in Ok "" in Respond.result res req diff --git a/src/keys.ml b/src/keys.ml index 44532ccb..dbd5255c 100644 --- a/src/keys.ml +++ b/src/keys.ml @@ -442,18 +442,23 @@ module Make (Conn : Pg.CONN) = struct let sk = { sk with revoked_sig= Some revoked_sig } in Hashtbl.replace t.sk_ht pub sk; - (* TODO revoke, apply to database *) - Ok () + let+ () = + Pg.insert_signkey_revocation conn pub revoked_sig |> unwrap_err_caqti + in + () - let revoke_denomination pub revoked_sig = - match Hashtbl.find_opt t.dn_ht pub with + let revoke_denomination h_pub revoked_sig = + match Hashtbl.find_opt t.dn_ht h_pub with | None -> Error "Keys revoke_denomination: denomination not found." | Some dn -> let dn = { dn with revoked_sig= Some revoked_sig } in - Hashtbl.replace t.dn_ht pub dn; + Hashtbl.replace t.dn_ht h_pub dn; - (* TODO revoke, apply to database *) - Ok () + let+ () = + Pg.insert_denomination_revocation conn h_pub revoked_sig + |> unwrap_err_caqti + in + () let save () = let* () = write_eddsa sm_key_fname t.sm_key in