different verify for master sigs

This commit is contained in:
swrup 2026-02-21 21:32:18 +01:00
parent ededffb26b
commit 1b8c2d5562
5 changed files with 108 additions and 138 deletions

View file

@ -3,29 +3,13 @@ open Api
open Hash open Hash
module Keys_get = struct module Keys_get = struct
let mk_future_keys_response (module Keys : Keys.S) =
let* future_signkeys = Keys.future_signkeys () in
let* future_denoms = Keys.future_denominations () in
let master_pub = Keys.master_pub in
let denom_secmod_public_key = Keys.secmod_rsa_pub in
let signkey_secmod_public_key = Keys.secmod_eddsa_pub in
Ok
FutureKeysResponse.
{
future_denoms;
future_signkeys;
master_pub;
denom_secmod_public_key;
signkey_secmod_public_key;
}
let jsont = FutureKeysResponse.jsont let jsont = FutureKeysResponse.jsont
let f req server _env = let f req server _env =
Logs.info (fun m -> m "GET /management/keys/"); Logs.info (fun m -> m "GET /management/keys/");
let keys = Vif.Server.device Devices.keys server in let (module Keys : Keys.S) = Vif.Server.device Devices.keys server in
let res = let res =
let* v = mk_future_keys_response keys in let* v = Keys.make_future_keys_response () in
let s = Api.encode_exn jsont v in let s = Api.encode_exn jsont v in
Ok s Ok s
in in
@ -36,9 +20,9 @@ module Keys_post = struct
let verify_dn (module Keys : Keys.S) fdn denom_hash master_sig = let verify_dn (module Keys : Keys.S) fdn denom_hash master_sig =
let open FutureDenom in let open FutureDenom in
let open Signatures.DenominationKeyValidity in let open Signatures.DenominationKeyValidity in
let r : r = let r =
{ {
master= Config.master_public_key; R.master= Config.master_public_key;
start= fdn.stamp_start; start= fdn.stamp_start;
expire_withdraw= fdn.stamp_expire_withdraw; expire_withdraw= fdn.stamp_expire_withdraw;
expire_spend= fdn.stamp_expire_deposit; expire_spend= fdn.stamp_expire_deposit;
@ -51,7 +35,7 @@ module Keys_post = struct
denom_hash; denom_hash;
} }
in in
verify Keys.master_pub master_sig r verify master_sig r
let verify_denom_sigs (module Keys : Keys.S) denom_sigs = let verify_denom_sigs (module Keys : Keys.S) denom_sigs =
let* fdn_l = Keys.future_denominations () in let* fdn_l = Keys.future_denominations () in
@ -78,15 +62,15 @@ module Keys_post = struct
{ key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig= _ } { key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig= _ }
master_sig = master_sig =
let open Signatures.ExchangeSigningKeyValidity in let open Signatures.ExchangeSigningKeyValidity in
let r : r = let r =
{ {
start= stamp_start; R.start= stamp_start;
expire= stamp_expire; expire= stamp_expire;
end_= stamp_end; end_= stamp_end;
signkey_pub= key; signkey_pub= key;
} }
in in
verify Keys.master_pub master_sig r verify master_sig r
let verify_signkey_sigs (module Keys : Keys.S) signkey_sigs = let verify_signkey_sigs (module Keys : Keys.S) signkey_sigs =
let* fsk_l = Keys.future_signkeys () in let* fsk_l = Keys.future_signkeys () in
@ -137,7 +121,7 @@ module Denom_revoke = struct
let verify (module Keys : Keys.S) h_denom_pub let verify (module Keys : Keys.S) h_denom_pub
DenomRevocationSignature.{ master_sig } = DenomRevocationSignature.{ master_sig } =
let open Signatures.MasterDenominationKeyRevocation in let open Signatures.MasterDenominationKeyRevocation in
verify Keys.master_pub master_sig { h_denom_pub } verify master_sig { h_denom_pub }
let do_ (module Keys : Keys.S) h_denom_pub let do_ (module Keys : Keys.S) h_denom_pub
DenomRevocationSignature.{ master_sig } = DenomRevocationSignature.{ master_sig } =
@ -163,7 +147,7 @@ module Signkey_revoke = struct
let verify (module Keys : Keys.S) exchange_pub let verify (module Keys : Keys.S) exchange_pub
SignkeyRevocationSignature.{ master_sig } = SignkeyRevocationSignature.{ master_sig } =
let open Signatures.MasterSigningKeyRevocation in let open Signatures.MasterSigningKeyRevocation in
verify Keys.master_pub master_sig { exchange_pub } verify master_sig { exchange_pub }
let do_ (module Keys : Keys.S) exchange_pub let do_ (module Keys : Keys.S) exchange_pub
SignkeyRevocationSignature.{ master_sig } = SignkeyRevocationSignature.{ master_sig } =
@ -196,7 +180,7 @@ module Auditors = struct
validity_start; validity_start;
} = } =
let open Signatures.MasterAddAuditor in let open Signatures.MasterAddAuditor in
verify Keys.master_pub master_sig verify master_sig
{ {
start_date= validity_start; start_date= validity_start;
auditor_pub; auditor_pub;
@ -243,7 +227,7 @@ module Auditors_disable = struct
let verify (module Keys : Keys.S) auditor_pub let verify (module Keys : Keys.S) auditor_pub
AuditorTeardownMessage.{ master_sig; validity_end } = AuditorTeardownMessage.{ master_sig; validity_end } =
let open Signatures.MasterDelAuditor in let open Signatures.MasterDelAuditor in
verify Keys.master_pub master_sig { end_date= validity_end; auditor_pub } verify master_sig { end_date= validity_end; auditor_pub }
let do_ ~db_conn auditor_pub let do_ ~db_conn auditor_pub
AuditorTeardownMessage.{ master_sig= _; validity_end } = AuditorTeardownMessage.{ master_sig= _; validity_end } =
@ -291,7 +275,7 @@ module Wire_fee = struct
wire_fee; wire_fee;
} = } =
let open Signatures.MasterWireFee in let open Signatures.MasterWireFee in
verify Keys.master_pub master_sig_wire verify master_sig_wire
{ {
h_wire_method= Hash.Cstring.H64.hash wire_method; h_wire_method= Hash.Cstring.H64.hash wire_method;
start_date= fee_start; start_date= fee_start;
@ -353,7 +337,7 @@ module Global_fees = struct
master_sig; master_sig;
} = } =
let open Signatures.GlobalFees in let open Signatures.GlobalFees in
verify Keys.master_pub master_sig verify master_sig
{ {
start_date; start_date;
end_date; end_date;
@ -426,7 +410,7 @@ module Wire = struct
let debit_restrictions = "" in let debit_restrictions = "" in
let* () = let* () =
let open Signatures.MasterWireDetails in let open Signatures.MasterWireDetails in
verify Keys.master_pub master_sig_wire verify master_sig_wire
{ {
h_wire_details= FullPaytoHash.hash payto_uri; h_wire_details= FullPaytoHash.hash payto_uri;
h_conversion_url= Hash.Cstring.H64.hash conversion_url; h_conversion_url= Hash.Cstring.H64.hash conversion_url;
@ -436,7 +420,7 @@ module Wire = struct
in in
let* () = let* () =
let open Signatures.MasterAddWire in let open Signatures.MasterAddWire in
verify Keys.master_pub master_sig_add verify master_sig_add
{ {
start_date= validity_start; start_date= validity_start;
h_wire= FullPaytoHash.hash payto_uri; h_wire= FullPaytoHash.hash payto_uri;
@ -492,7 +476,7 @@ module Wire_disable = struct
let verify (module Keys : Keys.S) let verify (module Keys : Keys.S)
WireTeardownMessage.{ payto_uri; master_sig_del; validity_end } = WireTeardownMessage.{ payto_uri; master_sig_del; validity_end } =
let open Signatures.MasterDelWire in let open Signatures.MasterDelWire in
verify Keys.master_pub master_sig_del verify master_sig_del
{ end_date= validity_end; h_wire= FullPaytoHash.hash payto_uri } { end_date= validity_end; h_wire= FullPaytoHash.hash payto_uri }
let do_ ~db_conn let do_ ~db_conn
@ -535,7 +519,7 @@ module Drain = struct
amount; amount;
} = } =
let open Signatures.MasterDrainProfit in let open Signatures.MasterDrainProfit in
verify Keys.master_pub master_sig verify master_sig
{ {
wtid; wtid;
date; date;
@ -576,7 +560,7 @@ module AmlOfficer = struct
} = } =
let open Signatures.MasterAmlOfficerStatus in let open Signatures.MasterAmlOfficerStatus in
let is_active = match is_active with true -> 1_l | false -> 0_l in let is_active = match is_active with true -> 1_l | false -> 0_l in
verify Keys.master_pub master_sig verify master_sig
{ {
change_date; change_date;
officer_pub; officer_pub;
@ -616,7 +600,7 @@ module Partners = struct
wad_fee; wad_fee;
} = } =
let open Signatures.PartnerConfiguration in let open Signatures.PartnerConfiguration in
verify Keys.master_pub master_sig verify master_sig
{ {
partner_pub; partner_pub;
start_date; start_date;

View file

@ -12,11 +12,6 @@ module Make (Conn : Pg.CONN) = struct
let conn = (module Conn : Pg.CONN) let conn = (module Conn : Pg.CONN)
(* - *)
let master_pub = Config.Exchange.master_public_key
let secmod_eddsa_pub = Sm_eddsa.sm_pub
let secmod_rsa_pub = Sm_rsa.sm_pub
(* TODO (* TODO
error "key not found", either: error "key not found", either:
- we tried to sign with a key that is not ours - we tried to sign with a key that is not ours
@ -37,7 +32,8 @@ module Make (Conn : Pg.CONN) = struct
let find_denomination h_pub = Pg.find_denom conn h_pub |> unwrap_err_caqti let find_denomination h_pub = Pg.find_denom conn h_pub |> unwrap_err_caqti
(* TODO (* TODO
check if database is coherent with secmod *) check if database is coherent with secmod
=> have something to run independent tests with clean db+sm *)
let signkeys () : Signkey.t list result = let signkeys () : Signkey.t list result =
let now = Timestamp.of_ptime @@ Ptime_clock.now () in let now = Timestamp.of_ptime @@ Ptime_clock.now () in
Pg.get_active_signkeys conn ~now |> unwrap_err_caqti Pg.get_active_signkeys conn ~now |> unwrap_err_caqti
@ -173,6 +169,19 @@ module Make (Conn : Pg.CONN) = struct
in in
List.filter_map Fun.id l List.filter_map Fun.id l
let make_future_keys_response () =
let* future_signkeys = future_signkeys () in
let* future_denoms = future_denominations () in
Ok
Api.FutureKeysResponse.
{
future_denoms;
future_signkeys;
master_pub= Config.Exchange.master_public_key;
denom_secmod_public_key= Sm_rsa.sm_pub;
signkey_secmod_public_key= Sm_eddsa.sm_pub;
}
let sk_of_future_sk future_sk master_sig = let sk_of_future_sk future_sk master_sig =
let Api.FutureSignKey. let Api.FutureSignKey.
{ key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig= _ } = { key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig= _ } =

View file

@ -3,9 +3,6 @@ open Crypto
type 'a result = ('a, string) Result.t type 'a result = ('a, string) Result.t
module type KEYS = sig module type KEYS = sig
val master_pub : eddsa_pub
val secmod_rsa_pub : eddsa_pub
val secmod_eddsa_pub : eddsa_pub
val sign : eddsa_pub -> string -> eddsa_sig val sign : eddsa_pub -> string -> eddsa_sig
val sign_denom : rsa_pub -> string -> rsa_sig val sign_denom : rsa_pub -> string -> rsa_sig
val find_signkey : eddsa_pub -> Signkey.t option result val find_signkey : eddsa_pub -> Signkey.t option result
@ -14,6 +11,7 @@ module type KEYS = sig
val denominations : unit -> Denomination.t list result val denominations : unit -> Denomination.t list result
val future_signkeys : unit -> Api.FutureSignKey.t list result val future_signkeys : unit -> Api.FutureSignKey.t list result
val future_denominations : unit -> Api.FutureDenom.t list result val future_denominations : unit -> Api.FutureDenom.t list result
val make_future_keys_response : unit -> Api.FutureKeysResponse.t result
val certify_future_signkey : val certify_future_signkey :
eddsa_pub -> Signatures.ExchangeSigningKeyValidity.t -> unit result eddsa_pub -> Signatures.ExchangeSigningKeyValidity.t -> unit result

View file

@ -145,20 +145,21 @@ end
(* --- Packed Signatures --- *) (* --- Packed Signatures --- *)
module MK (R : sig module type R = sig
type r type r
val bin : r Bin.t val bin : r Bin.t
end) : sig end
module type SIGNATURE = sig
open Crypto open Crypto
type r = R.r type r
type t type t
val signf : (string -> EddsaSignature.t) -> r -> t val signf : (string -> EddsaSignature.t) -> r -> t
(* todo (* todo
- could have another functor with `verify`'s key set to config's master_public_key
- type for unknown/verified signatures? (nk/ok) *) - type for unknown/verified signatures? (nk/ok) *)
val verify : EddsaPublicKey.t -> t -> r -> (unit, string) result val verify : EddsaPublicKey.t -> t -> r -> (unit, string) result
val jsont : t Jsont.t val jsont : t Jsont.t
@ -166,10 +167,11 @@ end) : sig
(* escape hatch, only needed for /keys `exchange_sig` (signature over contatentation of all of the master_sigs) *) (* escape hatch, only needed for /keys `exchange_sig` (signature over contatentation of all of the master_sigs) *)
val to_octets : t -> string val to_octets : t -> string
end = struct end
module MK (R : R) : SIGNATURE with type r := R.r = struct
open Crypto open Crypto
type r = R.r
type t = EddsaSignature.t type t = EddsaSignature.t
let to_string = Bin.to_string R.bin let to_string = Bin.to_string R.bin
@ -180,6 +182,14 @@ end = struct
let to_octets t = EddsaSignature.to_octets t let to_octets t = EddsaSignature.to_octets t
end end
module MK_master_sig (R : R) = struct
include MK (R)
let verify = verify Config.Exchange.master_public_key
end
(* ---- *)
module DenominationKeyAnnouncement = struct module DenominationKeyAnnouncement = struct
module R = struct module R = struct
(* CS: use purpose TALER_SIGNATURE_SM_CS_DENOMINATION_KEY *) (* CS: use purpose TALER_SIGNATURE_SM_CS_DENOMINATION_KEY *)
@ -207,7 +217,6 @@ module DenominationKeyAnnouncement = struct
|> sealr |> sealr
end end
include R
include MK (R) include MK (R)
end end
@ -232,7 +241,6 @@ module SigningKeyAnnouncement = struct
|> sealr |> sealr
end end
include R
include MK (R) include MK (R)
end end
@ -301,8 +309,7 @@ module DenominationKeyValidity = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module ExchangeSigningKeyValidity = struct module ExchangeSigningKeyValidity = struct
@ -329,8 +336,7 @@ module ExchangeSigningKeyValidity = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterDenominationKeyRevocation = struct module MasterDenominationKeyRevocation = struct
@ -348,8 +354,7 @@ module MasterDenominationKeyRevocation = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterSigningKeyRevocation = struct module MasterSigningKeyRevocation = struct
@ -367,8 +372,7 @@ module MasterSigningKeyRevocation = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterAddAuditor = struct module MasterAddAuditor = struct
@ -392,8 +396,7 @@ module MasterAddAuditor = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterDelAuditor = struct module MasterDelAuditor = struct
@ -414,8 +417,7 @@ module MasterDelAuditor = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module GlobalFees = struct module GlobalFees = struct
@ -470,8 +472,7 @@ module GlobalFees = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterWireDetails = struct module MasterWireDetails = struct
@ -509,8 +510,7 @@ module MasterWireDetails = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterAddWire = struct module MasterAddWire = struct
@ -552,8 +552,7 @@ module MasterAddWire = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterDelWire = struct module MasterDelWire = struct
@ -574,8 +573,7 @@ module MasterDelWire = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterDrainProfit = struct module MasterDrainProfit = struct
@ -603,8 +601,7 @@ module MasterDrainProfit = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module MasterAmlOfficerStatus = struct module MasterAmlOfficerStatus = struct
@ -630,8 +627,7 @@ module MasterAmlOfficerStatus = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module PartnerConfiguration = struct module PartnerConfiguration = struct
@ -670,8 +666,7 @@ module PartnerConfiguration = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module WadPartnerSignature = struct module WadPartnerSignature = struct
@ -718,7 +713,6 @@ module WadPartnerSignature = struct
|> sealr |> sealr
end end
include R
include MK (R) include MK (R)
end end
@ -748,8 +742,7 @@ module MasterWireFee = struct
|> sealr |> sealr
end end
include R include MK_master_sig (R)
include MK (R)
end end
module ExchangeKeyValidity = struct module ExchangeKeyValidity = struct
@ -815,7 +808,6 @@ module ExchangeKeyValidity = struct
|> sealr |> sealr
end end
include R
include MK (R) include MK (R)
end end
@ -838,7 +830,6 @@ module ExchangeKeySet = struct
|> sealr |> sealr
end end
include R
include MK (R) include MK (R)
end end

View file

@ -1,11 +1,19 @@
open Syntax open Syntax
open Crypto
open Hash open Hash
module Future_keys = struct module Future_keys = struct
open Crypto
open Api open Api
let verify = let verify offline_master_public_key
FutureKeysResponse.
{
future_denoms;
future_signkeys;
master_pub;
denom_secmod_public_key;
signkey_secmod_public_key;
} =
let verify_future_denom ~sm_denom_pub let verify_future_denom ~sm_denom_pub
FutureDenom. FutureDenom.
{ {
@ -44,37 +52,35 @@ module Future_keys = struct
verify sm_signkey_pub signkey_secmod_sig verify sm_signkey_pub signkey_secmod_sig
{ exchange_pub; anchor_time; duration } { exchange_pub; anchor_time; duration }
in in
fun our_master_public_key let* () =
match master_pub = offline_master_public_key with
| false ->
Fmt.error
"master public key of the future key response does not match ours"
| true -> Ok ()
in
let* () =
list_iter
(verify_future_denom ~sm_denom_pub:denom_secmod_public_key)
future_denoms
in
let* () =
list_iter
(verify_future_signkey ~sm_signkey_pub:signkey_secmod_public_key)
future_signkeys
in
Ok ()
let make ~master_key
FutureKeysResponse. FutureKeysResponse.
{ {
future_denoms; future_denoms;
future_signkeys; future_signkeys;
master_pub; master_pub= _;
denom_secmod_public_key; denom_secmod_public_key= _;
signkey_secmod_public_key; signkey_secmod_public_key= _;
} } =
-> let denom_signature
let* () =
match master_pub = our_master_public_key with
| false ->
Fmt.error
"master public key of the future key response does not match ours"
| true -> Ok ()
in
let* () =
list_iter
(verify_future_denom ~sm_denom_pub:denom_secmod_public_key)
future_denoms
in
let* () =
list_iter
(verify_future_signkey ~sm_signkey_pub:signkey_secmod_public_key)
future_signkeys
in
Ok ()
let make =
let denom_signature ~master_key
FutureDenom. FutureDenom.
{ {
section_name= _; section_name= _;
@ -113,7 +119,7 @@ module Future_keys = struct
in in
DenomSignature.{ h_denom_pub; master_sig } DenomSignature.{ h_denom_pub; master_sig }
in in
let signkey_signature ~master_key let signkey_signature
FutureSignKey. FutureSignKey.
{ key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig= _ } = { key; stamp_start; stamp_expire; stamp_end; signkey_secmod_sig= _ } =
let master_sig = let master_sig =
@ -129,21 +135,9 @@ module Future_keys = struct
in in
SignKeySignature.{ key; master_sig } SignKeySignature.{ key; master_sig }
in in
fun ~master_key let denom_sigs = List.map denom_signature future_denoms in
FutureKeysResponse. let signkey_sigs = List.map signkey_signature future_signkeys in
{ MasterSignatures.{ denom_sigs; signkey_sigs }
future_denoms;
future_signkeys;
master_pub= _;
denom_secmod_public_key= _;
signkey_secmod_public_key= _;
}
->
let denom_sigs = List.map (denom_signature ~master_key) future_denoms in
let signkey_sigs =
List.map (signkey_signature ~master_key) future_signkeys
in
MasterSignatures.{ denom_sigs; signkey_sigs }
end end
(* -- *) (* -- *)
@ -155,7 +149,7 @@ let write_file fname content =
let read_master_key_file filename = let read_master_key_file filename =
let* master_key = read_file filename in let* master_key = read_file filename in
Crypto.EddsaPrivateKey.of_octets master_key EddsaPrivateKey.of_octets master_key
let download ~output ~url = let download ~output ~url =
let open Bos in let open Bos in
@ -197,7 +191,6 @@ let setup ~output ~output_pubkey =
Ok () Ok ()
let sign ~master_key ~input ~output = let sign ~master_key ~input ~output =
let open Crypto in
let* master_key = read_master_key_file master_key in let* master_key = read_master_key_file master_key in
let* input = read_file input in let* input = read_file input in
let master_pub = EddsaPrivateKey.pub_of_priv master_key in let master_pub = EddsaPrivateKey.pub_of_priv master_key in
@ -214,7 +207,7 @@ let revoke_denom ~output ~master_key ~h_denom =
let denom_revoke = let denom_revoke =
let master_sig = let master_sig =
let open Signatures.MasterDenominationKeyRevocation in let open Signatures.MasterDenominationKeyRevocation in
signf (Crypto.EddsaSignature.sign ~key) { h_denom_pub } signf (EddsaSignature.sign ~key) { h_denom_pub }
in in
Api.DenomRevocationSignature.{ master_sig } Api.DenomRevocationSignature.{ master_sig }
in in
@ -227,7 +220,7 @@ let revoke_signkey ~output ~master_key ~signkey =
let signkey_revoke = let signkey_revoke =
let master_sig = let master_sig =
let open Signatures.MasterSigningKeyRevocation in let open Signatures.MasterSigningKeyRevocation in
signf (Crypto.EddsaSignature.sign ~key) { exchange_pub= signkey } signf (EddsaSignature.sign ~key) { exchange_pub= signkey }
in in
Api.SignkeyRevocationSignature.{ master_sig } Api.SignkeyRevocationSignature.{ master_sig }
in in
@ -238,7 +231,6 @@ let revoke_signkey ~output ~master_key ~signkey =
let global_fees ~output ~master_key ~start_date ~end_date ~history_fee let global_fees ~output ~master_key ~start_date ~end_date ~history_fee
~account_fee ~purse_fee ~history_expiration ~purse_account_limit ~account_fee ~purse_fee ~history_expiration ~purse_account_limit
~purse_timeout = ~purse_timeout =
let open Crypto in
let* key = read_master_key_file master_key in let* key = read_master_key_file master_key in
let* purse_account_limit = let* purse_account_limit =
match match
@ -282,7 +274,6 @@ let global_fees ~output ~master_key ~start_date ~end_date ~history_fee
let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub
~validity_start = ~validity_start =
let open Crypto in
let* key = read_master_key_file master_key in let* key = read_master_key_file master_key in
let master_sig = let master_sig =
let open Signatures.MasterAddAuditor in let open Signatures.MasterAddAuditor in
@ -302,7 +293,6 @@ let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub
Ok () Ok ()
let disable_auditor ~output ~master_key ~auditor_pub ~validity_end = let disable_auditor ~output ~master_key ~auditor_pub ~validity_end =
let open Crypto in
let* key = read_master_key_file master_key in let* key = read_master_key_file master_key in
let master_sig = let master_sig =
let open Signatures.MasterDelAuditor in let open Signatures.MasterDelAuditor in
@ -315,7 +305,6 @@ let disable_auditor ~output ~master_key ~auditor_pub ~validity_end =
let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee
~wire_fee = ~wire_fee =
let open Crypto in
let* key = read_master_key_file master_key in let* key = read_master_key_file master_key in
let master_sig_wire = let master_sig_wire =
let open Signatures.MasterWireFee in let open Signatures.MasterWireFee in
@ -345,7 +334,6 @@ let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee
let drain ~output ~master_key ~debit_account_section ~credit_payto_uri ~wtid let drain ~output ~master_key ~debit_account_section ~credit_payto_uri ~wtid
~date ~amount = ~date ~amount =
let open Crypto in
let* key = read_master_key_file master_key in let* key = read_master_key_file master_key in
let master_sig = let master_sig =
let open Signatures.MasterDrainProfit in let open Signatures.MasterDrainProfit in