mte/src/denomination.ml

73 lines
1.6 KiB
OCaml
Raw Normal View History

2025-10-17 16:50:21 +02:00
open Types
2025-10-18 18:09:04 +02:00
type t = {
2025-10-19 01:10:52 +02:00
pub: RsaPublicKey.t;
2025-10-17 15:09:47 +02:00
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-19 01:10:52 +02:00
h_pub: Binary_formats.DenominationHash.t;
2025-10-17 16:50:21 +02:00
sign: string -> RsaSignature.t;
2025-10-19 01:10:52 +02:00
master_sig: EddsaSignature.t option;
2025-10-16 08:23:40 +02:00
}
2025-10-18 18:09:04 +02:00
let hash_pub _pub =
(* todo public key converted to Crockford Base32 *)
assert false
2025-10-16 08:23:40 +02:00
2025-10-18 18:09:04 +02:00
let make
2025-10-17 15:09:47 +02:00
({
section_name;
value;
duration_withdraw;
duration_spend;
duration_legal;
fee_withdraw;
fee_deposit;
fee_refresh;
fee_refund;
cipher;
rsa_keysize;
age_restricted= _;
} :
2025-11-20 18:38:01 +01:00
Config.Coin.t) =
2025-10-17 15:09:47 +02:00
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
2025-10-19 01:10:52 +02:00
let h_pub = Binary_formats.DenominationHash.hash pub in
2025-10-17 16:50:21 +02:00
let sign = RsaSignature.sign ~key:priv in
2025-10-19 01:10:52 +02:00
let master_sig = None in
2025-10-17 15:09:47 +02:00
{
2025-10-19 01:10:52 +02:00
pub;
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;
2025-10-19 01:10:52 +02:00
h_pub;
2025-10-17 15:09:47 +02:00
sign;
2025-10-19 01:10:52 +02:00
master_sig;
2025-10-17 15:09:47 +02:00
}