add timestamps; use Ptime

This commit is contained in:
swrup 2025-10-17 15:09:47 +02:00
parent 112ece6d9a
commit a27af0ecf1
8 changed files with 163 additions and 77 deletions

View file

@ -1,5 +1,14 @@
type rsa = {
coin: Types.Config_types.Coin.t;
type rsa_denom = {
section_name: string;
value: Amount.t;
stamp_start: Ptime.t;
stamp_expire_withdraw: Ptime.t;
stamp_expire_deposit: Ptime.t;
stamp_expire_legal: Ptime.t;
fee_withdraw: Amount.t;
fee_deposit: Amount.t;
fee_refresh: Amount.t;
fee_refund: Amount.t;
pub: Types.RsaPublicKey.t;
sign:
(* TODO sig type
@ -12,18 +21,54 @@ type rsa = {
let hash_pub _pub = "todo public key converted to Crockford Base32"
let make_rsa (coin : Types.Config_types.Coin.t) =
assert (coin.cipher = `RSA);
assert (Option.is_some coin.rsa_keysize);
let rsa_keysize = coin.rsa_keysize |> Option.get in
let make_rsa_denom
({
section_name;
value;
duration_withdraw;
duration_spend;
duration_legal;
fee_withdraw;
fee_deposit;
fee_refresh;
fee_refund;
cipher;
rsa_keysize;
age_restricted= _;
} :
Types.Config_types.Coin.t) =
assert (cipher = `RSA);
let stamp_start = Ptime_clock.now () in
let stamp_expire_withdraw =
Util.ptime_add_span_exn stamp_start duration_withdraw
in
let stamp_expire_deposit =
Util.ptime_add_span_exn stamp_start duration_spend
in
let stamp_expire_legal = Util.ptime_add_span_exn stamp_start duration_legal in
let open Mirage_crypto_pk.Rsa in
let priv = generate ~bits:rsa_keysize () in
let pub = pub_of_priv priv in
let sign = decrypt ~crt_hardening:true ~mask:`Yes ~key:priv in
{ coin; pub; sign }
{
section_name;
value;
stamp_start;
stamp_expire_withdraw;
stamp_expire_deposit;
stamp_expire_legal;
fee_withdraw;
fee_deposit;
fee_refresh;
fee_refund;
pub;
sign;
}
let denom_device =
let finally _key = () in
Vif.Device.v ~name:"rsa_denom" ~finally [] @@ fun () ->
let rsa_l = List.map make_rsa Config.coins in
let rsa_l = List.map make_rsa_denom Config.coins in
rsa_l