gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: API refactoring towards batch CS


From: gnunet
Subject: [taler-exchange] branch master updated: API refactoring towards batch CS
Date: Sun, 13 Nov 2022 15:05:51 +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 9838e0fc API refactoring towards batch CS
9838e0fc is described below

commit 9838e0fc33c0e21cac4b238ae2ab78e386d7d9c2
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Sun Nov 13 15:05:48 2022 +0100

    API refactoring towards batch CS
---
 src/exchange/taler-exchange-httpd_keys.c | 32 ++++++++++------
 src/include/taler_crypto_lib.h           | 29 ++++++++++----
 src/util/crypto_helper_cs.c              | 22 +++++------
 src/util/taler-exchange-secmod-cs.c      | 20 ++--------
 src/util/taler-exchange-secmod-cs.h      | 66 +++++++++++++++++++++++++++-----
 src/util/taler-exchange-secmod-rsa.h     |  6 +--
 src/util/test_helper_cs.c                | 28 ++++++++------
 7 files changed, 131 insertions(+), 72 deletions(-)

diff --git a/src/exchange/taler-exchange-httpd_keys.c 
b/src/exchange/taler-exchange-httpd_keys.c
index b4f4bacf..52aa9015 100644
--- a/src/exchange/taler-exchange-httpd_keys.c
+++ b/src/exchange/taler-exchange-httpd_keys.c
@@ -2781,11 +2781,16 @@ TEH_keys_denomination_sign_withdraw (
     }
   case TALER_DENOMINATION_CS:
     TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_CS]++;
-    return TALER_CRYPTO_helper_cs_sign_withdraw (
-      ksh->helpers->csdh,
-      &hd->h_details.h_cs,
-      &bp->details.cs_blinded_planchet,
-      bs);
+    {
+      struct TALER_CRYPTO_CsSignRequest csr;
+
+      csr.h_cs = &hd->h_details.h_cs;
+      csr.blinded_planchet = &bp->details.cs_blinded_planchet;
+      return TALER_CRYPTO_helper_cs_sign_withdraw (
+        ksh->helpers->csdh,
+        &csr,
+        bs);
+    }
   default:
     return TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE;
   }
@@ -2827,12 +2832,17 @@ TEH_keys_denomination_sign_melt (
         bs);
     }
   case TALER_DENOMINATION_CS:
-    TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_CS]++;
-    return TALER_CRYPTO_helper_cs_sign_melt (
-      ksh->helpers->csdh,
-      &hd->h_details.h_cs,
-      &bp->details.cs_blinded_planchet,
-      bs);
+    {
+      struct TALER_CRYPTO_CsSignRequest csr;
+
+      csr.h_cs = &hd->h_details.h_cs;
+      csr.blinded_planchet = &bp->details.cs_blinded_planchet;
+      TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_CS]++;
+      return TALER_CRYPTO_helper_cs_sign_melt (
+        ksh->helpers->csdh,
+        &csr,
+        bs);
+    }
   default:
     return TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE;
   }
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index b0d6cbf2..2f12a47b 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -2466,6 +2466,23 @@ void
 TALER_CRYPTO_helper_cs_poll (struct TALER_CRYPTO_CsDenominationHelper *dh);
 
 
+/**
+ * Information about what we should sign over.
+ */
+struct TALER_CRYPTO_CsSignRequest
+{
+  /**
+   * Hash of the CS public key to use to sign.
+   */
+  const struct TALER_CsPubHashP *h_cs;
+
+  /**
+   * Blinded planchet containing c and the nonce.
+   */
+  const struct TALER_BlindedCsPlanchet *blinded_planchet;
+};
+
+
 /**
  * Request helper @a dh to sign @a msg using the public key corresponding to
  * @a h_denom_pub.
@@ -2477,16 +2494,14 @@ TALER_CRYPTO_helper_cs_poll (struct 
TALER_CRYPTO_CsDenominationHelper *dh);
  * differences in the signature counters.  Retrying in this case may work.
  *
  * @param dh helper process connection
- * @param h_cs hash of the CS public key to use to sign
- * @param blinded_planchet blinded planchet containing c and nonce
+ * @param req information about the key to sign with and the value to sign
  * @param[out] bs set to the blind signature
  * @return #TALER_EC_NONE on success
  */
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_sign_melt (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_BlindedCsPlanchet *blinded_planchet,
+  const struct TALER_CRYPTO_CsSignRequest *req,
   struct TALER_BlindedDenominationSignature *bs);
 
 
@@ -2501,16 +2516,14 @@ TALER_CRYPTO_helper_cs_sign_melt (
  * differences in the signature counters.  Retrying in this case may work.
  *
  * @param dh helper process connection
- * @param h_cs hash of the CS public key to use to sign
- * @param blinded_planchet blinded planchet containing c and nonce
+ * @param req information about the key to sign with and the value to sign
  * @param[out] bs set to the blind signature
  * @return #TALER_EC_NONE on success
  */
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_sign_withdraw (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_BlindedCsPlanchet *blinded_planchet,
+  const struct TALER_CRYPTO_CsSignRequest *req,
   struct TALER_BlindedDenominationSignature *bs);
 
 
diff --git a/src/util/crypto_helper_cs.c b/src/util/crypto_helper_cs.c
index e12d5ad6..8b7602c0 100644
--- a/src/util/crypto_helper_cs.c
+++ b/src/util/crypto_helper_cs.c
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2020, 2021 Taler Systems SA
+  Copyright (C) 2020, 2021, 2022 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU General Public License as published by the Free Software
@@ -419,9 +419,9 @@ helper_cs_sign (
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Requesting signature\n");
   {
-    char buf[sizeof (struct TALER_CRYPTO_CsSignRequest)];
-    struct TALER_CRYPTO_CsSignRequest *sr
-      = (struct TALER_CRYPTO_CsSignRequest *) buf;
+    char buf[sizeof (struct TALER_CRYPTO_CsSignRequestMessage)];
+    struct TALER_CRYPTO_CsSignRequestMessage *sr
+      = (struct TALER_CRYPTO_CsSignRequestMessage *) buf;
 
     sr->header.size = htons (sizeof (buf));
     sr->header.type = htons (TALER_HELPER_CS_MT_REQ_SIGN);
@@ -594,13 +594,12 @@ end:
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_sign_melt (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_BlindedCsPlanchet *blinded_planchet,
+  const struct TALER_CRYPTO_CsSignRequest *req,
   struct TALER_BlindedDenominationSignature *bs)
 {
   return helper_cs_sign (dh,
-                         h_cs,
-                         blinded_planchet,
+                         req->h_cs,
+                         req->blinded_planchet,
                          true,
                          bs);
 }
@@ -609,13 +608,12 @@ TALER_CRYPTO_helper_cs_sign_melt (
 enum TALER_ErrorCode
 TALER_CRYPTO_helper_cs_sign_withdraw (
   struct TALER_CRYPTO_CsDenominationHelper *dh,
-  const struct TALER_CsPubHashP *h_cs,
-  const struct TALER_BlindedCsPlanchet *blinded_planchet,
+  const struct TALER_CRYPTO_CsSignRequest *req,
   struct TALER_BlindedDenominationSignature *bs)
 {
   return helper_cs_sign (dh,
-                         h_cs,
-                         blinded_planchet,
+                         req->h_cs,
+                         req->blinded_planchet,
                          false,
                          bs);
 }
diff --git a/src/util/taler-exchange-secmod-cs.c 
b/src/util/taler-exchange-secmod-cs.c
index 01b74868..176214e3 100644
--- a/src/util/taler-exchange-secmod-cs.c
+++ b/src/util/taler-exchange-secmod-cs.c
@@ -277,7 +277,7 @@ generate_response (struct DenominationKey *dk)
  */
 static enum GNUNET_GenericReturnValue
 handle_sign_request (struct TES_Client *client,
-                     const struct TALER_CRYPTO_CsSignRequest *sr)
+                     const struct TALER_CRYPTO_CsSignRequestMessage *sr)
 {
   struct DenominationKey *dk;
   struct GNUNET_CRYPTO_CsRSecret r[2];
@@ -340,20 +340,6 @@ handle_sign_request (struct TES_Client *client,
   GNUNET_assert (dk->rc > 0);
   dk->rc--;
   GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock));
-  // if (NULL == cs_answer)
-  // {
-  //   struct TALER_CRYPTO_SignFailure sf = {
-  //     .header.size = htons (sizeof (sf)),
-  //     .header.type = htons (TALER_HELPER_CS_MT_RES_SIGN_FAILURE),
-  //     .ec = htonl (TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE)
-  //   };
-
-  //   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-  //               "Signing request failed, worker failed to produce 
signature\n");
-  //   return TES_transmit (client->csock,
-  //                        &sf.header);
-  // }
-
   {
     struct TALER_CRYPTO_SignResponse *sr;
     size_t tsize;
@@ -651,14 +637,14 @@ cs_work_dispatch (struct TES_Client *client,
   switch (ntohs (hdr->type))
   {
   case TALER_HELPER_CS_MT_REQ_SIGN:
-    if (msize < sizeof (struct TALER_CRYPTO_CsSignRequest))
+    if (msize < sizeof (struct TALER_CRYPTO_CsSignRequestMessage))
     {
       GNUNET_break_op (0);
       return GNUNET_SYSERR;
     }
     return handle_sign_request (
       client,
-      (const struct TALER_CRYPTO_CsSignRequest *) hdr);
+      (const struct TALER_CRYPTO_CsSignRequestMessage *) hdr);
   case TALER_HELPER_CS_MT_REQ_REVOKE:
     if (msize != sizeof (struct TALER_CRYPTO_CsRevokeRequest))
     {
diff --git a/src/util/taler-exchange-secmod-cs.h 
b/src/util/taler-exchange-secmod-cs.h
index c71c3b9a..21b1ef4c 100644
--- a/src/util/taler-exchange-secmod-cs.h
+++ b/src/util/taler-exchange-secmod-cs.h
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2020 Taler Systems SA
+  Copyright (C) 2020-2022 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU General Public License as published by the Free Software
@@ -26,17 +26,19 @@
 #define TALER_HELPER_CS_MT_PURGE 1
 #define TALER_HELPER_CS_MT_AVAIL 2
 
-#define TALER_HELPER_CS_MT_REQ_INIT 4
+#define TALER_HELPER_CS_MT_REQ_INIT 3
+#define TALER_HELPER_CS_MT_REQ_BATCH_SIGN 4
 #define TALER_HELPER_CS_MT_REQ_SIGN 5
 #define TALER_HELPER_CS_MT_REQ_REVOKE 6
-#define TALER_HELPER_CS_MT_REQ_RDERIVE 7
+#define TALER_HELPER_CS_MT_REQ_BATCH_RDERIVE 7
+#define TALER_HELPER_CS_MT_REQ_RDERIVE 8
 
-#define TALER_HELPER_CS_MT_RES_SIGNATURE 8
-#define TALER_HELPER_CS_MT_RES_SIGN_FAILURE 9
-#define TALER_HELPER_CS_MT_RES_RDERIVE 10
-#define TALER_HELPER_CS_MT_RES_RDERIVE_FAILURE 11
+#define TALER_HELPER_CS_MT_RES_SIGNATURE 9
+#define TALER_HELPER_CS_MT_RES_SIGN_FAILURE 10
+#define TALER_HELPER_CS_MT_RES_RDERIVE 11
+#define TALER_HELPER_CS_MT_RES_RDERIVE_FAILURE 12
 
-#define TALER_HELPER_CS_SYNCED 12
+#define TALER_HELPER_CS_SYNCED 13
 
 GNUNET_NETWORK_STRUCT_BEGIN
 
@@ -114,7 +116,7 @@ struct TALER_CRYPTO_CsKeyPurgeNotification
 /**
  * Message sent if a signature is requested.
  */
-struct TALER_CRYPTO_CsSignRequest
+struct TALER_CRYPTO_CsSignRequestMessage
 {
   /**
    * Type is #TALER_HELPER_CS_MT_REQ_SIGN.
@@ -139,6 +141,29 @@ struct TALER_CRYPTO_CsSignRequest
 
 };
 
+
+/**
+ * Message sent if a batch of signatures is requested.
+ */
+struct TALER_CRYPTO_BatchSignRequest
+{
+  /**
+   * Type is #TALER_HELPER_CS_MT_REQ_BATCH_SIGN.
+   */
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * Number of signatures to create, in NBO.
+   */
+  uint32_t batch_size;
+
+  /*
+   * Followed by @e batch_size batch sign requests.
+   */
+
+};
+
+
 /**
  * Message sent if a signature is requested.
  */
@@ -165,6 +190,29 @@ struct TALER_CRYPTO_CsRDeriveRequest
   struct TALER_CsNonce nonce;
 };
 
+
+/**
+ * Message sent if a batch of derivations is requested.
+ */
+struct TALER_CRYPTO_BatchDeriveRequest
+{
+  /**
+   * Type is #TALER_HELPER_RSA_MT_REQ_BATCH_RDERIVE.
+   */
+  struct GNUNET_MessageHeader header;
+
+  /**
+   * Number of derivations to create, in NBO.
+   */
+  uint32_t batch_size;
+
+  /*
+   * Followed by @e batch_size derive requests.
+   */
+
+};
+
+
 /**
  * Message sent if a key was revoked.
  */
diff --git a/src/util/taler-exchange-secmod-rsa.h 
b/src/util/taler-exchange-secmod-rsa.h
index dddaf3e1..ffbceb48 100644
--- a/src/util/taler-exchange-secmod-rsa.h
+++ b/src/util/taler-exchange-secmod-rsa.h
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2020 Taler Systems SA
+  Copyright (C) 2020-2022 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it under the
   terms of the GNU General Public License as published by the Free Software
@@ -136,7 +136,7 @@ struct TALER_CRYPTO_SignRequest
 
 
 /**
- * Message sent if a signature is requested.
+ * Message sent if a batch of signatures is requested.
  */
 struct TALER_CRYPTO_BatchSignRequest
 {
@@ -151,7 +151,7 @@ struct TALER_CRYPTO_BatchSignRequest
   uint32_t batch_size;
 
   /*
-   * Followed by @e batch_size batch sign requests.
+   * Followed by @e batch_size sign requests.
    */
 
 };
diff --git a/src/util/test_helper_cs.c b/src/util/test_helper_cs.c
index 566f1d61..1a40fa1e 100644
--- a/src/util/test_helper_cs.c
+++ b/src/util/test_helper_cs.c
@@ -423,6 +423,7 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper *dh)
       continue;
     {
       struct TALER_PlanchetDetail pd;
+      struct TALER_CRYPTO_CsSignRequest csr;
 
       pd.blinded_planchet.cipher = TALER_DENOMINATION_CS;
       // keys[i].denom_pub.cipher = TALER_DENOMINATION_CS;
@@ -458,11 +459,12 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper 
*dh)
       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                   "Requesting signature with key %s\n",
                   GNUNET_h2s (&keys[i].h_cs.hash));
+      csr.h_cs = &keys[i].h_cs;
+      csr.blinded_planchet
+        = &pd.blinded_planchet.details.cs_blinded_planchet;
       ec = TALER_CRYPTO_helper_cs_sign_withdraw (
         dh,
-        &keys[i].h_cs,
-        &pd.blinded_planchet.details.
-        cs_blinded_planchet,
+        &csr,
         &ds);
     }
     switch (ec)
@@ -544,6 +546,7 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper *dh)
   {
     struct TALER_PlanchetDetail pd;
     struct TALER_CsPubHashP rnd;
+    struct TALER_CRYPTO_CsSignRequest csr;
 
     GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
                                 &rnd,
@@ -557,11 +560,12 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper 
*dh)
                                            NULL, /* no age commitment */
                                            &c_hash,
                                            &pd));
-
+    csr.h_cs = &rnd;
+    csr.blinded_planchet
+      = &pd.blinded_planchet.details.cs_blinded_planchet;
     ec = TALER_CRYPTO_helper_cs_sign_withdraw (
       dh,
-      &rnd,
-      &pd.blinded_planchet.details.cs_blinded_planchet,
+      &csr,
       &ds);
     if (TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN != ec)
     {
@@ -627,9 +631,7 @@ perf_signing (struct TALER_CRYPTO_CsDenominationHelper *dh,
         ec = TALER_CRYPTO_helper_cs_r_derive_melt (
           dh,
           &keys[i].h_cs,
-          &pd.blinded_planchet.
-          details.
-          cs_blinded_planchet.nonce,
+          &pd.blinded_planchet.details.cs_blinded_planchet.nonce,
           &alg_values.details.cs_values);
         if (TALER_EC_NONE != ec)
           continue;
@@ -652,12 +654,14 @@ perf_signing (struct TALER_CRYPTO_CsDenominationHelper 
*dh,
         {
           struct GNUNET_TIME_Absolute start = GNUNET_TIME_absolute_get ();
           struct GNUNET_TIME_Relative delay;
+          struct TALER_CRYPTO_CsSignRequest csr;
 
+          csr.h_cs = &keys[i].h_cs;
+          csr.blinded_planchet
+            = &pd.blinded_planchet.details.cs_blinded_planchet;
           ec = TALER_CRYPTO_helper_cs_sign_melt (
             dh,
-            &keys[i].h_cs,
-            &pd.blinded_planchet.details.
-            cs_blinded_planchet,
+            &csr,
             &ds);
           if (TALER_EC_NONE != ec)
             break;

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