This commit is contained in:
swrup 2026-02-26 17:04:48 +01:00
parent a376fc584f
commit d8eea72525
4 changed files with 19 additions and 4 deletions

View file

@ -83,14 +83,18 @@ let mk_keys ~db_conn (module Keys : Keys.S) ~last_issue_date =
let* denominations = Denomination.make_denom_group_sorted denom_l in
let* signkeys = Keys.signkeys () in
let signkeys = List.map Api.SignKey.of_signkey signkeys in
(* the eddsa pub key used to sign exchange_sig *)
let* exchange_pub =
match signkeys with
| [] -> Fmt.error "exchange has no active signkey"
| sk :: _ -> Ok sk.SignKey.key
let now = Timestamp.of_ptime (Ptime_clock.now ()) in
let opt =
List.find_opt (fun sk -> Signkey.is_valid_at ~timestamp:now sk) signkeys
in
match opt with
| None -> Fmt.error "exchange has no active signkey"
| Some sk -> Ok sk.pub
in
let signkeys = List.map Api.SignKey.of_signkey signkeys in
(* ! depends on denominations order *)
let exchange_sig =

View file

@ -7,3 +7,6 @@ type t = {
stamp_end: Timestamp.t;
master_sig: Signatures.ExchangeSigningKeyValidity.t;
}
let is_valid_at ~timestamp sk =
Timestamp.geq sk.stamp_start timestamp && Timestamp.lt timestamp sk.stamp_end

View file

@ -97,6 +97,10 @@ module Timestamp = struct
let never = uint64_max
let zero = 0L
let compare = Int64.unsigned_compare
let gt a b = compare a b > 0
let geq a b = compare a b >= 0
let lt a b = compare a b < 0
let leq a b = compare a b <= 0
let min a b = if compare a b < 0 then a else b
let max a b = if compare a b > 0 then a else b

View file

@ -37,6 +37,10 @@ module Timestamp : sig
val never : t
val zero : t
val compare : t -> t -> int
val gt : t -> t -> bool
val geq : t -> t -> bool
val lt : t -> t -> bool
val leq : t -> t -> bool
val min : t -> t -> t
val max : t -> t -> t
val diff : t -> t -> TimeRelative.t