diff --git a/src/handler.ml b/src/handler.ml index 259592fe..93396245 100644 --- a/src/handler.ml +++ b/src/handler.ml @@ -26,7 +26,7 @@ end include Respond_util open Api -let keys_get req server _env = +let management_keys_get req server _env = let sm_signkey = Vif.Server.device Devices.secmod_signkey server in let sm_denom = Vif.Server.device Devices.secmod_denom server in let res = @@ -36,9 +36,9 @@ let keys_get req server _env = in respond_with_res res req -let keys_post_jsont = MasterSignatures.jsont +let management_keys_post_jsont = MasterSignatures.jsont -let keys_post req server _env = +let management_keys_post req server _env = let open Syntax in let open Management in let db_conn = Vif.Server.device Devices.db_connection server in @@ -55,3 +55,19 @@ let keys_post req server _env = Ok "" in respond_with_res res req + +let management_denom_revoke_jsont = DenomRevocationSignature.jsont + +let management_denom_revoke req server _env = + let open Syntax in + let open Management in + let db_conn = Vif.Server.device Devices.db_connection server in + let sm_signkey = Vif.Server.device Devices.secmod_signkey server in + let sm_denom = Vif.Server.device Devices.secmod_denom server in + let res = + let* v = Vif.Request.of_json req |> unwrap_err_msg in + let* () = verify_denom_revocation_sig ~sm_signkey ~sm_denom v in + let* () = update_denom_revocation ~db_conn ~sm_signkey ~sm_denom v in + Ok "" + in + respond_with_res res req diff --git a/src/management.ml b/src/management.ml index 580b1758..16a670ac 100644 --- a/src/management.ml +++ b/src/management.ml @@ -213,3 +213,8 @@ let update_master_signatures ~db_conn ~sm_signkey ~sm_denom in let* () = check_master_signatures_update ~db_conn ~sm_denom in Ok () + +[@@@ocaml.warning "-27"] + +let verify_denom_revocation_sig ~sm_signkey ~sm_denom v = Ok () +let update_denom_revocation ~db_conn ~sm_signkey ~sm_denom v = Ok () diff --git a/src/mte.ml b/src/mte.ml index b164d851..41723718 100644 --- a/src/mte.ml +++ b/src/mte.ml @@ -32,8 +32,13 @@ let routes = get_ rel --> hello; get_ (v "terms") --> Static.terms; get_ (v "privacy") --> Static.privacy; - get_ (v "management" / "keys") --> keys_get; - post (v "management" / "keys") keys_post_jsont --> keys_post; + get_ (v "management" / "keys") --> management_keys_get; + post (v "management" / "keys") management_keys_post_jsont + --> management_keys_post; + post + (v "management" / "denominations" / "$H_DENOM_PUB" / "revoke") + management_denom_revoke_jsont + --> management_denom_revoke; ] let () =