gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-docs] branch master updated: first draft of tokens in pay api


From: gnunet
Subject: [taler-docs] branch master updated: first draft of tokens in pay api
Date: Thu, 28 Mar 2024 10:41:52 +0100

This is an automated email from the git hooks/post-receive script.

christian-blaettler pushed a commit to branch master
in repository docs.

The following commit(s) were added to refs/heads/master by this push:
     new f77e888c first draft of tokens in pay api
f77e888c is described below

commit f77e888cccc7e263a36c1632cdd8ac4c73fb0690
Author: Christian Blättler <blatc2@bfh.ch>
AuthorDate: Thu Mar 28 10:41:47 2024 +0100

    first draft of tokens in pay api
---
 core/api-common.rst                       | 19 +++++++++
 core/api-merchant.rst                     | 69 ++++++++++++++++++++++++++++++-
 design-documents/046-mumimo-contracts.rst |  2 +-
 3 files changed, 87 insertions(+), 3 deletions(-)

diff --git a/core/api-common.rst b/core/api-common.rst
index 6d023b16..85942a02 100644
--- a/core/api-common.rst
+++ b/core/api-common.rst
@@ -816,6 +816,13 @@ uses 512-bit hash codes (64 bytes).
      struct GNUNET_HashCode hash;
    };
 
+.. sourcecode:: c
+
+   struct TALER_OutputCommitmentHash {
+     struct GNUNET_HashCode hash;
+   };
+
+
 
 .. _TALER_EcdhEphemeralPublicKeyP:
 .. sourcecode:: c
@@ -967,6 +974,14 @@ uses 512-bit hash codes (64 bytes).
      uint8_t enc[sizeof (struct TALER_LinkSecretP)];
    };
 
+.. _eddsa-token-pub:
+.. sourcecode:: c
+
+   union TALER_TokenPublicKeyP {
+     uint8_t eddsa_pub[32];
+     uint8_t ecdhe_pub[32];
+   };
+
 .. _Signatures:
 
 Signatures
@@ -1073,6 +1088,10 @@ within the
     struct TALER_AmountNBO deposit_fee;
     struct TALER_MerchantPublicKeyP merchant;
     struct GNUNET_HashCode wallet_data_hash;
+    /* @since protocol **vSUBSCRIBE** */
+    struct TALER_OutputCommitmentHash h_outputs;
+    /* @since protocol **vSUBSCRIBE** */
+    uint16_t choice_index;
   };
 
 .. _TALER_DepositConfirmationPS:
diff --git a/core/api-merchant.rst b/core/api-merchant.rst
index 53ccdae6..75e1353c 100644
--- a/core/api-merchant.rst
+++ b/core/api-merchant.rst
@@ -350,6 +350,18 @@ Making the payment
       // The coins used to make the payment.
       coins: CoinPaySig[];
 
+      // Index of the chosen sub-contract.
+      // @since protocol **vSUBSCRIBE**
+      choice_index?: Integer;
+
+      // Input tokens required by choice indicated by `choice_index`.
+      // @since protocol **vSUBSCRIBE**
+      tokens: TokenPaySig[];
+
+      // Array of blinded output tokens to be (blindly) signed by the merchant.
+      // @since protocol **vSUBSCRIBE**
+      tokens_evs: TokenEnvelope[];
+
       // Custom inputs from the wallet for the contract.
       wallet_data?: Object;
 
@@ -381,6 +393,59 @@ Making the payment
       exchange_url: string;
     }
 
+  .. ts:def:: TokenPaySig
+
+    interface TokenPaySig {
+
+      // Signature on ``TALER_DepositRequestPS`` with the public key of the
+      // token being provisioned to the merchant.
+      token_sig: EddsaSignature;
+
+      // Public key of the token being provisioned to the merchant.
+      token_pub: EddsaPublicKey;
+
+      // Unblinded signature made by the token family public key of the 
merchant.
+      ub_sig: UnblindedSignature;
+
+      // The hash of the token family public key associated with this token.
+      h_denom: HashCode;
+
+    }
+
+  .. ts:def:: TokenEnvelope
+
+    // This type depends on the cipher used to sign token families. This is
+    // configured by the merchant and defined for each token family in the
+    // contract terms.
+    type TokenEnvelope = RSATokenEnvelope | CSTokenEnvelope;
+
+  .. ts:def:: RSATokenEnvelope
+
+    interface RSATokenEnvelope {
+
+      // RSA is used for the blind signature.
+      cipher: "RSA";
+
+      // Blinded signature of the token's `public EdDSA key <eddsa-token-pub>`.
+      rsa_blinded_pub: BlindedRsaSignature;
+
+    }
+
+  .. ts:def:: CSTokenEnvelope
+
+    interface CSTokenEnvelope {
+      // Blind Clause-Schnorr signature scheme is used for the blind signature.
+      // See https://taler.net/papers/cs-thesis.pdf for details.
+      cipher: "CS";
+
+      // Public nonce
+      cs_nonce: string;      // Crockford `Base32` encoded
+
+      // Two Curve25519 scalars, each representing a blinded challenge
+      cs_blinded_c0: string; // Crockford `Base32` encoded
+      cs_blinded_c1: string; // Crockford `Base32` encoded
+    }
+
 Querying payment status
 -----------------------
 
@@ -3747,8 +3812,8 @@ protocol **vSUBSCRIBE**.
     type: "token";
 
     // How many units of the input are required. Defaults to 1 if not 
specified.
-    // Input with number == 0 are ignored by the merchant backend.
-    number?: Integer;
+    // Input with count == 0 are ignored by the merchant backend.
+    count?: Integer;
 
     // Token family slug as configured in the merchant backend. Slug is unique
     // across all configured tokens of a merchant.
diff --git a/design-documents/046-mumimo-contracts.rst 
b/design-documents/046-mumimo-contracts.rst
index 41e659dd..2220fdb5 100644
--- a/design-documents/046-mumimo-contracts.rst
+++ b/design-documents/046-mumimo-contracts.rst
@@ -439,7 +439,7 @@ consumes an available discount token, that contract should 
be moved up in the
 list.
 
 Which specific alternative contract was chosen by the user is indicated in the
-subcontract index field of the :ref:`TALER_DepositRequestPS 
<taler_depositrequestps>`.
+``choice_index`` field of the :ref:`TALER_DepositRequestPS 
<taler_depositrequestps>`.
 
 
 Output Commitments

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]