From 6e79149b43aff978e8e7bd5247a5ea13e9c3041b Mon Sep 17 00:00:00 2001 From: swrup Date: Wed, 8 Oct 2025 21:52:39 +0200 Subject: [PATCH] + `let purpose_code = ..` --- src/binary_formats.ml | 189 ++++++++++++++++++++++++++++-------------- 1 file changed, 127 insertions(+), 62 deletions(-) diff --git a/src/binary_formats.ml b/src/binary_formats.ml index ecdc6c32..99415ac6 100644 --- a/src/binary_formats.ml +++ b/src/binary_formats.ml @@ -422,7 +422,8 @@ module WithdrawConfirmationPS = struct end module SingleWithdrawRequestPS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_WITHDRAW *) + let purpose_code = Taler_signatures.wallet_reserve_withdraw + type t = { amount_with_fee: AmountNBO.t; h_denomination_pub: DenominationHash.t; @@ -431,7 +432,8 @@ module SingleWithdrawRequestPS = struct end module DepositRequestPS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_DEPOSIT *) + let purpose_code = Taler_signatures.wallet_coin_deposit + type t = { h_contract_terms: PrivateContractHash.t; h_age_commitment: AgeCommitmentHash.t; @@ -448,7 +450,8 @@ module DepositRequestPS = struct end module DepositConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_DEPOSIT *) + let purpose_code = Taler_signatures.exchange_confirm_deposit + type t = { h_contract_terms: PrivateContractHash.t; h_wire: MerchantWireHash.t; @@ -464,7 +467,8 @@ end module RefreshCommitmentP = MK_64 () module RefreshMeltCoinAffirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_MELT *) + let purpose_code = Taler_signatures.wallet_coin_melt + type t = { session_hash: RefreshCommitmentP.t; h_denom_pub: DenominationHash.t; @@ -475,7 +479,8 @@ module RefreshMeltCoinAffirmationPS = struct end module RefreshMeltConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_MELT *) + let purpose_code = Taler_signatures.exchange_confirm_melt + type t = { session_hash: RefreshCommitmentP.t; noreveal_index: int; (* uint16_t mapped to OCaml int *) @@ -483,7 +488,8 @@ module RefreshMeltConfirmationPS = struct end module ExchangeSigningKeyValidityPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_SIGNING_KEY_VALIDITY *) + let purpose_code = Taler_signatures.master_signing_key_validity + type t = { start: TimeAbsoluteNBO.t; expire: TimeAbsoluteNBO.t; @@ -493,7 +499,8 @@ module ExchangeSigningKeyValidityPS = struct end module ExchangeKeySetPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_KEY_SET *) + let purpose_code = Taler_signatures.exchange_key_set + type t = { list_issue_date: TimeAbsoluteNBO.t; hc: HashCode.t; @@ -501,7 +508,8 @@ module ExchangeKeySetPS = struct end module DenominationKeyValidityPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_DENOMINATION_KEY_VALIDITY *) + let purpose_code = Taler_signatures.master_denomination_key_validity + type t = { master: MasterPublicKeyP.t; start: TimeAbsoluteNBO.t; @@ -517,7 +525,8 @@ module DenominationKeyValidityPS = struct end module MasterWireDetailsPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_WIRE_DETAILS *) + let purpose_code = Taler_signatures.master_wire_details + type t = { h_wire_details: FullPaytoHash.t; h_conversion_url: HashCode.t; @@ -527,7 +536,8 @@ module MasterWireDetailsPS = struct end module MasterWireFeePS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_WIRE_FEES *) + let purpose_code = Taler_signatures.master_wire_fees + type t = { h_wire_method: HashCode.t; start_date: TimeAbsoluteNBO.t; @@ -538,7 +548,8 @@ module MasterWireFeePS = struct end module GlobalFeesPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_GLOBAL_FEES *) + let purpose_code = Taler_signatures.master_global_fees + type t = { start_date: TimeAbsoluteNBO.t; end_date: TimeAbsoluteNBO.t; @@ -554,7 +565,8 @@ module GlobalFeesPS = struct end module MasterDrainProfitPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_DRAIN_PROFITS *) + let purpose_code = Taler_signatures.master_drain_profit + type t = { wtid: WireTransferIdentifierRawP.t; date: TimeAbsoluteNBO.t; @@ -565,7 +577,8 @@ module MasterDrainProfitPS = struct end module DepositTrackPS = struct - (* purpose.purpose = TALER_SIGNATURE_MERCHANT_TRACK_TRANSACTION *) + let purpose_code = Taler_signatures.merchant_track_transaction + type t = { h_contract_terms: PrivateContractHash.t; h_wire: MerchantWireHash.t; @@ -584,7 +597,8 @@ module WireDepositDetailP = struct end module WireDepositDataPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE_DEPOSIT *) + let purpose_code = Taler_signatures.exchange_confirm_wire_deposit + type t = { total: AmountNBO.t; wire_fee: AmountNBO.t; @@ -595,7 +609,8 @@ module WireDepositDataPS = struct end module ExchangeKeyValidityPS = struct - (* purpose.purpose = TALER_SIGNATURE_AUDITOR_EXCHANGE_KEYS *) + let purpose_code = Taler_signatures.auditor_exchange_keys + type t = { auditor_url_hash: HashCode.t; master: MasterPublicKeyP.t; @@ -612,17 +627,20 @@ module ExchangeKeyValidityPS = struct end module PaymentResponsePS = struct - (* purpose.purpose = TALER_SIGNATURE_MERCHANT_PAYMENT_OK *) + let purpose_code = Taler_signatures.merchant_payment_ok + type t = { h_contract_terms: PrivateContractHash.t } end module ContractPS = struct - (* purpose.purpose = TALER_SIGNATURE_MERCHANT_CONTRACT *) + let purpose_code = Taler_signatures.merchant_contract + type t = { h_contract_terms: PrivateContractHash.t } end module ConfirmWirePS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_WIRE *) + let purpose_code = Taler_signatures.exchange_confirm_wire + type t = { h_wire: MerchantWireHash.t; h_contract_terms: PrivateContractHash.t; @@ -634,7 +652,8 @@ module ConfirmWirePS = struct end module RefundConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_REFUND *) + let purpose_code = Taler_signatures.exchange_confirm_refund + type t = { h_contract_terms: PrivateContractHash.t; coin_pub: CoinSpendPublicKeyP.t; @@ -645,7 +664,8 @@ module RefundConfirmationPS = struct end module DepositTrackPS2 = struct - (* purpose.purpose = TALER_SIGNATURE_MERCHANT_TRACK_TRANSACTION *) + let purpose_code = Taler_signatures.merchant_track_transaction + type t = { h_contract_terms: PrivateContractHash.t; h_wire: MerchantWireHash.t; @@ -655,7 +675,8 @@ module DepositTrackPS2 = struct end module RefundRequestPS = struct - (* purpose.purpose = TALER_SIGNATURE_MERCHANT_REFUND *) + let purpose_code = Taler_signatures.merchant_refund + type t = { h_contract_terms: PrivateContractHash.t; coin_pub: CoinSpendPublicKeyP.t; @@ -666,13 +687,17 @@ module RefundRequestPS = struct end module MerchantRefundConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_MERCHANT_REFUND_OK *) + let purpose_code = Taler_signatures.merchant_refund + (* Hash of the order ID (a string), hashed without the 0-termination. *) type t = { h_order_id: HashCode.t } end module RecoupRequestPS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_RECOUP or TALER_SIGNATURE_WALLET_COIN_RECOUP_REFRESH *) + (* two purpose_code possible here *) + let purpose_code_1 = Taler_signatures.wallet_coin_recoup + let purpose_code_2 = Taler_signatures.wallet_coin_recoup_refresh + type t = { h_denom_pub: DenominationHash.t; coin_blind: DenominationBlindingKeyP.t; @@ -680,7 +705,8 @@ module RecoupRequestPS = struct end module RecoupRefreshConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_RECOUP_REFRESH *) + let purpose_code = Taler_signatures.exchange_confirm_recoup_refresh + type t = { timestamp: TimeAbsoluteNBO.t; recoup_amount: AmountNBO.t; @@ -690,7 +716,8 @@ module RecoupRefreshConfirmationPS = struct end module RecoupConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_RECOUP *) + let purpose_code = Taler_signatures.exchange_confirm_recoup + type t = { timestamp: TimeAbsoluteNBO.t; recoup_amount: AmountNBO.t; @@ -700,7 +727,8 @@ module RecoupConfirmationPS = struct end module DenominationUnknownAffirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_AFFIRM_DENOM_UNKNOWN *) + let purpose_code = Taler_signatures.exchange_affirm_denom_unknown + type t = { timestamp: TimeAbsoluteNBO.t; h_denom_pub: DenominationHash.t; @@ -708,7 +736,8 @@ module DenominationUnknownAffirmationPS = struct end module DenominationExpiredAffirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_GENERIC_DENOMINATIN_EXPIRED *) + let purpose_code = Taler_signatures.exchange_affirm_denom_expired + type t = { timestamp: TimeAbsoluteNBO.t; operation: string; (* char[8] → string *) @@ -717,7 +746,8 @@ module DenominationExpiredAffirmationPS = struct end module ReserveCloseConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_RESERVE_CLOSED *) + let purpose_code = Taler_signatures.exchange_reserve_closed + type t = { timestamp: TimeAbsoluteNBO.t; closing_amount: AmountNBO.t; @@ -727,7 +757,8 @@ module ReserveCloseConfirmationPS = struct end module CoinLinkSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_LINK *) + let purpose_code = Taler_signatures.wallet_coin_link + type t = { h_denom_pub: DenominationHash.t; old_coin_pub: CoinSpendPublicKeyP.t; @@ -737,17 +768,20 @@ module CoinLinkSignaturePS = struct end module RefreshNonceSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_LINK *) + let purpose_code = Taler_signatures.wallet_coin_link + type t = { nonce: PublicRefreshCoinNonceP.t } end module ReserveStatusRequestSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_RESERVE_STATUS_REQUEST *) + let purpose_code = Taler_signatures.exchange_reserve_status + type t = { request_timestamp: TimeAbsoluteNBO.t } end module ReserveHistoryRequestSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_RESERVE_HISTORY_REQUEST *) + let purpose_code = Taler_signatures.wallet_reserve_history + type t = { history_fee: AmountNBO.t; request_timestamp: TimeAbsoluteNBO.t; @@ -755,12 +789,15 @@ module ReserveHistoryRequestSignaturePS = struct end module PurseStatusRequestSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_PURSE_STATUS_REQUEST *) + let purpose_code = Taler_signatures.wallet_purse_status + type t = unit end module PurseStatusResponseSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_PURSE_STATUS_RESPONSE *) + (* or? wallet_purse_status *) + let purpose_code = Taler_signatures.exchange_purse_status + type t = { total_purse_amount: AmountNBO.t; total_deposit_amount: AmountNBO.t; @@ -772,12 +809,14 @@ module PurseStatusResponseSignaturePS = struct end module ReserveCloseRequestSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_CLOSE *) + let purpose_code = Taler_signatures.wallet_reserve_close + type t = unit end module PurseRequestSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_PURSE_CREATE *) + let purpose_code = Taler_signatures.wallet_purse_create + type t = { purse_expiration: TimeAbsoluteNBO.t; merge_value_after_fees: AmountNBO.t; @@ -787,7 +826,8 @@ module PurseRequestSignaturePS = struct end module PurseDepositSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_PURSE_DEPOSIT *) + let purpose_code = Taler_signatures.wallet_purse_deposit + type t = { coin_contribution: AmountNBO.t; h_denom_pub: DenominationHash.t; @@ -798,7 +838,8 @@ module PurseDepositSignaturePS = struct end module PurseDepositSignaturePS2 = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_OPEN_DEPOSIT *) + let purpose_code = Taler_signatures.wallet_reserve_open_deposit + type t = { reserve_sig: ReserveSignatureP.t; coin_contribution: AmountNBO.t; @@ -806,7 +847,8 @@ module PurseDepositSignaturePS2 = struct end module PurseDepositConfirmedSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_PURSE_DEPOSIT_CONFIRMED *) + let purpose_code = Taler_signatures.exchange_confirm_deposit + type t = { total_purse_amount: AmountNBO.t; total_deposit_fees: AmountNBO.t; @@ -817,7 +859,8 @@ module PurseDepositConfirmedSignaturePS = struct end module PurseMergeSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_PURSE_MERGE *) + let purpose_code = Taler_signatures.wallet_purse_merge + type t = { merge_timestamp: TimeAbsoluteNBO.t; h_wire: NormalizedPaytoHash.t; @@ -825,7 +868,8 @@ module PurseMergeSignaturePS = struct end module AccountMergeSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_ACCOUNT_MERGE *) + let purpose_code = Taler_signatures.wallet_account_merge + type t = { reserve_pub: ReservePublicKeyP.t; purse_pub: PursePublicKey.t; @@ -838,12 +882,14 @@ module AccountMergeSignaturePS = struct end module AccountSetupRequestSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_ACCOUNT_SETUP *) + let purpose_code = Taler_signatures.wallet_account_setup + type t = { threshold: AmountNBO.t } end module PurseMergeSuccessSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_PURSE_MERGE_SUCCESS *) + let purpose_code = Taler_signatures.exchange_confirm_purse_merged + type t = { reserve_pub: ReservePublicKeyP.t; purse_pub: PursePublicKey.t; @@ -856,7 +902,8 @@ module PurseMergeSuccessSignaturePS = struct end module WadDataSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_WAD_DATA *) + let purpose_code = Taler_signatures.wad_data + type t = { wad_execution_time: TimeAbsoluteNBO.t; total_amount: AmountNBO.t; @@ -866,7 +913,8 @@ module WadDataSignaturePS = struct end module WadPartnerSignaturePS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_PARTNER_DETAILS *) + let purpose_code = Taler_signatures.master_partner_details + type t = { h_partner_base_url: HashCode.t; master_public_key: MasterPublicKeyP.t; @@ -878,7 +926,8 @@ module WadPartnerSignaturePS = struct end module P2PFeesPS = struct - (* purpose.purpose = TALER_SIGNATURE_P2P_FEES *) + let purpose_code = Taler_signatures.p2p_fees + type t = { start_date: TimeAbsoluteNBO.t; end_date: TimeAbsoluteNBO.t; @@ -893,7 +942,8 @@ module P2PFeesPS = struct end module CoinPurseRefundConfirmationPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_CONFIRM_PURSE_REFUND *) + let purpose_code = Taler_signatures.exchange_confirm_purse_refund + type t = { purse_pub: PursePublicKey.t; coin_pub: CoinSpendPublicKeyP.t; @@ -903,7 +953,8 @@ module CoinPurseRefundConfirmationPS = struct end module DenominationKeyAnnouncementPS = struct - (* purpose.purpose = TALER_SIGNATURE_SM_DENOMINATION_KEY *) + let purpose_code = Taler_signatures.sm_denomination_key + type t = { h_denom_pub: DenominationHash.t; h_section_name: HashCode.t; @@ -913,7 +964,8 @@ module DenominationKeyAnnouncementPS = struct end module SigningKeyAnnouncementPS = struct - (* purpose.purpose = TALER_SIGNATURE_SM_SIGNING_KEY *) + let purpose_code = Taler_signatures.sm_signing_key + type t = { exchange_pub: ExchangePublicKeyP.t; anchor_time: TimeAbsoluteNBO.t; @@ -922,17 +974,20 @@ module SigningKeyAnnouncementPS = struct end module MasterDenominationKeyRevocationPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_DENOMINATION_KEY_REVOKED *) + let purpose_code = Taler_signatures.master_denomination_key_revoked + type t = { h_denom_pub: DenominationHash.t } end module MasterSigningKeyRevocationPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_SIGNING_KEY_REVOKED *) + let purpose_code = Taler_signatures.master_signing_key_revoked + type t = { exchange_pub: ExchangePublicKeyP.t } end module MasterAddAuditorPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_ADD_AUDITOR *) + let purpose_code = Taler_signatures.master_add_auditor + type t = { start_date: TimeAbsoluteNBO.t; auditor_pub: AuditorPublicKeyP.t; @@ -941,7 +996,8 @@ module MasterAddAuditorPS = struct end module MasterDelAuditorPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_DEL_AUDITOR *) + let purpose_code = Taler_signatures.master_del_auditor + type t = { end_date: TimeAbsoluteNBO.t; auditor_pub: AuditorPublicKeyP.t; @@ -949,7 +1005,8 @@ module MasterDelAuditorPS = struct end module MasterAddWirePS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_ADD_WIRE *) + let purpose_code = Taler_signatures.master_add_wire + type t = { start_date: TimeAbsoluteNBO.t; h_wire: FullPaytoHash.t; @@ -960,7 +1017,8 @@ module MasterAddWirePS = struct end module MasterDelWirePS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_DEL_WIRE *) + let purpose_code = Taler_signatures.master_del_wire + type t = { end_date: TimeAbsoluteNBO.t; h_wire: FullPaytoHash.t; @@ -968,7 +1026,8 @@ module MasterDelWirePS = struct end module MasterAmlOfficerStatusPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_AML_KEY *) + let purpose_code = Taler_signatures.master_aml_key + type t = { change_date: TimeTimestampNBO.t; officer_pub: AmlOfficerPublicKeyP.t; @@ -978,7 +1037,8 @@ module MasterAmlOfficerStatusPS = struct end module AmlDecisionPS = struct - (* purpose.purpose = TALER_SIGNATURE_AML_DECISION *) + let purpose_code = Taler_signatures.aml_decision + type t = { h_justification: HashCode.t; decision_time: TimeTimestampNBO.t; @@ -990,7 +1050,8 @@ module AmlDecisionPS = struct end module PartnerConfigurationPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_PARNTER_DETAILS *) + let purpose_code = Taler_signatures.master_parnter_details + type t = { partner_pub: MasterPublicKeyP.t; start_date: TimeTimestampNBO.t; @@ -1002,7 +1063,8 @@ module PartnerConfigurationPS = struct end module ReserveOpenPS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_OPEN *) + let purpose_code = Taler_signatures.wallet_reserve_open + type t = { reserve_payment: AmountNBO.t; request_timestamp: TimeTimestampNBO.t; @@ -1012,7 +1074,8 @@ module ReserveOpenPS = struct end module ReserveClosePS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_CLOSE *) + let purpose_code = Taler_signatures.wallet_reserve_close + type t = { request_timestamp: TimeTimestampNBO.t; target_account_h_payto: FullPaytoHash.t; @@ -1020,7 +1083,8 @@ module ReserveClosePS = struct end module ReserveAttestRequestPS = struct - (* purpose.purpose = TALER_SIGNATURE_WALLET_ATTEST_REQUEST *) + let purpose_code = Taler_signatures.wallet_attest_request + type t = { request_timestamp: TimeTimestampNBO.t; h_details: HashCode.t; @@ -1028,7 +1092,8 @@ module ReserveAttestRequestPS = struct end module ExchangeAttestPS = struct - (* purpose.purpose = TALER_SIGNATURE_EXCHANGE_RESERVE_ATTEST_DETAILS *) + let purpose_code = Taler_signatures.exchange_reserve_attest_details + type t = { attest_timestamp: TimeTimestampNBO.t; expiration_time: TimeTimestampNBO.t;