+ test disable-auditor/wire/drain
This commit is contained in:
parent
05cfa7a5b1
commit
6bd65561f8
9 changed files with 386 additions and 193 deletions
|
|
@ -2,7 +2,7 @@
|
|||
(public_name offline)
|
||||
(name offline)
|
||||
(modules offline offline_impl)
|
||||
(libraries cmdliner bos fmt mirage-crypto ptime mte vif))
|
||||
(libraries cmdliner bos fmt mirage-crypto mtime ptime mte vif))
|
||||
|
||||
(executable
|
||||
(public_name gen_registry_files)
|
||||
|
|
|
|||
|
|
@ -1,13 +1,6 @@
|
|||
(* TODO
|
||||
all management operations:
|
||||
/management/wire
|
||||
/management/wire/disable
|
||||
|
||||
/management/aml-officers
|
||||
-> /aml
|
||||
/management/partners
|
||||
-> /wads *)
|
||||
|
||||
(* not done:
|
||||
/management/aml-officers (for /aml)
|
||||
/management/partners (for /wads) *)
|
||||
open Cmdliner
|
||||
open Cmdliner.Term.Syntax
|
||||
open Offline_impl
|
||||
|
|
@ -199,35 +192,26 @@ let enable_auditor_cmd =
|
|||
let auditor_pub =
|
||||
Arg.(required & opt (some eddsa_pub) None & info [ "auditor_pub" ])
|
||||
in
|
||||
let validity_start =
|
||||
Arg.(required & opt (some timestamp) None & info [ "validity_start" ])
|
||||
in
|
||||
Cmd.make (Cmd.info "enable-auditor" ~doc)
|
||||
@@
|
||||
let+ output = output
|
||||
and+ master_key = master_key
|
||||
and+ auditor_url = auditor_url
|
||||
and+ auditor_name = auditor_name
|
||||
and+ auditor_pub = auditor_pub
|
||||
and+ validity_start = validity_start in
|
||||
and+ auditor_pub = auditor_pub in
|
||||
enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub
|
||||
~validity_start
|
||||
|
||||
let disable_auditor_cmd =
|
||||
let doc = "Disable auditor." in
|
||||
let auditor_pub =
|
||||
Arg.(required & opt (some eddsa_pub) None & info [ "auditor_pub" ])
|
||||
in
|
||||
let validity_end =
|
||||
Arg.(required & opt (some timestamp) None & info [ "validity_end" ])
|
||||
in
|
||||
Cmd.make (Cmd.info "disable-auditor" ~doc)
|
||||
@@
|
||||
let+ output = output
|
||||
and+ master_key = master_key
|
||||
and+ auditor_pub = auditor_pub
|
||||
and+ validity_end = validity_end in
|
||||
disable_auditor ~output ~master_key ~auditor_pub ~validity_end
|
||||
and+ auditor_pub = auditor_pub in
|
||||
disable_auditor ~output ~master_key ~auditor_pub
|
||||
|
||||
let wire_fee_cmd =
|
||||
let doc = "Provides wire fee configuration." in
|
||||
|
|
@ -301,6 +285,36 @@ let global_fees_cmd =
|
|||
~account_fee ~purse_fee ~history_expiration ~purse_account_limit
|
||||
~purse_timeout
|
||||
|
||||
let enable_wire_cmd =
|
||||
let doc = "Enable wire method." in
|
||||
let payto_uri =
|
||||
Arg.(required & opt (some string) None & info [ "payto_uri" ])
|
||||
in
|
||||
let bank_label =
|
||||
Arg.(value & opt (some string) None & info [ "bank_label" ])
|
||||
in
|
||||
let priority = Arg.(value & opt (some int) None & info [ "priority" ]) in
|
||||
Cmd.make (Cmd.info "enable-wire" ~doc)
|
||||
@@
|
||||
let+ output = output
|
||||
and+ master_key = master_key
|
||||
and+ payto_uri = payto_uri
|
||||
and+ bank_label = bank_label
|
||||
and+ priority = priority in
|
||||
enable_wire ~output ~master_key ~payto_uri ~bank_label ~priority
|
||||
|
||||
let disable_wire_cmd =
|
||||
let doc = "Disable wire method." in
|
||||
let payto_uri =
|
||||
Arg.(required & opt (some string) None & info [ "payto_uri" ])
|
||||
in
|
||||
Cmd.make (Cmd.info "disable-wire" ~doc)
|
||||
@@
|
||||
let+ output = output
|
||||
and+ master_key = master_key
|
||||
and+ payto_uri = payto_uri in
|
||||
disable_wire ~output ~master_key ~payto_uri
|
||||
|
||||
let drain_cmd =
|
||||
let doc =
|
||||
"Drain profits from the exchange. The actual drain requires running the \
|
||||
|
|
@ -344,7 +358,10 @@ let cli =
|
|||
disable_auditor_cmd;
|
||||
wire_fee_cmd;
|
||||
global_fees_cmd;
|
||||
enable_wire_cmd;
|
||||
disable_wire_cmd;
|
||||
drain_cmd;
|
||||
(* - *)
|
||||
test_hash64_cmd;
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -275,9 +275,10 @@ let global_fees ~output ~master_key ~start_date ~end_date ~history_fee
|
|||
let* () = write_file output s in
|
||||
Ok ()
|
||||
|
||||
let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub
|
||||
~validity_start =
|
||||
let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub =
|
||||
let* key = read_master_key_file master_key in
|
||||
let ns = Mtime_clock.now_ns () in
|
||||
let validity_start = Timestamp.of_s @@ Int64.unsigned_div ns 1_000_000_000L in
|
||||
let master_sig =
|
||||
let open Signatures.MasterAddAuditor in
|
||||
signf (EddsaSignature.sign ~key)
|
||||
|
|
@ -295,8 +296,10 @@ let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub
|
|||
let* () = write_file output s in
|
||||
Ok ()
|
||||
|
||||
let disable_auditor ~output ~master_key ~auditor_pub ~validity_end =
|
||||
let disable_auditor ~output ~master_key ~auditor_pub =
|
||||
let* key = read_master_key_file master_key in
|
||||
let ns = Mtime_clock.now_ns () in
|
||||
let validity_end = Timestamp.of_s @@ Int64.unsigned_div ns 1_000_000_000L in
|
||||
let master_sig =
|
||||
let open Signatures.MasterDelAuditor in
|
||||
signf (EddsaSignature.sign ~key) { end_date= validity_end; auditor_pub }
|
||||
|
|
@ -335,9 +338,84 @@ let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee
|
|||
let* () = write_file output s in
|
||||
Ok ()
|
||||
|
||||
(* TODO wire
|
||||
hash over json, hash over string option?
|
||||
|
||||
~conversion_url ~credit_restrictions ~debit_restrictions *)
|
||||
let enable_wire ~output ~master_key ~payto_uri ~bank_label ~priority =
|
||||
let* key = read_master_key_file master_key in
|
||||
let ns = Mtime_clock.now_ns () in
|
||||
let validity_start = Timestamp.of_s @@ Int64.unsigned_div ns 1_000_000_000L in
|
||||
let h_wire_details = Hash.FullPaytoHash.hash payto_uri in
|
||||
let conversion_url = None in
|
||||
let credit_restrictions = [] in
|
||||
let debit_restrictions = [] in
|
||||
let h_conversion_url =
|
||||
Hash.Cstring.H64.hash ((* ?? *) Option.value ~default:"" conversion_url)
|
||||
in
|
||||
let h_credit_restrictions = Hash.Cstring.H64.hash "" in
|
||||
let h_debit_restrictions = Hash.Cstring.H64.hash "" in
|
||||
let master_sig_wire =
|
||||
let open Signatures.MasterWireDetails in
|
||||
signf (EddsaSignature.sign ~key)
|
||||
{
|
||||
h_wire_details;
|
||||
h_conversion_url;
|
||||
h_credit_restrictions;
|
||||
h_debit_restrictions;
|
||||
}
|
||||
in
|
||||
let master_sig_add =
|
||||
let open Signatures.MasterAddWire in
|
||||
signf (EddsaSignature.sign ~key)
|
||||
{
|
||||
start_date= validity_start;
|
||||
h_wire= h_wire_details;
|
||||
h_conversion_url;
|
||||
h_credit_restrictions;
|
||||
h_debit_restrictions;
|
||||
}
|
||||
in
|
||||
let v =
|
||||
Api.WireSetupMessage.
|
||||
{
|
||||
master_sig_wire;
|
||||
master_sig_add;
|
||||
payto_uri;
|
||||
conversion_url;
|
||||
credit_restrictions;
|
||||
debit_restrictions;
|
||||
validity_start;
|
||||
bank_label;
|
||||
priority;
|
||||
}
|
||||
in
|
||||
let* s = Api.encode Api.WireSetupMessage.jsont v in
|
||||
let* () = write_file output s in
|
||||
Ok ()
|
||||
|
||||
let disable_wire ~output ~master_key ~payto_uri =
|
||||
let* key = read_master_key_file master_key in
|
||||
let ns = Mtime_clock.now_ns () in
|
||||
let validity_end = Timestamp.of_s @@ Int64.unsigned_div ns 1_000_000_000L in
|
||||
let h_wire = Hash.FullPaytoHash.hash payto_uri in
|
||||
let master_sig_del =
|
||||
let open Signatures.MasterDelWire in
|
||||
signf (EddsaSignature.sign ~key) { end_date= validity_end; h_wire }
|
||||
in
|
||||
let v = Api.WireTeardownMessage.{ payto_uri; master_sig_del; validity_end } in
|
||||
let* s = Api.encode Api.WireTeardownMessage.jsont v in
|
||||
let* () = write_file output s in
|
||||
Ok ()
|
||||
|
||||
let drain ~output ~master_key ~debit_account_section ~credit_payto_uri ~wtid
|
||||
~date ~amount =
|
||||
let* key = read_master_key_file master_key in
|
||||
let* () =
|
||||
match String.length wtid = 32 with
|
||||
| false -> Error "invalid wtid: must be 32 bytes"
|
||||
| true -> Ok ()
|
||||
in
|
||||
let master_sig =
|
||||
let open Signatures.MasterDrainProfit in
|
||||
signf (EddsaSignature.sign ~key)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue