gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: [testing] send blinded receipts bac


From: gnunet
Subject: [taler-donau] branch master updated: [testing] send blinded receipts back to caller
Date: Mon, 29 Apr 2024 00:06:58 +0200

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

lukas-matyja pushed a commit to branch master
in repository donau.

The following commit(s) were added to refs/heads/master by this push:
     new 1bcb159  [testing] send blinded receipts back to caller
1bcb159 is described below

commit 1bcb159fc7671acfb1862b8b7d52a021c2e3d54d
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
AuthorDate: Mon Apr 29 00:07:49 2024 +0200

    [testing] send blinded receipts back to caller
---
 src/donau/donau-httpd_batch-issue.c          |   6 +-
 src/include/donau_service.h                  |   4 +-
 src/lib/donau_api_batch_issue_receipts.c     | 126 +++++++++++++++------------
 src/testing/testing_api_cmd_issue_receipts.c |   3 +
 4 files changed, 80 insertions(+), 59 deletions(-)

diff --git a/src/donau/donau-httpd_batch-issue.c 
b/src/donau/donau-httpd_batch-issue.c
index fadb014..588daa8 100644
--- a/src/donau/donau-httpd_batch-issue.c
+++ b/src/donau/donau-httpd_batch-issue.c
@@ -376,11 +376,11 @@ start:
   signatures_to_JSON (num_bkps, du_sigs, blind_signatures);
   return TALER_MHD_REPLY_JSON_PACK (
     rc->connection,
-       MHD_HTTP_CREATED,
+    MHD_HTTP_CREATED,
     GNUNET_JSON_pack_array_steal ("blind_signatures",
                                   blind_signatures),
-    TALER_JSON_pack_amount("issued_amount",
-                                               &receipts_sum));
+    TALER_JSON_pack_amount ("issued_amount",
+                            &receipts_sum));
 }
 
 
diff --git a/src/include/donau_service.h b/src/include/donau_service.h
index ccde183..8f3cc47 100644
--- a/src/include/donau_service.h
+++ b/src/include/donau_service.h
@@ -469,11 +469,11 @@ struct DONAU_BatchIssueResponse
      */
     struct
     {
-
+      
       /**
        * Blind signature provided by the donau
        */
-      struct DONAU_BlindedDonationUnitSignature *donau_sigs;
+      struct DONAU_BlindedDonationUnitSignature *blinded_sigs;
 
       /**
        * total issued amount over all donation receipts of a donation specified
diff --git a/src/lib/donau_api_batch_issue_receipts.c 
b/src/lib/donau_api_batch_issue_receipts.c
index 7c1f5e2..d789c39 100644
--- a/src/lib/donau_api_batch_issue_receipts.c
+++ b/src/lib/donau_api_batch_issue_receipts.c
@@ -61,6 +61,10 @@ struct DONAU_BatchIssueReceiptHandle
    */
   struct DONAU_CharitySignatureP charity_sig;
 
+  /**
+   * number of requested signatures.
+   */
+  size_t num_blinded_sigs;
   /**
    * Closure to pass to @e cb.
    */
@@ -87,63 +91,76 @@ struct DONAU_BatchIssueReceiptHandle
 static enum GNUNET_GenericReturnValue
 handle_batch_issue_ok (const json_t *resp_obj,
                        struct DONAU_BatchIssueReceiptHandle *birh,
-                                          struct DONAU_BatchIssueResponse 
*biresp)
+                       struct DONAU_BatchIssueResponse *biresp)
 {
   struct TALER_Amount issued_amount = biresp->details.ok.issued_amount;
 
-  if (!json_is_object(resp_obj))
+  if (JSON_OBJECT != json_typeof (resp_obj))
   {
     GNUNET_break_op (0);
     return GNUNET_SYSERR;
   }
-  const json_t *j_blind_signatures = NULL;
+  const json_t *j_blind_signatures;
   struct GNUNET_JSON_Specification spec[] = {
-       TALER_JSON_spec_amount_any ("issued_amount",
-                                                               &issued_amount),
-       GNUNET_JSON_spec_array_const ("blind_signatures",
-                                                                       
&j_blind_signatures),
-       GNUNET_JSON_spec_end ()
+    TALER_JSON_spec_amount_any ("issued_amount",
+                                &issued_amount),
+    GNUNET_JSON_spec_array_const ("blind_signatures",
+                                  &j_blind_signatures),
+    GNUNET_JSON_spec_end ()
   };
   if (GNUNET_OK !=
-         GNUNET_JSON_parse (resp_obj,
-                                                spec,
-                                                NULL,
-                                                NULL))
+      GNUNET_JSON_parse (resp_obj,
+                         spec,
+                         NULL,
+                         NULL))
   {
-       GNUNET_break_op (0);
-       return GNUNET_SYSERR;
+    GNUNET_break_op (0);
+    return GNUNET_SYSERR;
   }
-  const unsigned long long num_du_sigs
-    = json_array_size (j_blind_signatures);
-  if (0 != num_du_sigs)
+//  const unsigned long long num_du_sigs
+//    = json_array_size (j_blind_signatures);
+  if ( (NULL == j_blind_signatures) ||
+       (! json_is_array (j_blind_signatures)) ||
+       (birh->num_blinded_sigs != json_array_size (j_blind_signatures)) )
   {
-         struct DONAU_BlindedDonationUnitSignature du_sigs[num_du_sigs];
-         unsigned int index;
-         json_t *du_sig_obj;
-         json_array_foreach (j_blind_signatures,
-                                                 index,
-                                                 du_sig_obj)
-         {
-                 struct GNUNET_JSON_Specification spec[] = {
-                   DONAU_JSON_spec_blinded_donation_unit_sig 
("blinded_signature",
-                                                                               
                &du_sigs[index]),
-                       GNUNET_JSON_spec_end ()
-                 };
-                 if (GNUNET_OK !=
-                         GNUNET_JSON_parse (du_sig_obj,
-                                                                spec,
-                                                                NULL,
-                                                                NULL))
-                 {
-                       GNUNET_break_op (0);
-                   for (size_t i = 0; i<index; i++)
-                     DONAU_blinded_donation_unit_sig_free (&du_sigs[i]);
-                       return GNUNET_SYSERR;
-                 }
-         }
+    GNUNET_break (0);
+    return GNUNET_SYSERR;
   }
+//  if (0 != num_du_sigs)
+//  {
+  biresp->details.ok.blinded_sigs =
+               GNUNET_malloc(sizeof(struct DONAU_BlindedDonationUnitSignature)
+                               * birh->num_blinded_sigs);
+    struct DONAU_BlindedDonationUnitSignature du_sigs[birh->num_blinded_sigs];
+    size_t index;
+    json_t *du_sig_obj;
+    json_array_foreach (j_blind_signatures,
+                        index,
+                        du_sig_obj)
+    {
+      struct GNUNET_JSON_Specification spec[] = {
+        DONAU_JSON_spec_blinded_donation_unit_sig ("blinded_signature",
+                                                   
&biresp->details.ok.blinded_sigs[index]),
+        GNUNET_JSON_spec_end ()
+      };
+      if (GNUNET_OK !=
+          GNUNET_JSON_parse (du_sig_obj,
+                             spec,
+                             NULL,
+                             NULL))
+      {
+        GNUNET_break_op (0);
+        for (size_t i = 0; i<index; i++)
+          DONAU_blinded_donation_unit_sig_free (&du_sigs[i]);
+        return GNUNET_SYSERR;
+      }
+//      GNUNET_memcpy(&biresp->details.ok.blinded_sigs[index], &du_sigs[index],
+//               sizeof(struct DONAU_BlindedDonationUnitSignature));
+    }
+
+  //}
   birh->cb (birh->cb_cls,
-                 biresp);
+            biresp);
   birh->cb = NULL;
   return GNUNET_OK;
 }
@@ -213,25 +230,25 @@ handle_batch_issue_finished (void *cls,
   switch (response_code)
   {
   case MHD_HTTP_CREATED:
-       if (GNUNET_OK !=
-               handle_batch_issue_ok (j,
-                                                          birh,
-                                                          &biresp))
-       {
-         biresp.hr.http_status = 0;
-         biresp.hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
-       }
+    if (GNUNET_OK !=
+        handle_batch_issue_ok (j,
+                               birh,
+                               &biresp))
+    {
+      biresp.hr.http_status = 0;
+      biresp.hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
+    }
     break;
   case MHD_HTTP_NO_CONTENT:
     biresp.hr.ec = TALER_JSON_get_error_code (j);
     biresp.hr.hint = TALER_JSON_get_error_hint (j);
     break;
-    //invalid charity signature
+  // invalid charity signature
   case MHD_HTTP_FORBIDDEN:
     biresp.hr.ec = TALER_JSON_get_error_code (j);
     biresp.hr.hint = TALER_JSON_get_error_hint (j);
     break;
-    //one or more donation units are not known to the Donau
+  // one or more donation units are not known to the Donau
   case MHD_HTTP_NOT_FOUND:
     biresp.hr.ec = TALER_JSON_get_error_code (j);
     biresp.hr.hint = TALER_JSON_get_error_hint (j);
@@ -240,12 +257,12 @@ handle_batch_issue_finished (void *cls,
     biresp.hr.ec = TALER_JSON_get_error_code (j);
     biresp.hr.hint = TALER_JSON_get_error_hint (j);
     break;
-    //Donation limit is not sufficent
+  // Donation limit is not sufficent
   case MHD_HTTP_CONFLICT:
     biresp.hr.ec = TALER_JSON_get_error_code (j);
     biresp.hr.hint = TALER_JSON_get_error_hint (j);
     break;
-    // donation unit key is no longer valid
+  // donation unit key is no longer valid
   case MHD_HTTP_GONE:
     biresp.hr.ec = TALER_JSON_get_error_code (j);
     biresp.hr.hint = TALER_JSON_get_error_hint (j);
@@ -286,6 +303,7 @@ DONAU_charity_issue_receipt (
 {
   struct DONAU_BatchIssueReceiptHandle *birh;
   birh = GNUNET_new (struct DONAU_BatchIssueReceiptHandle);
+  birh->num_blinded_sigs = num_bkp;
   CURL *eh;
   json_t *body;
 
diff --git a/src/testing/testing_api_cmd_issue_receipts.c 
b/src/testing/testing_api_cmd_issue_receipts.c
index c442c0e..3c92278 100644
--- a/src/testing/testing_api_cmd_issue_receipts.c
+++ b/src/testing/testing_api_cmd_issue_receipts.c
@@ -115,7 +115,9 @@ issue_receipts_status_cb (void *cls,
     TALER_TESTING_interpreter_fail (ss->is);
     return;
   }
+  //struct DONAU_BlindedDonationUnitSignature *blinded_sigs = 
biresp->details.ok.blinded_sigs;
 
+  //GNUNET_free (blinded_sigs);
   TALER_TESTING_interpreter_next (ss->is);
 }
 
@@ -236,6 +238,7 @@ cleanup (void *cls,
     DONAU_charity_issue_receipt_cancel (ss->birh);
     ss->birh = NULL;
   }
+
 //  if (NULL != revealed_coins)
 //  {
 //    for (unsigned int cnt = 0; cnt < MELT_NEW_COINS; cnt++)

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