From d97cd0c98d01309a0c08c2e70cc73c7a76cf8f88 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 11 Nov 2015 18:09:19 +0100 Subject: define signature formats for #3888 --- src/include/taler_signatures.h | 64 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 4 deletions(-) (limited to 'src/include') diff --git a/src/include/taler_signatures.h b/src/include/taler_signatures.h index 3bdc4eee1..555c93e37 100644 --- a/src/include/taler_signatures.h +++ b/src/include/taler_signatures.h @@ -132,6 +132,12 @@ */ #define TALER_SIGNATURE_MERCHANT_REFUND 1102 +/** + * Signature where the merchant confirms that he needs the wire + * transfer identifier for a deposit operation. + */ +#define TALER_SIGNATURE_MERCHANT_DEPOSIT_WTID 1103 + /*********************/ /* Wallet signatures */ @@ -300,8 +306,7 @@ struct TALER_DepositRequestPS /** * The Merchant's public key. Allows the merchant to later refund - * the transaction. All zeros if nobody is allowed to refund the - * transaction later. + * the transaction or to inquire about the wire transfer identifier. */ struct TALER_MerchantPublicKeyP merchant; @@ -372,8 +377,7 @@ struct TALER_DepositConfirmationPS /** * The Merchant's public key. Allows the merchant to later refund - * the transaction. All zeros if nobody is allowed to refund the - * transaction later. + * the transaction or to inquire about the wire transfer identifier. */ struct TALER_MerchantPublicKeyP merchant; @@ -791,6 +795,58 @@ struct TALER_MintWireSupportMethodsPS }; + + +/** + * @brief Format used to generate the signature on a request to obtain + * the wire transfer identifier associated with a deposit. + */ +struct TALER_DepositTrackPS +{ + /** + * Purpose must be #TALER_SIGNATURE_MERCHANT_DEPOSIT_WTID. + */ + struct GNUNET_CRYPTO_EccSignaturePurpose purpose; + + /** + * Hash over the contract for which this deposit is made. + */ + struct GNUNET_HashCode h_contract GNUNET_PACKED; + + /** + * Hash over the wiring information of the merchant. + */ + struct GNUNET_HashCode h_wire GNUNET_PACKED; + + /** + * Merchant-generated transaction ID to detect duplicate + * transactions. The merchant must communicate a merchant-unique ID + * to the customer for each transaction. Note that different coins + * that are part of the same transaction can use the same + * transaction ID. The transaction ID is useful for later disputes, + * and the merchant's contract offer (@e h_contract) with the + * customer should include the offer's term and transaction ID + * signed with a key from the merchant. + */ + uint64_t transaction_id GNUNET_PACKED; + + /** + * The Merchant's public key. The deposit inquiry request is to be + * signed by the corresponding private key (using EdDSA). + */ + struct TALER_MerchantPublicKeyP merchant; + + /** + * The coin's public key. This is the value that must have been + * signed (blindly) by the Mint. + */ + struct TALER_CoinSpendPublicKeyP coin_pub; + +}; + + + + GNUNET_NETWORK_STRUCT_END #endif -- cgit v1.2.3