This commit is contained in:
parent
c42636b998
commit
696ac151d1
5 changed files with 38 additions and 50 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue