This commit is contained in:
parent
bcb9015c34
commit
8b184a73e0
1 changed files with 38 additions and 36 deletions
|
|
@ -159,6 +159,43 @@ let verify_master_signatures ~sm_signkey ~sm_denom
|
||||||
|
|
||||||
(* --- *)
|
(* --- *)
|
||||||
|
|
||||||
|
(* TODO move to test *)
|
||||||
|
let check_master_signatures_update ~db_conn ~sm_denom =
|
||||||
|
let open Syntax in
|
||||||
|
Secmod_denom.get_denoms sm_denom
|
||||||
|
|> list_iter (fun denom ->
|
||||||
|
let error = Error "update_master_signatures sanity check failure" in
|
||||||
|
let* opt =
|
||||||
|
Pg.lookup_denomination_key db_conn denom.Denomination.h_pub
|
||||||
|
|> unwrap_err_caqti
|
||||||
|
in
|
||||||
|
let* ( valid_from,
|
||||||
|
_expire_withdraw,
|
||||||
|
_expire_deposit,
|
||||||
|
_expire_legal,
|
||||||
|
coin,
|
||||||
|
_fee_withdraw,
|
||||||
|
_fee_deposit,
|
||||||
|
_fee_refresh,
|
||||||
|
fee_refund,
|
||||||
|
age_mask ) =
|
||||||
|
match opt with None -> error | Some v -> Ok v
|
||||||
|
in
|
||||||
|
let check = function false -> error | true -> Ok () in
|
||||||
|
(* TODO time *)
|
||||||
|
let timestamp_equal a b =
|
||||||
|
let timestamp_to_int64 = function
|
||||||
|
| None -> None
|
||||||
|
| Some v -> v |> Ptime.to_float_s |> Int64.of_float |> Option.some
|
||||||
|
in
|
||||||
|
timestamp_to_int64 a = timestamp_to_int64 b
|
||||||
|
in
|
||||||
|
let* () = check (timestamp_equal valid_from denom.stamp_start) in
|
||||||
|
let* () = check (coin = denom.value) in
|
||||||
|
let* () = check (fee_refund = denom.fee_refund) in
|
||||||
|
let* () = check (age_mask = denom.age_mask) in
|
||||||
|
Ok ())
|
||||||
|
|
||||||
let update_master_signatures ~db_conn ~sm_signkey ~sm_denom
|
let update_master_signatures ~db_conn ~sm_signkey ~sm_denom
|
||||||
MasterSignatures.{ denom_sigs; signkey_sigs } =
|
MasterSignatures.{ denom_sigs; signkey_sigs } =
|
||||||
let open Syntax in
|
let open Syntax in
|
||||||
|
|
@ -174,40 +211,5 @@ let update_master_signatures ~db_conn ~sm_signkey ~sm_denom
|
||||||
(h_denom_pub, master_sig))
|
(h_denom_pub, master_sig))
|
||||||
|> Secmod_denom.add_master_signatures db_conn sm_denom
|
|> Secmod_denom.add_master_signatures db_conn sm_denom
|
||||||
in
|
in
|
||||||
let* () =
|
let* () = check_master_signatures_update ~db_conn ~sm_denom in
|
||||||
(* TODO move to test *)
|
|
||||||
Secmod_denom.get_denoms sm_denom
|
|
||||||
|> list_iter (fun denom ->
|
|
||||||
let error = Error "update_master_signatures sanity check failure" in
|
|
||||||
let* opt =
|
|
||||||
Pg.lookup_denomination_key db_conn denom.Denomination.h_pub
|
|
||||||
|> unwrap_err_caqti
|
|
||||||
in
|
|
||||||
let* ( valid_from,
|
|
||||||
_expire_withdraw,
|
|
||||||
_expire_deposit,
|
|
||||||
_expire_legal,
|
|
||||||
coin,
|
|
||||||
_fee_withdraw,
|
|
||||||
_fee_deposit,
|
|
||||||
_fee_refresh,
|
|
||||||
fee_refund,
|
|
||||||
age_mask ) =
|
|
||||||
match opt with None -> error | Some v -> Ok v
|
|
||||||
in
|
|
||||||
let check = function false -> error | true -> Ok () in
|
|
||||||
(* TODO time *)
|
|
||||||
let timestamp_equal a b =
|
|
||||||
let timestamp_to_int64 = function
|
|
||||||
| None -> None
|
|
||||||
| Some v -> v |> Ptime.to_float_s |> Int64.of_float |> Option.some
|
|
||||||
in
|
|
||||||
timestamp_to_int64 a = timestamp_to_int64 b
|
|
||||||
in
|
|
||||||
let* () = check (timestamp_equal valid_from denom.stamp_start) in
|
|
||||||
let* () = check (coin = denom.value) in
|
|
||||||
let* () = check (fee_refund = denom.fee_refund) in
|
|
||||||
let* () = check (age_mask = denom.age_mask) in
|
|
||||||
Ok ())
|
|
||||||
in
|
|
||||||
Ok ()
|
Ok ()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue