This commit is contained in:
swrup 2026-02-21 16:02:32 +01:00
parent c42636b998
commit 696ac151d1
5 changed files with 38 additions and 50 deletions

View file

@ -173,7 +173,7 @@ let mk_keys ~db_conn (module Keys : Keys.S) ~last_issue_date =
|> Hash.H64.hash |> Hash.H64.hash
in in
let open Signatures.ExchangeKeySet in let open Signatures.ExchangeKeySet in
sign_f ~f:(Keys.sign ~pub:exchange_pub) R.{ list_issue_date; hc } signf (Keys.sign ~pub:exchange_pub) R.{ list_issue_date; hc }
in in
let recoup = (* TODO /recoup *) [] in let recoup = (* TODO /recoup *) [] in

View file

@ -51,7 +51,7 @@ module Keys_post = struct
denom_hash; denom_hash;
} }
in in
verify_f ~f:(Crypto.EddsaSignature.verify ~key:Keys.master_pub) master_sig r verify Keys.master_pub 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
@ -86,7 +86,7 @@ module Keys_post = struct
signkey_pub= key; signkey_pub= key;
} }
in in
verify_f ~f:(Crypto.EddsaSignature.verify ~key:Keys.master_pub) master_sig r verify Keys.master_pub 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,9 +137,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_f verify Keys.master_pub master_sig { h_denom_pub }
~f:(Crypto.EddsaSignature.verify ~key:Keys.master_pub)
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 } =
@ -165,7 +163,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_f ~f:Keys.verify_with_master_key master_sig { exchange_pub } verify Keys.master_pub 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 } =
@ -198,7 +196,7 @@ module Auditors = struct
validity_start; validity_start;
} = } =
let open Signatures.MasterAddAuditor in let open Signatures.MasterAddAuditor in
verify_f ~f:Keys.verify_with_master_key master_sig verify Keys.master_pub master_sig
{ {
start_date= validity_start; start_date= validity_start;
auditor_pub; auditor_pub;
@ -245,8 +243,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_f ~f:Keys.verify_with_master_key master_sig verify Keys.master_pub master_sig { end_date= validity_end; auditor_pub }
{ 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 } =
@ -294,7 +291,7 @@ module Wire_fee = struct
wire_fee; wire_fee;
} = } =
let open Signatures.MasterWireFee in let open Signatures.MasterWireFee in
verify_f ~f:Keys.verify_with_master_key master_sig_wire verify Keys.master_pub 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;
@ -356,7 +353,7 @@ module Global_fees = struct
master_sig; master_sig;
} = } =
let open Signatures.GlobalFees in let open Signatures.GlobalFees in
verify_f ~f:Keys.verify_with_master_key master_sig verify Keys.master_pub master_sig
{ {
start_date; start_date;
end_date; end_date;
@ -429,7 +426,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_f ~f:Keys.verify_with_master_key master_sig_wire verify Keys.master_pub 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;
@ -439,7 +436,7 @@ module Wire = struct
in in
let* () = let* () =
let open Signatures.MasterAddWire in let open Signatures.MasterAddWire in
verify_f ~f:Keys.verify_with_master_key master_sig_add verify Keys.master_pub master_sig_add
{ {
start_date= validity_start; start_date= validity_start;
h_wire= FullPaytoHash.hash payto_uri; h_wire= FullPaytoHash.hash payto_uri;
@ -495,7 +492,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_f ~f:Keys.verify_with_master_key master_sig_del verify Keys.master_pub 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
@ -538,7 +535,7 @@ module Drain = struct
amount; amount;
} = } =
let open Signatures.MasterDrainProfit in let open Signatures.MasterDrainProfit in
verify_f ~f:Keys.verify_with_master_key master_sig verify Keys.master_pub master_sig
{ {
wtid; wtid;
date; date;
@ -579,7 +576,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_f ~f:Keys.verify_with_master_key master_sig verify Keys.master_pub master_sig
{ {
change_date; change_date;
officer_pub; officer_pub;
@ -619,7 +616,7 @@ module Partners = struct
wad_fee; wad_fee;
} = } =
let open Signatures.PartnerConfiguration in let open Signatures.PartnerConfiguration in
verify_f ~f:Keys.verify_with_master_key master_sig verify Keys.master_pub master_sig
{ {
partner_pub; partner_pub;
start_date; start_date;

View file

@ -1,3 +1,4 @@
(* TODO better error type *)
type 'a result = ('a, string) Result.t type 'a result = ('a, string) Result.t
module type S = Keys_intf.S module type S = Keys_intf.S
@ -41,7 +42,7 @@ module Make (Conn : Pg.CONN) = struct
let exchange_pub = pub in let exchange_pub = pub in
let anchor_time = stamp_start in let anchor_time = stamp_start in
let duration = Timestamp.diff stamp_start stamp_expire in let duration = Timestamp.diff stamp_start stamp_expire in
sign_f ~f:Secmod_eddsa.sign_with_sm_key signf Secmod_eddsa.sign_with_sm_key
{ exchange_pub; anchor_time; duration } { exchange_pub; anchor_time; duration }
in in
Api.FutureSignKey. Api.FutureSignKey.
@ -89,7 +90,7 @@ module Make (Conn : Pg.CONN) = struct
let duration_withdraw = let duration_withdraw =
Timestamp.diff stamp_start stamp_expire_withdraw Timestamp.diff stamp_start stamp_expire_withdraw
in in
sign_f ~f:Secmod_rsa.sign_with_sm_key signf Secmod_rsa.sign_with_sm_key
{ h_denom_pub; h_section_name; anchor_time; duration_withdraw } { h_denom_pub; h_section_name; anchor_time; duration_withdraw }
in in
FutureDenom. FutureDenom.

View file

@ -155,21 +155,15 @@ end) : sig
type r = R.r type r = R.r
type t type t
val sign_f : f:(string -> eddsa_sig) -> r -> t val signf : (string -> EddsaSignature.t) -> r -> t
(* TODO
- just directly verify here?
- type for `theirs` and `ours` signatures? *)
val verify_f :
f:(eddsa_sig -> msg:string -> (unit, string) result) ->
t ->
r ->
(unit, string) result
(* todo
- could have another functor with `verify`'s key set to config's master_public_key
- type for unknown/verified signatures? (nk/ok) *)
val verify : EddsaPublicKey.t -> t -> r -> (unit, string) result
val jsont : t Jsont.t val jsont : t Jsont.t
val caqti : t Caqti_type.t val caqti : t Caqti_type.t
(* TODO rm *)
(* 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 = struct
@ -179,8 +173,8 @@ end = struct
type t = EddsaSignature.t type t = EddsaSignature.t
let to_string = Bin.to_string R.bin let to_string = Bin.to_string R.bin
let sign_f ~f r = f (to_string r) let verify key t r = EddsaSignature.verify ~key t ~msg:(to_string r)
let verify_f ~f t r = f t ~msg:(to_string r) let signf f r = f (to_string r)
let jsont = EddsaSignature.jsont let jsont = EddsaSignature.jsont
let caqti : EddsaSignature.t Caqti_type.t = EddsaSignature.caqti let caqti : EddsaSignature.t Caqti_type.t = EddsaSignature.caqti
let to_octets t = EddsaSignature.to_octets t let to_octets t = EddsaSignature.to_octets t

View file

@ -31,9 +31,7 @@ module Future_keys = struct
Timestamp.diff stamp_start stamp_expire_withdraw Timestamp.diff stamp_start stamp_expire_withdraw
in in
let open Signatures.DenominationKeyAnnouncement in let open Signatures.DenominationKeyAnnouncement in
verify_f verify sm_denom_pub denom_secmod_sig
~f:(EddsaSignature.verify ~key:sm_denom_pub)
denom_secmod_sig
{ h_denom_pub; h_section_name; anchor_time; duration_withdraw } { h_denom_pub; h_section_name; anchor_time; duration_withdraw }
in in
let verify_future_signkey ~sm_signkey_pub let verify_future_signkey ~sm_signkey_pub
@ -43,9 +41,7 @@ module Future_keys = struct
let anchor_time = stamp_start in let anchor_time = stamp_start in
let duration = Timestamp.diff stamp_start stamp_expire in let duration = Timestamp.diff stamp_start stamp_expire in
let open Signatures.SigningKeyAnnouncement in let open Signatures.SigningKeyAnnouncement in
verify_f verify sm_signkey_pub signkey_secmod_sig
~f:(EddsaSignature.verify ~key:sm_signkey_pub)
signkey_secmod_sig
{ exchange_pub; anchor_time; duration } { exchange_pub; anchor_time; duration }
in in
fun our_master_public_key fun our_master_public_key
@ -99,8 +95,8 @@ module Future_keys = struct
let master_sig = let master_sig =
let open Signatures.DenominationKeyValidity in let open Signatures.DenominationKeyValidity in
let master = EddsaPrivateKey.(pub_of_priv master_key) in let master = EddsaPrivateKey.(pub_of_priv master_key) in
sign_f signf
~f:(EddsaSignature.sign ~key:master_key) (EddsaSignature.sign ~key:master_key)
{ {
master; master;
start= stamp_start; start= stamp_start;
@ -122,8 +118,8 @@ module Future_keys = struct
{ 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 =
let open Signatures.ExchangeSigningKeyValidity in let open Signatures.ExchangeSigningKeyValidity in
sign_f signf
~f:(EddsaSignature.sign ~key:master_key) (EddsaSignature.sign ~key:master_key)
{ {
start= stamp_start; start= stamp_start;
expire= stamp_expire; expire= stamp_expire;
@ -218,7 +214,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
sign_f ~f:(Crypto.EddsaSignature.sign ~key) { h_denom_pub } signf (Crypto.EddsaSignature.sign ~key) { h_denom_pub }
in in
Api.DenomRevocationSignature.{ master_sig } Api.DenomRevocationSignature.{ master_sig }
in in
@ -231,7 +227,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
sign_f ~f:(Crypto.EddsaSignature.sign ~key) { exchange_pub= signkey } signf (Crypto.EddsaSignature.sign ~key) { exchange_pub= signkey }
in in
Api.SignkeyRevocationSignature.{ master_sig } Api.SignkeyRevocationSignature.{ master_sig }
in in
@ -254,7 +250,7 @@ let global_fees ~output ~master_key ~start_date ~end_date ~history_fee
in in
let master_sig = let master_sig =
let open Signatures.GlobalFees in let open Signatures.GlobalFees in
sign_f ~f:(EddsaSignature.sign ~key) signf (EddsaSignature.sign ~key)
{ {
start_date; start_date;
end_date; end_date;
@ -290,7 +286,7 @@ let enable_auditor ~output ~master_key ~auditor_url ~auditor_name ~auditor_pub
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
sign_f ~f:(EddsaSignature.sign ~key) signf (EddsaSignature.sign ~key)
{ {
start_date= validity_start; start_date= validity_start;
auditor_pub; auditor_pub;
@ -310,7 +306,7 @@ let disable_auditor ~output ~master_key ~auditor_pub ~validity_end =
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
sign_f ~f:(EddsaSignature.sign ~key) { end_date= validity_end; auditor_pub } signf (EddsaSignature.sign ~key) { end_date= validity_end; auditor_pub }
in in
let v = Api.AuditorTeardownMessage.{ master_sig; validity_end } in let v = Api.AuditorTeardownMessage.{ master_sig; validity_end } in
let* s = Api.encode Api.AuditorTeardownMessage.jsont v in let* s = Api.encode Api.AuditorTeardownMessage.jsont v in
@ -323,7 +319,7 @@ let wire_fee ~output ~master_key ~wire_method ~fee_start ~fee_end ~closing_fee
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
sign_f ~f:(EddsaSignature.sign ~key) signf (EddsaSignature.sign ~key)
{ {
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 +349,7 @@ let drain ~output ~master_key ~debit_account_section ~credit_payto_uri ~wtid
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
sign_f ~f:(EddsaSignature.sign ~key) signf (EddsaSignature.sign ~key)
{ {
wtid; wtid;
date; date;