commit 11aea1a7977dceda58a1b8906f812e202dcbb055
parent 8af16247e16ed628391ead3ac53fee938fd824bf
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
Date: Fri, 12 Apr 2024 16:21:17 +0200
[donaudb] work on insert issued receipt
Diffstat:
7 files changed, 50 insertions(+), 43 deletions(-)
diff --git a/src/donau/donau-httpd_keys.c b/src/donau/donau-httpd_keys.c
@@ -1443,4 +1443,5 @@ DH_keys_donation_unit_by_hash (
return dk;
}
+
/* end of donau-httpd_keys.c */
diff --git a/src/donau/donau-httpd_keys.h b/src/donau/donau-httpd_keys.h
@@ -114,7 +114,7 @@ DH_keys_donau_sign_ (
* @return #TALER_EC_NONE on success
*/
#define DH_keys_donau_sign(ps,pub,sig) \
- ({ \
+ ({ \
/* check size is set correctly */ \
GNUNET_assert (htonl ((ps)->purpose.size) == \
sizeof (*ps)); \
diff --git a/src/donau/donau-httpd_post-batch-issue.c b/src/donau/donau-httpd_post-batch-issue.c
@@ -339,8 +339,10 @@ start:
&charity_meta.receipts_to_date);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"new_receipts_to_date: %lu.%u, receipts_sum: %lu.%u, charity_max_per_year: %lu.%u\n",
- new_receipts_to_date.value, new_receipts_to_date.fraction, receipts_sum.value,
- receipts_sum.fraction, charity_meta.max_per_year.value, charity_meta.max_per_year.fraction);
+ new_receipts_to_date.value, new_receipts_to_date.fraction,
+ receipts_sum.value,
+ receipts_sum.fraction, charity_meta.max_per_year.value,
+ charity_meta.max_per_year.fraction);
// new_receipts_to_date has to be smaller or equal as max_per_year
if (0 < TALER_amount_cmp (&new_receipts_to_date, &charity_meta.max_per_year))
return TALER_MHD_reply_with_error (rc->connection,
@@ -354,15 +356,17 @@ start:
struct DONAU_BlindedDonationUnitSignature du_sigs[num_bkp];
struct BUDIKeyPair_sign_data bkps_sign_data[num_bkp];
- for (int i = 0; i < num_bkp; i++) {
- bkps_sign_data[i].h_donation_unit_pub = &irc.bkp[i].h_donation_unit_pub;
- bkps_sign_data[i].budi = &irc.bkp[i].blinded_udi;
+ for (int i = 0; i < num_bkp; i++)
+ {
+ bkps_sign_data[i].h_donation_unit_pub = &irc.bkp[i].h_donation_unit_pub;
+ bkps_sign_data[i].budi = &irc.bkp[i].blinded_udi;
}
- if (TALER_EC_NONE != DH_keys_donation_batch_sign (num_bkp, bkps_sign_data, du_sigs))
- return TALER_MHD_reply_with_error (rc->connection,
- MHD_HTTP_INTERNAL_SERVER_ERROR,
- TALER_EC_GENERIC_DB_FETCH_FAILED, // TODO:other EC
- NULL);
+ if (TALER_EC_NONE != DH_keys_donation_batch_sign (num_bkp, bkps_sign_data,
+ du_sigs))
+ return TALER_MHD_reply_with_error (rc->connection,
+ MHD_HTTP_INTERNAL_SERVER_ERROR,
+ TALER_EC_GENERIC_DB_FETCH_FAILED, // TODO:other EC
+ NULL);
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"made blind signatures!\n");
/* save new receipts to date and save receipts Request (blinded signatures,
diff --git a/src/donaudb/0002-donau_receipts_issued.sql b/src/donaudb/0002-donau_receipts_issued.sql
@@ -30,8 +30,8 @@ COMMENT ON COLUMN receipts_issued.receipt_hash
CREATE FUNCTION transaction_save_issue_receipts_request(
- IN blinded_sig BYTEA[] -- blinded signatures
- ,IN charity_id BIGINT -- charity id which made the issue receitps request
+ IN charity_id BIGINT -- charity id which made the issue receitps request
+ ,IN blinded_sig BYTEA[] -- blinded signatures
,IN receipt_hash BYTEA -- hash over all budi key pairs (primary key)
,IN amount taler_amount -- total amount of the requested receipts
,IN new_total_amount taler_amount -- new total amount of a charity
diff --git a/src/donaudb/pg_insert_issued_receipt.c b/src/donaudb/pg_insert_issued_receipt.c
@@ -33,19 +33,22 @@ enum GNUNET_DB_QueryStatus
DH_PG_insert_issued_receipt (void *cls,
const size_t num_blinded_sig,
const struct
- DONAU_BlindedDonationUnitSignature *signatures,
+ DONAU_BlindedDonationUnitSignature signatures[num_blinded_sig],
const uint64_t charity_id,
const struct DONAU_DonationReceiptHashP *h_receipt,
const struct TALER_Amount *amount_receipts_request,
const struct TALER_Amount *charity_new_amount)
{
struct PostgresClosure *pc = cls;
- enum GNUNET_GenericReturnValue ret = GNUNET_OK;
- // struct GNUNET_PQ_Context *conn;
+
+ struct GNUNET_PQ_ResultSpec rs[] = {
+ GNUNET_PQ_result_spec_end
+ };
+
struct GNUNET_PQ_QueryParam params[] = {
- DONAU_PQ_query_param_array_blinded_donation_unit_sig (num_blinded_sig,
- signatures, pc->conn),
GNUNET_PQ_query_param_uint64 (&charity_id),
+ DONAU_PQ_query_param_array_blinded_donation_unit_sig (num_blinded_sig,
+ signatures, pc->conn),
GNUNET_PQ_query_param_fixed_size (&h_receipt->hash, sizeof(struct
DONAU_DonationReceiptHashP)),
TALER_PQ_query_param_amount_with_currency (pc->conn,
@@ -53,27 +56,22 @@ DH_PG_insert_issued_receipt (void *cls,
TALER_PQ_query_param_amount_with_currency (pc->conn, charity_new_amount),
GNUNET_PQ_query_param_end
};
+
+ enum GNUNET_DB_QueryStatus qs;
+
PREPARE (pc,
- "donation_unit_insert",
- "SELECT"
- " receipts_issued.transaction_update_current_amount_receipts_save_issue_receipts_request"
- " ($1, $2, $3, $4, $5);");
- if (0 >
- GNUNET_PQ_eval_prepared_non_select (pc->conn,
- "transaction_update_current_amount_receipts_save_issue_receipts_request",
- params))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Failed to run 'transaction_update_current_amount_receipts_save_issue_receipts_request' prepared statement\n");
- ret = GNUNET_SYSERR;
- }
- if (GNUNET_OK == ret)
- {
- ret = GNUNET_PQ_exec_sql (pc->conn,
- "procedures");
- if (GNUNET_OK != ret)
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
- "Failed to load stored procedures\n");
- }
- return ret;
+ "insert_issued_receipts_request",
+ "SELECT"
+ " transaction_save_issue_receipts_request"
+ " ($1,$2,$3,$4,$5);");
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "pg: insert issued receipt. Number of paramameters: %ld\n", (sizeof(params) / sizeof(params[0])));
+
+ qs = GNUNET_PQ_eval_prepared_singleton_select (pc->conn,
+ "insert_issued_receipts_request",
+ params,
+ rs);
+ GNUNET_PQ_cleanup_query_params_closures (params);
+ return qs;
}
diff --git a/src/donaudb/pg_insert_issued_receipt.h b/src/donaudb/pg_insert_issued_receipt.h
@@ -41,7 +41,7 @@ enum GNUNET_DB_QueryStatus
DH_PG_insert_issued_receipt (void *cls,
const size_t num_blinded_sig,
const struct
- DONAU_BlindedDonationUnitSignature *signatures,
+ DONAU_BlindedDonationUnitSignature signatures[num_blinded_sig],
const uint64_t charity_id,
const struct DONAU_DonationReceiptHashP *h_receipt,
const struct TALER_Amount *amount_receipts_request,
diff --git a/src/pq/pq_query_helper.c b/src/pq/pq_query_helper.c
@@ -360,7 +360,10 @@ qconv_array (
len = sizeof (bs->details.blinded_cs_answer);
break;
default:
- GNUNET_assert (0);
+ //FIXME (set to zero)
+ GNUNET_assert (1);
+ len = 0;
+ break;
}
/* for the cipher and marker */
@@ -505,7 +508,8 @@ qconv_array (
sz);
break;
default:
- GNUNET_assert (0);
+ //FIXME (set to zero)
+ GNUNET_assert (1);
}
// break;
// }