From 1e10decac5fed8eecbb7e89038a33797b6635dae Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sat, 23 Sep 2023 19:26:54 +0200 Subject: remove obsolete ungrouped denom stuff, fix XOR mess --- core/api-exchange.rst | 83 ++++++++------------------------------------------- 1 file changed, 12 insertions(+), 71 deletions(-) diff --git a/core/api-exchange.rst b/core/api-exchange.rst index 89dcdbe6..f241181b 100644 --- a/core/api-exchange.rst +++ b/core/api-exchange.rst @@ -176,18 +176,20 @@ possibly by using HTTPS. // Currency must match ``currency``. wallet_balance_limit_without_kyc?: Amount[]; - // Denominations offered by this exchange. - // DEPRECATED: Will eventually be replaced by the - // differently structured "denominations" field. - denoms: Denom[]; - // Denominations offered by this exchange denominations: DenomGroup[]; - // Compact EdDSA `signature` (binary-only) over the XOR of all - // .hash fields (in binary) in the list "denominations". - // Signature of `TALER_ExchangeKeySetPS` - denominations_sig: EddsaSignature; + // Compact EdDSA `signature` (binary-only) over the + // contatentation of all of the master_sigs (in reverse + // chronological order by group) in the arrays under + // "denominations". Signature of `TALER_ExchangeKeySetPS` + exchange_sig: EddsaSignature; + + // Public EdDSA key of the exchange that was used to generate the signature. + // Should match one of the exchange's signing keys from ``signkeys``. It is given + // explicitly as the client might otherwise be confused by clock skew as to + // which signing key was used for the ``exchange_sig``. + exchange_pub: EddsaPublicKey; // Denominations for which the exchange currently offers/requests recoup. recoup: Recoup[]; @@ -213,25 +215,6 @@ possibly by using HTTPS. // The signature has purpose TALER_SIGNATURE_MASTER_EXTENSIONS. extensions_sig?: EddsaSignature; - // Compact EdDSA `signature` (binary-only) over the SHA-512 hash of the - // concatenation of all SHA-512 hashes of the RSA denomination public keys - // in ``denoms`` in the same order as they were in ``denoms``. Note that for - // hashing, the binary format of the RSA public keys is used, and not their - // `base32 encoding `. Wallets cannot do much with this signature by itself; - // it is only useful when multiple clients need to establish that the exchange - // is sabotaging end-user anonymity by giving disjoint denomination keys to - // different users. If an exchange were to do this, this signature allows the - // clients to demonstrate to the public that the exchange is dishonest. - // Signature of `TALER_ExchangeKeySetPS` - // DEPRICATED: Will eventually replaced by "denominations_sig" - eddsa_sig: EddsaSignature; - - // Public EdDSA key of the exchange that was used to generate the signature. - // Should match one of the exchange's signing keys from ``/keys``. It is given - // explicitly as the client might otherwise be confused by clock skew as to - // which signing key was used. - eddsa_pub: EddsaPublicKey; - } .. ts:def:: GlobalFees @@ -281,7 +264,6 @@ possibly by using HTTPS. } - .. ts:def:: AgeMask // Binary representation of the age groups. @@ -385,7 +367,7 @@ possibly by using HTTPS. // When is it no longer possible to withdraw coins // of this denomination? stamp_expire_withdraw: Timestamp; - + // When is it no longer possible to deposit coins // of this denomination? stamp_expire_deposit: Timestamp; @@ -405,47 +387,6 @@ possibly by using HTTPS. lost?: boolean; } - .. ts:def:: Denom - - interface Denom { - // How much are coins of this denomination worth? - value: Amount; - - // When does the denomination key become valid? - stamp_start: Timestamp; - - // When is it no longer possible to withdraw coins - // of this denomination? - stamp_expire_withdraw: Timestamp; - - // When is it no longer possible to deposit coins - // of this denomination? - stamp_expire_deposit: Timestamp; - - // Timestamp indicating by when legal disputes relating to these coins must - // be settled, as the exchange will afterwards destroy its evidence relating to - // transactions involving this coin. - stamp_expire_legal: Timestamp; - - // Public key for the denomination. - denom_pub: DenominationKey; - - // Fee charged by the exchange for withdrawing a coin of this denomination. - fee_withdraw: Amount; - - // Fee charged by the exchange for depositing a coin of this denomination. - fee_deposit: Amount; - - // Fee charged by the exchange for refreshing a coin of this denomination. - fee_refresh: Amount; - - // Fee charged by the exchange for refunding a coin of this denomination. - fee_refund: Amount; - - // Signature of `TALER_DenominationKeyValidityPS`. - master_sig: EddsaSignature; - } - .. ts:def:: DenominationKey type DenominationKey = -- cgit v1.2.3