gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: [donau] work on issue receitps blin


From: gnunet
Subject: [taler-donau] branch master updated: [donau] work on issue receitps blind signatures
Date: Wed, 20 Mar 2024 10:28:54 +0100

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 71f81b7  [donau] work on issue receitps blind signatures
71f81b7 is described below

commit 71f81b737c12268d3b58a281182678b86bc7e90c
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
AuthorDate: Wed Mar 20 10:29:32 2024 +0100

    [donau] work on issue receitps blind signatures
---
 src/donau/donau-httpd_post-batch-issue.c | 137 +++++++++++--------------------
 1 file changed, 48 insertions(+), 89 deletions(-)

diff --git a/src/donau/donau-httpd_post-batch-issue.c 
b/src/donau/donau-httpd_post-batch-issue.c
index fa709c6..0a2efcf 100644
--- a/src/donau/donau-httpd_post-batch-issue.c
+++ b/src/donau/donau-httpd_post-batch-issue.c
@@ -15,7 +15,7 @@
 */
 /**
  * @file donau-httpd_post-batch-issue.c
- * @brief Handle request to insert a charity.
+ * @brief Handle request to issue receipts.
  * @author Lukas Matyja
  */
 #include <taler/platform.h>
@@ -34,7 +34,7 @@
 
 
 /**
- * Closure for #insert_charity()
+ * Closure for #issue_receipts()
  */
 struct IssueReceiptsContext
 {
@@ -75,53 +75,6 @@ parse_json_bkp (struct 
DONAU_BlindedUniqueDonationIdentifierKeyPair *bkp,
   return GNUNET_OK;
 }
 
-/**
- * Function implementing insert charity transaction.
- *
- * Runs the transaction logic; IF it returns a non-error code, the
- * transaction logic MUST NOT queue a MHD response.  IF it returns an hard
- * error, the transaction logic MUST queue a MHD response and set @a mhd_ret.
- * IF it returns the soft error code, the function MAY be called again to
- * retry and MUST not queue a MHD response.
- *
- * @param cls closure with a `struct InsertCharityContext`
- * @param connection MHD request which triggered the transaction
- * @param[out] mhd_ret set to MHD response status for @a connection,
- *             if transaction failed (!)
- * @return transaction status
- */
-//static enum GNUNET_DB_QueryStatus
-//issue_receipts (void *cls,
-//                struct MHD_Connection *connection,
-//                MHD_RESULT *mhd_ret)
-//{
-//  struct InsertCharityContext *icc = cls;
-//  enum GNUNET_DB_QueryStatus qs;
-//
-//  qs = DH_plugin->insert_charity (DH_plugin->cls,
-//                                  &icc->charity_pub,
-//                                  icc->charity_name,
-//                                  icc->charity_url,
-//                                  &icc->max_per_year,
-//                                  &icc->receipts_to_date,
-//                                  &icc->current_year,
-//                                                               
&icc->charity_id);
-//  if (qs <= 0)
-//  {
-//    if (GNUNET_DB_STATUS_SOFT_ERROR != qs)
-//    {
-//      GNUNET_break (0);
-//      *mhd_ret = TALER_MHD_reply_with_error (connection,
-//                                             MHD_HTTP_INTERNAL_SERVER_ERROR,
-//                                             
TALER_EC_GENERIC_DB_STORE_FAILED,
-//                                             "insert_charity");
-//      return GNUNET_DB_STATUS_HARD_ERROR;
-//    }
-//    return qs;
-//  }
-//
-//  return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
-//}
 
 
 MHD_RESULT
@@ -129,6 +82,9 @@ DH_handler_issue_receipts_post (struct DH_RequestContext *rc,
                                         const json_t *root,
                                                                 const char 
*const args[1])
 {
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                         "issue receipts request! \n");
+
   unsigned long long charity_id;
   char dummy;
 
@@ -176,6 +132,8 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
     }
   }
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                         "parse some values!");
   /* parse the budikeypairs array */
   const uint64_t num_bkp
     = json_array_size (budikeypairs);
@@ -197,12 +155,16 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
     }
     irc.bkp = bkp;
   } else {
+         GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                                 "empty array of budi key pairs!");
            return TALER_MHD_reply_with_error (rc->connection,
                                               MHD_HTTP_BAD_REQUEST,
                                               
TALER_EC_GENERIC_PARAMETER_MALFORMED,
                                               "budikeypairs");
   }
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                         "budi key pairs array is parsed!");
   // Get charity pub
   struct DONAUDB_CharityMetaData charity_meta;
   enum GNUNET_DB_QueryStatus qs_charity;
@@ -230,6 +192,8 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
         break;
    }
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                         "got charity from db!");
   /* verify charity signature */
   if (GNUNET_OK !=
                  DONAU_charity_budi_key_pair_verify(num_bkp, &irc.bkp,
@@ -244,6 +208,8 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
          NULL);
   }
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                         "charity signature valid!");
   /* request already made? -> idempotent */
   enum GNUNET_DB_QueryStatus qs_check_receipts;
   struct DONAUDB_IssuedReceiptsMetaData check_receipts_meta;
@@ -265,55 +231,48 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
                                                                           
TALER_EC_GENERIC_DB_FETCH_FAILED,
                                                                           
NULL);
   case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
+         GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                                 "request have not been made yet (first 
time)!");
        break; // it's the first request from the charity, we can proceed
   case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+         GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                                 "request have been made already!");
          // A request was already made. We do not change the annual limit
        break;
   }
   /* check annual limit and change it -> Rollback if we could not save the 
request*/
   /* save Request (charity signature, charity id, amount, hash over bkps) and 
make it idempotent*/
   /* sign budis and send the signatures back */
+  int i = 0;
+  json_t *blind_signatures;
+  blind_signatures = json_array ();
+  while (i < num_bkp) {
+         struct DONAU_BlindedDonationUnitSignature du_sig;
+         // TODO: get donation unit private key
+         const struct DONAU_DonationUnitPrivateKey du_priv;
+         const struct DONAU_BlindedUniqueDonationIdentifier budi = 
irc.bkp[i].blinded_udi;
+         if (GNUNET_SYSERR == TALER_donation_unit_sign_blinded(&du_sig, 
&du_priv, &budi)) {
+                       GNUNET_break (0);
+                       return TALER_MHD_reply_with_error (rc->connection,
+                                                                               
           MHD_HTTP_INTERNAL_SERVER_ERROR,
+                                                                               
           TALER_EC_GENERIC_DB_FETCH_FAILED,
+                                                                               
           NULL);
+         }
+         GNUNET_assert (
+           0 == json_array_append (
+             blind_signatures,
+             GNUNET_JSON_PACK (
+               GNUNET_JSON_pack_data_auto ("du_sig",
+                                           &du_sig))));
+  }
 
-//  {
-//    MHD_RESULT mhd_ret;
-//
-//    if (GNUNET_OK !=
-//        DH_DB_run_transaction (rc->connection,
-//                               "issue_receipts",
-//                               DH_MT_REQUEST_OTHER,
-//                               &mhd_ret,
-//                               &issue_receipts,
-//                               &irc))
-//    {
-//      return mhd_ret;
-//    }
-//  }
-//
-//  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-//                       "receipts were successfully issued\n");
-//
-//  result = TALER_MHD_REPLY_JSON_PACK (
-//    rc->connection,
-//    MHD_HTTP_OK,
-//    GNUNET_JSON_pack_data_auto ("charity_pub",
-//                                &meta.charity_pub),
-//    GNUNET_JSON_pack_string ("url",
-//                             meta.charity_url),
-//    GNUNET_JSON_pack_string ("name",
-//                             meta.charity_name),
-//    TALER_JSON_pack_amount ("max_per_year",
-//                            &meta.max_per_year),
-//    TALER_JSON_pack_amount ("receipts_to_date",
-//                            &meta.receipts_to_date),
-//    GNUNET_JSON_pack_uint64 ("current_year",
-//                             meta.current_year));
-
-
-  return TALER_MHD_reply_with_error (
-       rc->connection,
-       MHD_HTTP_NOT_FOUND,
-       TALER_EC_DONAU_CHARITY_NOT_FOUND,
-       NULL);
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                         "made blind signatures!");
+  return TALER_MHD_REPLY_JSON_PACK (
+    rc->connection,
+       MHD_HTTP_OK,
+    GNUNET_JSON_pack_array_steal ("blind_signatures",
+                                                       blind_signatures));
 }
 
 

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