2025-10-17 15:09:47 +02:00
|
|
|
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;
|
2025-10-16 08:23:40 +02:00
|
|
|
pub: Types.RsaPublicKey.t;
|
2025-10-16 10:18:22 +02:00
|
|
|
sign:
|
|
|
|
|
(* TODO sig type
|
|
|
|
|
should be
|
|
|
|
|
string -> RsaSignature.t
|
|
|
|
|
+ b32 *)
|
|
|
|
|
string ->
|
|
|
|
|
string;
|
2025-10-16 08:23:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let hash_pub _pub = "todo public key converted to Crockford Base32"
|
|
|
|
|
|
2025-10-17 15:09:47 +02:00
|
|
|
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
|
|
|
|
|
|
2025-10-16 08:23:40 +02:00
|
|
|
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
|
2025-10-17 15:09:47 +02:00
|
|
|
{
|
|
|
|
|
section_name;
|
|
|
|
|
value;
|
|
|
|
|
stamp_start;
|
|
|
|
|
stamp_expire_withdraw;
|
|
|
|
|
stamp_expire_deposit;
|
|
|
|
|
stamp_expire_legal;
|
|
|
|
|
fee_withdraw;
|
|
|
|
|
fee_deposit;
|
|
|
|
|
fee_refresh;
|
|
|
|
|
fee_refund;
|
|
|
|
|
pub;
|
|
|
|
|
sign;
|
|
|
|
|
}
|
2025-10-16 08:23:40 +02:00
|
|
|
|
|
|
|
|
let denom_device =
|
|
|
|
|
let finally _key = () in
|
|
|
|
|
Vif.Device.v ~name:"rsa_denom" ~finally [] @@ fun () ->
|
2025-10-17 15:09:47 +02:00
|
|
|
let rsa_l = List.map make_rsa_denom Config.coins in
|
2025-10-16 08:23:40 +02:00
|
|
|
rsa_l
|