diff --git a/test/validate_response.ml b/test/validate_response.ml index 75777211..e9ee6bd6 100644 --- a/test/validate_response.ml +++ b/test/validate_response.ml @@ -1,5 +1,4 @@ open Syntax -(*open Crypto*) let keys content = let open Api in @@ -74,8 +73,65 @@ let keys content = } in - (* validate denominations *) + let last_issue_date = ref Timestamp.zero in + let* () = + (* TODO parse CS *) + v.denominations + |> list_iter + (fun + (DenomGroup.Rsa + RsaDenomGroup. + { + denoms; + value; + fee_withdraw; + fee_deposit; + fee_refresh; + fee_refund; + }) + -> + let open RsaDenom in + denoms + |> list_iter + (fun + { + rsa_pub; + master_sig; + stamp_start; + stamp_expire_withdraw; + stamp_expire_deposit; + stamp_expire_legal; + lost= _; + } + -> + last_issue_date := Timestamp.max !last_issue_date stamp_start; + let denom_hash = + DenominationHash.hash + (Crypto.RsaPublicKey.to_octets rsa_pub) + in + let open Signatures.DenominationKeyValidity in + verify v.master_public_key master_sig + { + R.master= v.master_public_key; + start= stamp_start; + expire_withdraw= stamp_expire_withdraw; + expire_spend= stamp_expire_deposit; + expire_legal= stamp_expire_legal; + value; + fee_withdraw; + fee_deposit; + fee_refresh; + fee_refund; + denom_hash; + })) + in + let* () = + if !last_issue_date = v.list_issue_date then Ok () + else Fmt.error "list_issue_date is wrong" + in + (* validate global-fees *) + (* validate list_issue_date *) (* validate auditors *) Ok ()