From 21371c7d50b77e6fccc8da2668e15b776ffcc7ff Mon Sep 17 00:00:00 2001 From: swrup Date: Thu, 11 Dec 2025 09:39:24 +0100 Subject: [PATCH] + aml-officers --- src/handler.ml | 13 +++++++++++++ src/management.ml | 28 ++++++++++++++++++++++++++-- src/mte.ml | 2 ++ src/pg.ml | 21 +++++++++++++++++++++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/src/handler.ml b/src/handler.ml index 2ea55f42..30f62eda 100644 --- a/src/handler.ml +++ b/src/handler.ml @@ -178,3 +178,16 @@ let management_drain req server _env = Ok "" in respond_with_res res req + +let management_aml_officers_jsont = AmlOfficerSetup.jsont + +let management_aml_officers req server _env = + let open Management in + let db_conn = Vif.Server.device Devices.db_connection server in + let res = + let* v = Vif.Request.of_json req |> unwrap_err_msg in + let* () = verify_aml_officier v in + let* () = update_aml_officier ~db_conn v in + Ok "" + in + respond_with_res res req diff --git a/src/management.ml b/src/management.ml index e32c56e1..f1765019 100644 --- a/src/management.ml +++ b/src/management.ml @@ -445,8 +445,6 @@ let update_wire_disable ~db_conn in () -[@@@ocaml.warning "-27"] - let verify_drain DrainProfitsMessage. { @@ -471,3 +469,29 @@ let verify_drain let update_drain ~db_conn v = let+ () = Pg.insert_drain_profit db_conn v |> unwrap_err_caqti in () + +let verify_aml_officier + AmlOfficerSetup. + { + officer_pub; + officer_name; + is_active; + read_only=_; + master_sig; + change_date; + } = + let open Bin_sig.MasterAmlOfficerStatus in + let is_active = match is_active with true -> 1_l | false -> 0_l in + verify ~key:Config.Exchange.master_public_key master_sig + { + change_date; + officer_pub; + h_officer_name= Bin_type.Hash_64_cstr.hash officer_name; + is_active; + } + +let update_aml_officier ~db_conn v = + let+ _last_change = Pg.insert_aml_officer db_conn v |> unwrap_err_caqti in + () + +(*[@@@ocaml.warning "-27"]*) diff --git a/src/mte.ml b/src/mte.ml index b9b79339..6dc7964a 100644 --- a/src/mte.ml +++ b/src/mte.ml @@ -57,6 +57,8 @@ let routes = post (v "management" / "wire" / "disable") management_wire_disable_jsont --> management_wire_disable; post (v "management" / "drain") management_drain_jsont --> management_drain; + post (v "management" / "aml-officers") management_aml_officers_jsont + --> management_aml_officers; ] let () = diff --git a/src/pg.ml b/src/pg.ml index 58a91c8b..b094fe59 100644 --- a/src/pg.ml +++ b/src/pg.ml @@ -429,3 +429,24 @@ let insert_drain_profit = -> Conn.exec insert_drain_profit (wtid, debit_account_section, credit_payto_uri, date, amount, master_sig) + +let insert_aml_officer = + let exchange_do_insert_aml_officer = + let master_sig = Bin_sig.MasterAmlOfficerStatus.caqti in + Caqti_type.(t6 eddsa_pub master_sig string bool bool time ->! time) + "SELECT out_last_change FROM exchange_do_insert_aml_officer ($1, $2, $3, \ + $4, $5, $6)" + in + fun (module Conn : CONN) + Api.AmlOfficerSetup. + { + officer_pub; + officer_name; + is_active; + read_only; + master_sig; + change_date; + } + -> + Conn.find exchange_do_insert_aml_officer + (officer_pub, master_sig, officer_name, is_active, read_only, change_date)