refacto verify_denomination/signkey
This commit is contained in:
parent
d2e546571c
commit
edd2646a86
6 changed files with 120 additions and 170 deletions
|
|
@ -16,68 +16,26 @@ module Keys_get = struct
|
|||
end
|
||||
|
||||
module Keys_post = struct
|
||||
let verify_fdn (module Keys : Keys.S)
|
||||
DenomSignature.{ h_denom_pub; master_sig } =
|
||||
let open FutureDenom in
|
||||
let open Signatures.DenominationKeyValidity in
|
||||
let* fdn = Keys.find_future_denomination h_denom_pub in
|
||||
verify Config.master_public_key master_sig
|
||||
{
|
||||
R.master= Config.master_public_key;
|
||||
start= fdn.stamp_start;
|
||||
expire_withdraw= fdn.stamp_expire_withdraw;
|
||||
expire_spend= fdn.stamp_expire_deposit;
|
||||
expire_legal= fdn.stamp_expire_legal;
|
||||
value= fdn.value;
|
||||
fee_withdraw= fdn.fee_withdraw;
|
||||
fee_deposit= fdn.fee_deposit;
|
||||
fee_refresh= fdn.fee_refresh;
|
||||
fee_refund= fdn.fee_refund;
|
||||
denom_hash= h_denom_pub;
|
||||
}
|
||||
|
||||
let verify_fsk (module Keys : Keys.S) SignKeySignature.{ key; master_sig } =
|
||||
let open Signatures.ExchangeSigningKeyValidity in
|
||||
let* fsk = Keys.find_future_signkey key in
|
||||
verify Config.master_public_key master_sig
|
||||
{
|
||||
R.start= fsk.stamp_start;
|
||||
expire= fsk.stamp_expire;
|
||||
end_= fsk.stamp_end;
|
||||
signkey_pub= key;
|
||||
}
|
||||
|
||||
let verify keys MasterSignatures.{ denom_sigs; signkey_sigs } =
|
||||
let* () = list_iter (verify_fsk keys) signkey_sigs in
|
||||
let* () = list_iter (verify_fdn keys) denom_sigs in
|
||||
let verify (module Keys : Keys.S)
|
||||
MasterSignatures.{ denom_sigs; signkey_sigs } =
|
||||
let* () = list_iter Keys.verify_future_signkey signkey_sigs in
|
||||
let* () = list_iter Keys.verify_future_denomination denom_sigs in
|
||||
Ok ()
|
||||
|
||||
let do_ ~db_conn:_ (module Keys : Keys.S)
|
||||
MasterSignatures.{ denom_sigs; signkey_sigs } =
|
||||
let* () =
|
||||
list_iter
|
||||
(fun SignKeySignature.{ key; master_sig } ->
|
||||
Keys.certify_future_signkey key master_sig)
|
||||
signkey_sigs
|
||||
in
|
||||
let* () =
|
||||
list_iter
|
||||
(fun DenomSignature.{ h_denom_pub; master_sig } ->
|
||||
Keys.certify_future_denomination h_denom_pub master_sig)
|
||||
denom_sigs
|
||||
in
|
||||
let do_ (module Keys : Keys.S) MasterSignatures.{ denom_sigs; signkey_sigs } =
|
||||
let* () = list_iter Keys.certify_future_signkey signkey_sigs in
|
||||
let* () = list_iter Keys.certify_future_denomination denom_sigs in
|
||||
Ok ()
|
||||
|
||||
let jsont = MasterSignatures.jsont
|
||||
|
||||
let f req server _env =
|
||||
Logs.info (fun m -> m "POST /management/keys/");
|
||||
let db_conn = Vif.Server.device Devices.db_connection server in
|
||||
let keys = Vif.Server.device Devices.keys server in
|
||||
let res =
|
||||
let* v = Vif.Request.of_json req |> unwrap_err_msg in
|
||||
let* () = verify keys v in
|
||||
let* () = do_ ~db_conn keys v in
|
||||
let* () = do_ keys v in
|
||||
Ok ()
|
||||
in
|
||||
Respond.result_no_content res req
|
||||
|
|
@ -292,31 +250,7 @@ module Wire_fee = struct
|
|||
end
|
||||
|
||||
module Global_fees = struct
|
||||
let verify (module Keys : Keys.S)
|
||||
GlobalFees.
|
||||
{
|
||||
start_date;
|
||||
end_date;
|
||||
history_fee;
|
||||
account_fee;
|
||||
purse_fee;
|
||||
history_expiration;
|
||||
purse_account_limit;
|
||||
purse_timeout;
|
||||
master_sig;
|
||||
} =
|
||||
let open Signatures.GlobalFees in
|
||||
verify Config.master_public_key master_sig
|
||||
{
|
||||
start_date;
|
||||
end_date;
|
||||
purse_timeout;
|
||||
history_expiration;
|
||||
history_fee;
|
||||
account_fee;
|
||||
purse_fee;
|
||||
purse_account_limit;
|
||||
}
|
||||
let verify v = GlobalFees.verify_global_fees ~key:Config.master_public_key v
|
||||
|
||||
let do_ ~db_conn v =
|
||||
let* global_fees =
|
||||
|
|
@ -351,11 +285,10 @@ module Global_fees = struct
|
|||
and once set for a timeframe, it should not change. *)
|
||||
let f req server _env =
|
||||
Logs.info (fun m -> m "POST /management/global-fees/");
|
||||
let keys = Vif.Server.device Devices.keys server 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 keys v in
|
||||
let* () = verify v in
|
||||
let* () = do_ ~db_conn v in
|
||||
Ok ()
|
||||
in
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue