wip denom revocation
This commit is contained in:
parent
edbe3ceb70
commit
96e4bf7956
4 changed files with 39 additions and 5 deletions
|
|
@ -69,6 +69,7 @@ module HashCode : sig
|
||||||
type t
|
type t
|
||||||
|
|
||||||
val hash : string -> t
|
val hash : string -> t
|
||||||
|
val of_b32 : B32.t -> (t, string) result
|
||||||
val to_denomination_hash : t -> Bin_type.DenominationHash.t
|
val to_denomination_hash : t -> Bin_type.DenominationHash.t
|
||||||
val jsont : t Jsont.t
|
val jsont : t Jsont.t
|
||||||
end = struct
|
end = struct
|
||||||
|
|
@ -80,6 +81,7 @@ end = struct
|
||||||
let open Digestif.SHA512 in
|
let open Digestif.SHA512 in
|
||||||
s |> digest_string |> to_raw_string
|
s |> digest_string |> to_raw_string
|
||||||
|
|
||||||
|
let of_b32 = B32.decode
|
||||||
let jsont = B32.jsont
|
let jsont = B32.jsont
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ end
|
||||||
include Respond_util
|
include Respond_util
|
||||||
open Api
|
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_signkey = Vif.Server.device Devices.secmod_signkey server in
|
||||||
let sm_denom = Vif.Server.device Devices.secmod_denom server in
|
let sm_denom = Vif.Server.device Devices.secmod_denom server in
|
||||||
let res =
|
let res =
|
||||||
|
|
@ -36,9 +36,9 @@ let keys_get req server _env =
|
||||||
in
|
in
|
||||||
respond_with_res res req
|
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 Syntax in
|
||||||
let open Management in
|
let open Management in
|
||||||
let db_conn = Vif.Server.device Devices.db_connection server in
|
let db_conn = Vif.Server.device Devices.db_connection server in
|
||||||
|
|
@ -55,3 +55,21 @@ let keys_post req server _env =
|
||||||
Ok ""
|
Ok ""
|
||||||
in
|
in
|
||||||
respond_with_res res req
|
respond_with_res res req
|
||||||
|
|
||||||
|
let management_denom_revoke_jsont = DenomRevocationSignature.jsont
|
||||||
|
|
||||||
|
let management_denom_revoke req h_denom_pub 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* h_denom_pub = HashCode.of_b32 h_denom_pub in
|
||||||
|
let h_denom_pub = HashCode.to_denomination_hash h_denom_pub in
|
||||||
|
let* v = Vif.Request.of_json req |> unwrap_err_msg in
|
||||||
|
let* () = verify_denom_revocation_sig ~h_denom_pub v in
|
||||||
|
let* () = update_denom_revocation ~db_conn ~sm_signkey ~sm_denom v in
|
||||||
|
Ok ""
|
||||||
|
in
|
||||||
|
respond_with_res res req
|
||||||
|
|
|
||||||
|
|
@ -213,3 +213,12 @@ let update_master_signatures ~db_conn ~sm_signkey ~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 ()
|
||||||
|
|
||||||
|
[@@@ocaml.warning "-27"]
|
||||||
|
|
||||||
|
let verify_denom_revocation_sig ~h_denom_pub
|
||||||
|
DenomRevocationSignature.{ master_sig } =
|
||||||
|
let open Bin_sig.MasterDenominationKeyRevocation in
|
||||||
|
verify ~key:Config.Exchange.master_public_key master_sig { h_denom_pub }
|
||||||
|
|
||||||
|
let update_denom_revocation ~db_conn ~sm_signkey ~sm_denom v = Ok ()
|
||||||
|
|
|
||||||
|
|
@ -32,8 +32,13 @@ let routes =
|
||||||
get_ rel --> hello;
|
get_ rel --> hello;
|
||||||
get_ (v "terms") --> Static.terms;
|
get_ (v "terms") --> Static.terms;
|
||||||
get_ (v "privacy") --> Static.privacy;
|
get_ (v "privacy") --> Static.privacy;
|
||||||
get_ (v "management" / "keys") --> keys_get;
|
get_ (v "management" / "keys") --> management_keys_get;
|
||||||
post (v "management" / "keys") keys_post_jsont --> keys_post;
|
post (v "management" / "keys") management_keys_post_jsont
|
||||||
|
--> management_keys_post;
|
||||||
|
post
|
||||||
|
(v "management" / "denominations" /% string `Path / "revoke")
|
||||||
|
management_denom_revoke_jsont
|
||||||
|
--> management_denom_revoke;
|
||||||
]
|
]
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue