gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: refactor CS derive API in prepar


From: gnunet
Subject: [taler-exchange] branch master updated: refactor CS derive API in preparation for batch API
Date: Sun, 13 Nov 2022 19:52:12 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new de2fdc2a refactor CS derive API in preparation for batch API
de2fdc2a is described below

commit de2fdc2a9a12acfc15d631f3406c2ff1cffa12ec
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Nov 13 19:52:09 2022 +0100

    refactor CS derive API in preparation for batch API
---
 src/exchange/taler-exchange-httpd_keys.c | 26 ++++++++++++++-------
 src/include/taler_crypto_lib.h           | 36 ++++++++++++++++++++---------
 src/util/crypto_helper_cs.c              | 38 ++++++++++++++++++++++++-------
 src/util/taler-exchange-secmod-cs.c      |  2 +-
 src/util/taler-exchange-secmod-rsa.c     |  2 +-
 src/util/test_helper_cs.c                | 39 +++++++++++++++++++++-----------
 6 files changed, 101 insertions(+), 42 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_keys.c 
b/src/exchange/taler-exchange-httpd_keys.c
index 52aa9015..cf20985c 100644
--- a/src/exchange/taler-exchange-httpd_keys.c
+++ b/src/exchange/taler-exchange-httpd_keys.c
@@ -2874,10 +2874,15 @@ TEH_keys_denomination_cs_r_pub_melt (
     return TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE;
   }
 
-  return TALER_CRYPTO_helper_cs_r_derive_melt (ksh->helpers->csdh,
-                                               &hd->h_details.h_cs,
-                                               nonce,
-                                               r_pub);
+  {
+    struct TALER_CRYPTO_CsDeriveRequest cdr = {
+      .h_cs = &hd->h_details.h_cs,
+      .nonce = nonce
+    };
+    return TALER_CRYPTO_helper_cs_r_derive_melt (ksh->helpers->csdh,
+                                                 &cdr,
+                                                 r_pub);
+  }
 }
 
 
@@ -2905,11 +2910,16 @@ TEH_keys_denomination_cs_r_pub_withdraw (
   {
     return TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE;
   }
+  {
+    struct TALER_CRYPTO_CsDeriveRequest cdr = {
+      .h_cs = &hd->h_details.h_cs,
+      .nonce = nonce
+    };
 
-  return TALER_CRYPTO_helper_cs_r_derive_withdraw (ksh->helpers->csdh,
-                                                   &hd->h_details.h_cs,
-                                                   nonce,
-                                                   r_pub);
+    return TALER_CRYPTO_helper_cs_r_derive_withdraw (ksh->helpers->csdh,
+                                                     &cdr,
+                                                     r_pub);
+  }
 }
 
 
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index 8027181f..010a5bc7 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -2593,8 +2593,25 @@ TALER_CRYPTO_helper_cs_revoke (
 
 
 /**
- * Ask the helper to derive R using the @a nonce and denomination key
- * associated with @a h_cs.
+ * Information about what we should derive for.
+ */
+struct TALER_CRYPTO_CsDeriveRequest
+{
+  /**
+   * Hash of the CS public key to use to sign.
+   */
+  const struct TALER_CsPubHashP *h_cs;
+
+  /**
+   * Nonce to use.
+   */
+  const struct TALER_CsNonce *nonce;
+};
+
+
+/**
+ * Ask the helper to derive R using the information
+ * from @a cdr.
  *
  * This operation will block until the R has been obtained.  Should
  * this process receive a signal (that is not ignored) while the operation is
@@ -2603,7 +2620,7 @@ TALER_CRYPTO_helper_cs_revoke (
  * differences in the signature counters.  Retrying in this case may work.
  *
  * @param dh helper to process connection
- * @param h_cs hash of the CS public key to revoke
+ * @param cdr derivation input data
  * @param nonce witdhraw nonce
  * @param[out] crp set to the pair of R values
  * @return set to the error code (or #TALER_EC_NONE on success)
@@ -2611,14 +2628,13 @@ TALER_CRYPTO_helper_cs_revoke (
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_r_derive_withdraw (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_CsNonce *nonce,
+  const struct TALER_CRYPTO_CsDeriveRequest *cdr,
   struct TALER_DenominationCSPublicRPairP *crp);
 
 
 /**
- * Ask the helper to derive R using the @a nonce and denomination key
- * associated with @a h_cs.
+ * Ask the helper to derive R using the information
+ * from @a cdr.
  *
  * This operation will block until the R has been obtained.  Should
  * this process receive a signal (that is not ignored) while the operation is
@@ -2627,16 +2643,14 @@ TALER_CRYPTO_helper_cs_r_derive_withdraw (
  * differences in the signature counters.  Retrying in this case may work.
  *
  * @param dh helper to process connection
- * @param h_cs hash of the CS public key to revoke
- * @param nonce witdhraw nonce
+ * @param cdr derivation input data
  * @param[out] crp set to the pair of R values
  * @return set to the error code (or #TALER_EC_NONE on success)
  */
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_r_derive_melt (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_CsNonce *nonce,
+  const struct TALER_CRYPTO_CsDeriveRequest *cdr,
   struct TALER_DenominationCSPublicRPairP *crp);
 
 
diff --git a/src/util/crypto_helper_cs.c b/src/util/crypto_helper_cs.c
index 66ecb26a..409903b3 100644
--- a/src/util/crypto_helper_cs.c
+++ b/src/util/crypto_helper_cs.c
@@ -853,13 +853,12 @@ more:
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_r_derive_withdraw (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_CsNonce *nonce,
+  const struct TALER_CRYPTO_CsDeriveRequest *cdr,
   struct TALER_DenominationCSPublicRPairP *crp)
 {
   return helper_cs_r_derive (dh,
-                             h_cs,
-                             nonce,
+                             cdr->h_cs,
+                             cdr->nonce,
                              false,
                              crp);
 }
@@ -868,18 +867,41 @@ TALER_CRYPTO_helper_cs_r_derive_withdraw (
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_r_derive_melt (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_CsNonce *nonce,
+  const struct TALER_CRYPTO_CsDeriveRequest *cdr,
   struct TALER_DenominationCSPublicRPairP *crp)
 {
   return helper_cs_r_derive (dh,
-                             h_cs,
-                             nonce,
+                             cdr->h_cs,
+                             cdr->nonce,
                              true,
                              crp);
 }
 
 
+enum TALER_ErrorCode
+TALER_CRYPTO_helper_cs_batch_sign_melt (
+  struct TALER_CRYPTO_CsDenominationHelper *dh,
+  const struct TALER_CRYPTO_CsSignRequest *reqs,
+  unsigned int reqs_length,
+  struct TALER_BlindedDenominationSignature *bss)
+{
+  GNUNET_break (0); // FIXME
+  return -1;
+}
+
+
+enum TALER_ErrorCode
+TALER_CRYPTO_helper_cs_batch_sign_withdraw (
+  struct TALER_CRYPTO_CsDenominationHelper *dh,
+  const struct TALER_CRYPTO_CsSignRequest *reqs,
+  unsigned int reqs_length,
+  struct TALER_BlindedDenominationSignature *bss)
+{
+  GNUNET_break (0); // FIXME
+  return -1;
+}
+
+
 void
 TALER_CRYPTO_helper_cs_disconnect (
   struct TALER_CRYPTO_CsDenominationHelper *dh)
diff --git a/src/util/taler-exchange-secmod-cs.c 
b/src/util/taler-exchange-secmod-cs.c
index 01f12e14..13148a16 100644
--- a/src/util/taler-exchange-secmod-cs.c
+++ b/src/util/taler-exchange-secmod-cs.c
@@ -2170,7 +2170,7 @@ run (void *cls,
   GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
                                  NULL);
   if (0 == max_workers)
-    max_workers = 1; /* FIXME-#7272: or determine from CPU? */
+    max_workers = sysconf (_SC_NPROCESSORS_CONF);
   for (unsigned int i = 0; i<max_workers; i++)
     if (GNUNET_OK !=
         start_worker ())
diff --git a/src/util/taler-exchange-secmod-rsa.c 
b/src/util/taler-exchange-secmod-rsa.c
index 1cee02ab..779e1252 100644
--- a/src/util/taler-exchange-secmod-rsa.c
+++ b/src/util/taler-exchange-secmod-rsa.c
@@ -1983,7 +1983,7 @@ run (void *cls,
   GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
                                  NULL);
   if (0 == max_workers)
-    max_workers = 1; /* FIXME-#7272: or determine from CPU? */
+    max_workers = sysconf (_SC_NPROCESSORS_CONF);
   for (unsigned int i = 0; i<max_workers; i++)
     if (GNUNET_OK !=
         start_worker ())
diff --git a/src/util/test_helper_cs.c b/src/util/test_helper_cs.c
index 1a40fa1e..7c57d50c 100644
--- a/src/util/test_helper_cs.c
+++ b/src/util/test_helper_cs.c
@@ -289,11 +289,17 @@ test_r_derive (struct TALER_CRYPTO_CsDenominationHelper 
*dh)
                 "Requesting R derivation with key %s\n",
                 GNUNET_h2s (&keys[i].h_cs.hash));
     alg_values.cipher = TALER_DENOMINATION_CS;
-    ec = TALER_CRYPTO_helper_cs_r_derive_withdraw (
-      dh,
-      &keys[i].h_cs,
-      &pd.blinded_planchet.details.cs_blinded_planchet.nonce,
-      &alg_values.details.cs_values);
+    {
+      struct TALER_CRYPTO_CsDeriveRequest cdr = {
+        .h_cs = &keys[i].h_cs,
+        .nonce = &pd.blinded_planchet.details.cs_blinded_planchet.nonce
+      };
+
+      ec = TALER_CRYPTO_helper_cs_r_derive_withdraw (
+        dh,
+        &cdr,
+        &alg_values.details.cs_values);
+    }
     switch (ec)
     {
     case TALER_EC_NONE:
@@ -374,6 +380,10 @@ test_r_derive (struct TALER_CRYPTO_CsDenominationHelper 
*dh)
     struct TALER_CsPubHashP rnd;
     struct TALER_CsNonce nonce;
     struct TALER_DenominationCSPublicRPairP crp;
+    struct TALER_CRYPTO_CsDeriveRequest cdr = {
+      .h_cs = &rnd,
+      .nonce = &nonce,
+    };
 
     GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
                                 &rnd,
@@ -382,8 +392,7 @@ test_r_derive (struct TALER_CRYPTO_CsDenominationHelper *dh)
                                 &nonce,
                                 sizeof (nonce));
     ec = TALER_CRYPTO_helper_cs_r_derive_withdraw (dh,
-                                                   &rnd,
-                                                   &nonce,
+                                                   &cdr,
                                                    &crp);
     if (TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN != ec)
     {
@@ -424,6 +433,10 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper *dh)
     {
       struct TALER_PlanchetDetail pd;
       struct TALER_CRYPTO_CsSignRequest csr;
+      struct TALER_CRYPTO_CsDeriveRequest cdr = {
+        .h_cs = &keys[i].h_cs,
+        .nonce = &pd.blinded_planchet.details.cs_blinded_planchet.nonce
+      };
 
       pd.blinded_planchet.cipher = TALER_DENOMINATION_CS;
       // keys[i].denom_pub.cipher = TALER_DENOMINATION_CS;
@@ -434,10 +447,7 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper *dh)
       alg_values.cipher = TALER_DENOMINATION_CS;
       ec = TALER_CRYPTO_helper_cs_r_derive_withdraw (
         dh,
-        &keys[i].h_cs,
-        &pd.blinded_planchet.
-        details.
-        cs_blinded_planchet.nonce,
+        &cdr,
         &alg_values.details.cs_values);
       if (TALER_EC_NONE != ec)
         continue;
@@ -622,6 +632,10 @@ perf_signing (struct TALER_CRYPTO_CsDenominationHelper *dh,
       {
         struct TALER_CoinPubHashP c_hash;
         struct TALER_PlanchetDetail pd;
+        struct TALER_CRYPTO_CsDeriveRequest cdr = {
+          .h_cs = &keys[i].h_cs,
+          .nonce = &pd.blinded_planchet.details.cs_blinded_planchet.nonce
+        };
 
         pd.blinded_planchet.cipher = TALER_DENOMINATION_CS;
         TALER_cs_withdraw_nonce_derive (&ps,
@@ -630,8 +644,7 @@ perf_signing (struct TALER_CRYPTO_CsDenominationHelper *dh,
         alg_values.cipher = TALER_DENOMINATION_CS;
         ec = TALER_CRYPTO_helper_cs_r_derive_melt (
           dh,
-          &keys[i].h_cs,
-          &pd.blinded_planchet.details.cs_blinded_planchet.nonce,
+          &cdr,
           &alg_values.details.cs_values);
         if (TALER_EC_NONE != ec)
           continue;

-- 
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]