This commit is contained in:
parent
274323d737
commit
6bb14fcbf6
3 changed files with 17 additions and 23 deletions
11
src/keys.ml
11
src/keys.ml
|
|
@ -274,15 +274,10 @@ module Make (Conn : Pg.CONN) : S = struct
|
||||||
}
|
}
|
||||||
|
|
||||||
let verify_future_signkey Api.SignKeySignature.{ key; master_sig } =
|
let verify_future_signkey Api.SignKeySignature.{ key; master_sig } =
|
||||||
let open Signatures.ExchangeSigningKeyValidity in
|
|
||||||
let* fsk = find_future_signkey key in
|
let* fsk = find_future_signkey key in
|
||||||
verify Config.master_public_key master_sig
|
let sk = sk_of_future_sk fsk master_sig in
|
||||||
{
|
Signkey.verify_exchange_signing_key_validity ~key:Config.master_public_key
|
||||||
R.start= fsk.stamp_start;
|
sk
|
||||||
expire= fsk.stamp_expire;
|
|
||||||
end_= fsk.stamp_end;
|
|
||||||
signkey_pub= key;
|
|
||||||
}
|
|
||||||
|
|
||||||
let verify_future_denomination Api.DenomSignature.{ h_denom_pub; master_sig }
|
let verify_future_denomination Api.DenomSignature.{ h_denom_pub; master_sig }
|
||||||
=
|
=
|
||||||
|
|
|
||||||
|
|
@ -8,5 +8,15 @@ type t = {
|
||||||
master_sig: Signatures.ExchangeSigningKeyValidity.t;
|
master_sig: Signatures.ExchangeSigningKeyValidity.t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let verify_exchange_signing_key_validity ~key sk =
|
||||||
|
let open Signatures.ExchangeSigningKeyValidity in
|
||||||
|
verify key sk.master_sig
|
||||||
|
{
|
||||||
|
R.start= sk.stamp_start;
|
||||||
|
expire= sk.stamp_expire;
|
||||||
|
end_= sk.stamp_end;
|
||||||
|
signkey_pub= sk.pub;
|
||||||
|
}
|
||||||
|
|
||||||
let is_valid_at ~timestamp sk =
|
let is_valid_at ~timestamp sk =
|
||||||
Timestamp.geq sk.stamp_start timestamp && Timestamp.lt timestamp sk.stamp_end
|
Timestamp.geq sk.stamp_start timestamp && Timestamp.lt timestamp sk.stamp_end
|
||||||
|
|
|
||||||
|
|
@ -35,29 +35,18 @@ let keys content =
|
||||||
})
|
})
|
||||||
in
|
in
|
||||||
|
|
||||||
|
let sk_l = List.map SignKey.to_signkey v.signkeys in
|
||||||
let* () =
|
let* () =
|
||||||
let open SignKey in
|
sk_l
|
||||||
v.signkeys
|
|
||||||
|> list_iter
|
|> list_iter
|
||||||
(fun { key; stamp_start; stamp_expire; stamp_end; master_sig } ->
|
(Signkey.verify_exchange_signing_key_validity ~key:v.exchange_pub)
|
||||||
let open Signatures.ExchangeSigningKeyValidity in
|
|
||||||
verify v.master_public_key master_sig
|
|
||||||
{
|
|
||||||
R.start= stamp_start;
|
|
||||||
expire= stamp_expire;
|
|
||||||
end_= stamp_end;
|
|
||||||
signkey_pub= key;
|
|
||||||
})
|
|
||||||
in
|
in
|
||||||
|
|
||||||
let* () =
|
let* () =
|
||||||
let opt =
|
let opt = List.find_opt (fun sk -> sk.Signkey.pub = v.exchange_pub) sk_l in
|
||||||
List.find_opt (fun sk -> sk.SignKey.key = v.exchange_pub) v.signkeys
|
|
||||||
in
|
|
||||||
match opt with
|
match opt with
|
||||||
| None -> Fmt.error "exchange_pub is not in signkeys list"
|
| None -> Fmt.error "exchange_pub is not in signkeys list"
|
||||||
| Some sk ->
|
| Some sk ->
|
||||||
let sk = SignKey.to_signkey sk in
|
|
||||||
(* TODO will need to fake time to validate expired data *)
|
(* TODO will need to fake time to validate expired data *)
|
||||||
let now = Timestamp.of_ptime (Ptime_clock.now ()) in
|
let now = Timestamp.of_ptime (Ptime_clock.now ()) in
|
||||||
if Signkey.is_valid_at ~timestamp:now sk then Ok ()
|
if Signkey.is_valid_at ~timestamp:now sk then Ok ()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue