From 8828017b10b4fc2119877eb02fd77b20ef63a4a2 Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 7 Dec 2025 05:23:54 +0100 Subject: [PATCH] --- src/denomination.ml | 117 +++++++++++++++++++++++++------------------- src/secmod_denom.ml | 2 +- 2 files changed, 68 insertions(+), 51 deletions(-) diff --git a/src/denomination.ml b/src/denomination.ml index 5a7c6202..1ce717f5 100644 --- a/src/denomination.ml +++ b/src/denomination.ml @@ -18,54 +18,71 @@ type t = { master_sig: Api_sig.DenominationKeyValidityPS.t option; } -let make - ({ - section_name; - value; - duration_withdraw; - duration_spend; - duration_legal; - fee_withdraw; - fee_deposit; - fee_refresh; - fee_refund; - cipher; - rsa_keysize; - age_restricted= _; - } : - Config.Coin.t) = - assert (cipher = `RSA); - - let stamp_start = Ptime_clock.now () |> Option.some in - let stamp_expire_withdraw = - Timestamp.add_span_exn stamp_start (Some duration_withdraw) - in - let stamp_expire_deposit = - Timestamp.add_span_exn stamp_start (Some duration_spend) - in - let stamp_expire_legal = - Timestamp.add_span_exn stamp_start (Some 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 h_pub = Bin_type.DenominationHash.hash (RsaPublicKey.to_octets pub) in - let master_sig = None in - { - pub; - priv; - section_name; - value; - stamp_start; - stamp_expire_withdraw; - stamp_expire_deposit; - stamp_expire_legal; - fee_withdraw; - fee_deposit; - fee_refresh; - fee_refund; - age_mask= 0; - h_pub; - master_sig; +module Unsigned = struct + type t = { + pub: RsaPublicKey.t; + priv: RsaPrivateKey.t; + section_name: string; + value: Amount.t; + stamp_start: Timestamp.t; + stamp_expire_withdraw: Timestamp.t; + stamp_expire_deposit: Timestamp.t; + stamp_expire_legal: Timestamp.t; + fee_withdraw: Amount.t; + fee_deposit: Amount.t; + fee_refresh: Amount.t; + fee_refund: Amount.t; + age_mask: int; + h_pub: Bin_type.DenominationHash.t; } + + let make + ({ + section_name; + value; + duration_withdraw; + duration_spend; + duration_legal; + fee_withdraw; + fee_deposit; + fee_refresh; + fee_refund; + cipher; + rsa_keysize; + age_restricted= _; + } : + Config.Coin.t) = + assert (cipher = `RSA); + + let stamp_start = Ptime_clock.now () |> Option.some in + let stamp_expire_withdraw = + Timestamp.add_span_exn stamp_start (Some duration_withdraw) + in + let stamp_expire_deposit = + Timestamp.add_span_exn stamp_start (Some duration_spend) + in + let stamp_expire_legal = + Timestamp.add_span_exn stamp_start (Some 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 h_pub = Bin_type.DenominationHash.hash (RsaPublicKey.to_octets pub) in + { + pub; + priv; + section_name; + value; + stamp_start; + stamp_expire_withdraw; + stamp_expire_deposit; + stamp_expire_legal; + fee_withdraw; + fee_deposit; + fee_refresh; + fee_refund; + age_mask= 0; + h_pub; + } +end diff --git a/src/secmod_denom.ml b/src/secmod_denom.ml index 3de76e66..ffa1824c 100644 --- a/src/secmod_denom.ml +++ b/src/secmod_denom.ml @@ -71,7 +71,7 @@ let load conn = let make_new () = let lock = Miou.Mutex.create () in let sm_key = Signkey.make () in - let denoms = List.map Denomination.make Config.Coin.all_coins in + let denoms = List.map Denomination.Unsigned.make Config.Coin.all_coins in let denom_ht = denoms |> List.map (fun v -> (v.Denomination.h_pub, v))