This commit is contained in:
swrup 2025-10-08 21:32:38 +02:00
parent f418353563
commit 6d2111d844
2 changed files with 39 additions and 22 deletions

View file

@ -1,6 +1,9 @@
(* https://docs.taler.net/core/api-common.html#binary-formats (* https://docs.taler.net/core/api-common.html#binary-formats
- numeric values are in network byte order (big endian) *) - numeric values are in network byte order (big endian) *)
(* TODO: ?
some struct have a 'P' suffix, but are not defined in doc
we assume they are = to the un-suffixed ones *)
open Include open Include
@ -138,7 +141,21 @@ module NormalizedPaytoHash = MK_32 ()
module AgeCommitmentHash = MK_64 () module AgeCommitmentHash = MK_64 ()
(* TODO Taler doc: missing *) (* TODO Taler doc: missing *)
module RefreshCommitmentP = MK_64 () module PublicRefreshCoinNonceP = MK_64 ()
(* TODO Taler doc: missing *)
module PursePublicKey = MK_32 ()
(* TODO Taler doc: missing *)
module AuditorPublicKeyP = MK_32 ()
(* TODO
// Secret for blinding/unblinding.
// An RSA blinding secret, which is basically
// a 256-bit nonce, converted to Crockford `Base32`.
type DenominationBlindingKeyP = string;
*)
module DenominationBlindingKeyP = MK_64 ()
(* Hash over: (* Hash over:
a) the hash of the denomination's public key, a) the hash of the denomination's public key,
@ -156,8 +173,8 @@ module MerchantPublicKeyP = MK_32 ()
module MerchantPrivateKeyP = MK_32 () module MerchantPrivateKeyP = MK_32 ()
(*module MerchantSignatureP = MK_64 () *) (*module MerchantSignatureP = MK_64 () *)
module TransfertPublicKeyP = MK_32 () module TransferPublicKeyP = MK_32 ()
module TransfertPrivateKeyP = MK_32 () module TransferPrivateKeyP = MK_32 ()
(* (*
enum TALER_AmlDecisionState { enum TALER_AmlDecisionState {
@ -173,7 +190,7 @@ module ExchangeSignatureP = MK_64 ()
module MasterPublicKeyP = MK_32 () module MasterPublicKeyP = MK_32 ()
module MasterPrivateKeyP = MK_32 () module MasterPrivateKeyP = MK_32 ()
module MasterSignatureP = MK_64 () module MasterSignatureP = MK_64 ()
module WireTransfertIdentifierRawP = MK_BASIC_32 () module WireTransferIdentifierRawP = MK_BASIC_32 ()
module UUID = struct module UUID = struct
(* uint32t value[4]; *) (* uint32t value[4]; *)
@ -225,7 +242,7 @@ struct TALER_EncryptedLinkSecretP {
uint8t enc[sizeof (struct TALER_LinkSecretP)]; uint8t enc[sizeof (struct TALER_LinkSecretP)];
}; };
*) *)
module TransfertSecretP = MK_64 () module TransferSecretP = MK_64 ()
module LinkSecretP = MK_64 () module LinkSecretP = MK_64 ()
module EncryptedLinkSecretP = MK_64 () module EncryptedLinkSecretP = MK_64 ()
@ -526,6 +543,8 @@ module DepositConfirmationPS = struct
} }
end end
module RefreshCommitmentP = MK_64 ()
module RefreshMeltCoinAffirmationPS = struct module RefreshMeltCoinAffirmationPS = struct
(* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_MELT *) (* purpose.purpose = TALER_SIGNATURE_WALLET_COIN_MELT *)
(* Hash over: (* Hash over:
@ -630,7 +649,7 @@ module MasterDrainProfitPS = struct
date: Time.AbsoluteNBO.t; date: Time.AbsoluteNBO.t;
amount: AmountNBO.t; amount: AmountNBO.t;
h_section: HashCode.t; h_section: HashCode.t;
h_payto: FullPaytoHashP.t; h_payto: FullPaytoHash.t;
} }
end end
@ -846,16 +865,12 @@ module ReserveCloseRequestSignaturePS = struct
type t = unit type t = unit
end end
module RefreshCommitmentP = struct
type t = { session_hash: HashCode.t }
end
module PurseRequestSignaturePS = struct module PurseRequestSignaturePS = struct
(* purpose.purpose = TALER_SIGNATURE_WALLET_PURSE_CREATE *) (* purpose.purpose = TALER_SIGNATURE_WALLET_PURSE_CREATE *)
type t = { type t = {
purse_expiration: Time.AbsoluteNBO.t; purse_expiration: Time.AbsoluteNBO.t;
merge_value_after_fees: AmountNBO.t; merge_value_after_fees: AmountNBO.t;
h_contract_terms: PrivateContractHashP.t; h_contract_terms: PrivateContractHash.t;
min_age: int; min_age: int;
} }
end end
@ -866,7 +881,7 @@ module PurseDepositSignaturePS = struct
coin_contribution: AmountNBO.t; coin_contribution: AmountNBO.t;
h_denom_pub: DenominationHash.t; h_denom_pub: DenominationHash.t;
h_age_commitment: AgeCommitmentHash.t; h_age_commitment: AgeCommitmentHash.t;
purse_pub: PursePublicKeyP.t; purse_pub: PursePublicKey.t;
h_exchange_base_url: HashCode.t; h_exchange_base_url: HashCode.t;
} }
end end
@ -884,9 +899,9 @@ module PurseDepositConfirmedSignaturePS = struct
type t = { type t = {
total_purse_amount: AmountNBO.t; total_purse_amount: AmountNBO.t;
total_deposit_fees: AmountNBO.t; total_deposit_fees: AmountNBO.t;
purse_pub: PursePublicKeyP.t; purse_pub: PursePublicKey.t;
purse_expiration: Time.AbsoluteNBO.t; purse_expiration: Time.AbsoluteNBO.t;
h_contract_terms: PrivateContractHashP.t; h_contract_terms: PrivateContractHash.t;
} }
end end
@ -894,7 +909,7 @@ module PurseMergeSignaturePS = struct
(* purpose.purpose = TALER_SIGNATURE_WALLET_PURSE_MERGE *) (* purpose.purpose = TALER_SIGNATURE_WALLET_PURSE_MERGE *)
type t = { type t = {
merge_timestamp: Time.AbsoluteNBO.t; merge_timestamp: Time.AbsoluteNBO.t;
h_wire: NormalizedPaytoHashP.t; h_wire: NormalizedPaytoHash.t;
} }
end end
@ -902,11 +917,11 @@ module AccountMergeSignaturePS = struct
(* purpose.purpose = TALER_SIGNATURE_WALLET_ACCOUNT_MERGE *) (* purpose.purpose = TALER_SIGNATURE_WALLET_ACCOUNT_MERGE *)
type t = { type t = {
reserve_pub: ReservePublicKeyP.t; reserve_pub: ReservePublicKeyP.t;
purse_pub: PursePublicKeyP.t; purse_pub: PursePublicKey.t;
merge_amount_after_fees: AmountNBO.t; merge_amount_after_fees: AmountNBO.t;
merge_timestamp: Time.AbsoluteNBO.t; merge_timestamp: Time.AbsoluteNBO.t;
purse_expiration: Time.AbsoluteNBO.t; purse_expiration: Time.AbsoluteNBO.t;
h_contract_terms: PrivateContractHashP.t; h_contract_terms: PrivateContractHash.t;
min_age: int; min_age: int;
} }
end end
@ -920,11 +935,11 @@ module PurseMergeSuccessSignaturePS = struct
(* purpose.purpose = TALER_SIGNATURE_PURSE_MERGE_SUCCESS *) (* purpose.purpose = TALER_SIGNATURE_PURSE_MERGE_SUCCESS *)
type t = { type t = {
reserve_pub: ReservePublicKeyP.t; reserve_pub: ReservePublicKeyP.t;
purse_pub: PursePublicKeyP.t; purse_pub: PursePublicKey.t;
merge_amount_after_fees: AmountNBO.t; merge_amount_after_fees: AmountNBO.t;
contract_time: Time.AbsoluteNBO.t; contract_time: Time.AbsoluteNBO.t;
h_contract_terms: PrivateContractHashP.t; h_contract_terms: PrivateContractHash.t;
h_wire: NormalizedPaytoHashP.t; h_wire: NormalizedPaytoHash.t;
min_age: int; min_age: int;
} }
end end
@ -1057,7 +1072,7 @@ module AmlDecisionPS = struct
h_justification: HashCode.t; h_justification: HashCode.t;
decision_time: Time.TimestampNBO.t; decision_time: Time.TimestampNBO.t;
new_threshold: AmountNBO.t; new_threshold: AmountNBO.t;
h_payto: NormalizedPaytoHashP.t; h_payto: NormalizedPaytoHash.t;
h_kyc_requirements: HashCode.t; h_kyc_requirements: HashCode.t;
new_state: int; new_state: int;
} }
@ -1089,7 +1104,7 @@ module ReserveClosePS = struct
(* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_CLOSE *) (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_CLOSE *)
type t = { type t = {
request_timestamp: Time.TimestampNBO.t; request_timestamp: Time.TimestampNBO.t;
target_account_h_payto: FullPaytoHashP.t; target_account_h_payto: FullPaytoHash.t;
} }
end end

View file

@ -116,6 +116,8 @@ module Eddsa = struct
(* EdDSA and ECDHE public keys always point on Curve25519 (* EdDSA and ECDHE public keys always point on Curve25519
and represented using the standard 256 bits Ed25519 compact format, and represented using the standard 256 bits Ed25519 compact format,
converted to Crockford Base32. *) converted to Crockford Base32. *)
(* EdDSA signatures are transmitted as 64-bytes `base32`
binary-encoded objects with just the R and S values (base32_ binary-only). *)
type pub = Mirage_crypto_ec.Ed25519.pub type pub = Mirage_crypto_ec.Ed25519.pub
let pub_of_string s = let pub_of_string s =