summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasaburi Johannes <johannes.casaburi@students.bfh.ch>2024-04-28 14:47:52 +0200
committerCasaburi Johannes <johannes.casaburi@students.bfh.ch>2024-04-28 14:47:52 +0200
commita1db20bd9e9415bb1817cbfd9867b49cb930e3d1 (patch)
treee60902013f90904b90ddea7bc0f982150a68e082
parent05360b030ac3c2b4333da6b1c6b5602c41dbc264 (diff)
downloaddonau-a1db20bd9e9415bb1817cbfd9867b49cb930e3d1.tar.gz
donau-a1db20bd9e9415bb1817cbfd9867b49cb930e3d1.tar.bz2
donau-a1db20bd9e9415bb1817cbfd9867b49cb930e3d1.zip
added dr verify
-rw-r--r--src/donau/donau-httpd_batch-submit.c23
-rw-r--r--src/donau/donau-httpd_keys.c4
-rw-r--r--src/donaudb/pg_insert_submitted_receipts.c4
-rw-r--r--src/donaudb/pg_insert_submitted_receipts.h4
-rw-r--r--src/donaudb/test_donaudb.c6
-rw-r--r--src/include/donau_crypto_lib.h21
-rw-r--r--src/include/donau_service.h6
-rw-r--r--src/include/donaudb_plugin.h4
-rw-r--r--src/lib/donau_api_batch_submit_receipts.c12
-rw-r--r--src/util/donau_crypto.c13
10 files changed, 52 insertions, 45 deletions
diff --git a/src/donau/donau-httpd_batch-submit.c b/src/donau/donau-httpd_batch-submit.c
index 3348ea6..681f25a 100644
--- a/src/donau/donau-httpd_batch-submit.c
+++ b/src/donau/donau-httpd_batch-submit.c
@@ -38,7 +38,7 @@
*/
struct InsertReceiptContext
{
- struct DONAU_HashDonorTaxId *h_tax_number;
+ struct DONAU_HashDonorTaxId *h_donor_tax_id;
struct DONAU_DonationReceipt *donation_receipts;
uint64_t donation_year;
};
@@ -87,8 +87,8 @@ DH_handler_submit_receipts_post (struct DH_RequestContext *rc,
const json_t *donation_receipts;
struct GNUNET_JSON_Specification spec[] = {
- GNUNET_JSON_spec_fixed_auto ("h_tax_number",
- &irc.h_tax_number),
+ GNUNET_JSON_spec_fixed_auto ("h_donor_tax_id",
+ &irc.h_donor_tax_id),
GNUNET_JSON_spec_array_const ("donation_receipts",
&donation_receipts),
GNUNET_JSON_spec_uint64 ("donation_year",
@@ -161,27 +161,14 @@ DH_handler_submit_receipts_post (struct DH_RequestContext *rc,
for (size_t i = 0; i < num_dr; i++)
{
// FIXME Check sigs, Donation unit hashes, nonce
- // /* verify charity signature */
- // if (GNUNET_OK !=
- // DONAU_ (num_bkps,
- // bkps,
- // &charity_meta.charity_pub,
- // &charity_sig))
- // {
- // GNUNET_break_op (0);
- // return TALER_MHD_reply_with_error (
- // rc->connection,
- // MHD_HTTP_FORBIDDEN,
- // TALER_EC_DONAU_CHARITY_SIGNATURE_INVALID,
- // NULL);
- // }
+
}
enum GNUNET_DB_QueryStatus qs;
qs = DH_plugin->insert_submitted_receipts (
DH_plugin->cls,
- irc.h_tax_number,
+ irc.h_donor_tax_id,
num_dr,
irc.donation_receipts,
irc.donation_year);
diff --git a/src/donau/donau-httpd_keys.c b/src/donau/donau-httpd_keys.c
index 0416544..ab99441 100644
--- a/src/donau/donau-httpd_keys.c
+++ b/src/donau/donau-httpd_keys.c
@@ -1253,8 +1253,6 @@ DH_keys_donau_sign_ (
.eddsa_signature = sig->eddsa_sig
};
- // FIXME NEEDED?
- // TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_EDDSA]++;
ec = TALER_CRYPTO_helper_esign_sign_ (esh,
purpose,
&donau_pub,
@@ -1380,7 +1378,6 @@ DH_keys_donation_unit_batch_sign (
}
return ec;
}
- // TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_CS] += csrs_pos;
}
if (0 != rsrs_pos)
{
@@ -1409,7 +1406,6 @@ DH_keys_donation_unit_batch_sign (
}
return ec;
}
- // TEH_METRICS_num_signatures[TEH_MT_SIGNATURE_RSA] += rsrs_pos;
}
rsrs_pos = 0;
diff --git a/src/donaudb/pg_insert_submitted_receipts.c b/src/donaudb/pg_insert_submitted_receipts.c
index 0bb21ae..06cb40e 100644
--- a/src/donaudb/pg_insert_submitted_receipts.c
+++ b/src/donaudb/pg_insert_submitted_receipts.c
@@ -29,7 +29,7 @@
enum GNUNET_DB_QueryStatus
DH_PG_insert_submitted_receipts (
void *cls,
- struct DONAU_HashDonorTaxId *h_tax_number,
+ struct DONAU_HashDonorTaxId *h_donor_tax_id,
size_t num_dr,
const struct DONAU_DonationReceipt donation_receipts[static num_dr],
uint64_t donation_year)
@@ -41,7 +41,7 @@ DH_PG_insert_submitted_receipts (
const struct DONAU_DonationUnitSignature *donation_unit_sigs[GNUNET_NZL (
num_dr)];
struct GNUNET_PQ_QueryParam params[] = {
- GNUNET_PQ_query_param_auto_from_type (h_tax_number),
+ GNUNET_PQ_query_param_auto_from_type (h_donor_tax_id),
GNUNET_PQ_query_param_array_ptrs_auto_from_type (num_dr,
h_donation_unit_pubs,
pg->conn),
diff --git a/src/donaudb/pg_insert_submitted_receipts.h b/src/donaudb/pg_insert_submitted_receipts.h
index b5ac61e..630a1fe 100644
--- a/src/donaudb/pg_insert_submitted_receipts.h
+++ b/src/donaudb/pg_insert_submitted_receipts.h
@@ -30,7 +30,7 @@
* Insert submitted donation receipt from the donor.
*
* @param cls closure
- * @param h_tax_number salted hash of the donors tax number
+ * @param h_donor_tax_id salted hash of the donors tax number
* @param donation_receipts array of donation receipts
* @param donation_year year of the donation
* @return transaction status code
@@ -38,7 +38,7 @@
enum GNUNET_DB_QueryStatus
DH_PG_insert_submitted_receipts (
void *cls,
- struct DONAU_HashDonorTaxId *h_tax_number,
+ struct DONAU_HashDonorTaxId *h_donor_tax_id,
size_t num_dr,
const struct DONAU_DonationReceipt donation_receipts[static num_dr],
uint64_t donation_year
diff --git a/src/donaudb/test_donaudb.c b/src/donaudb/test_donaudb.c
index 76b2e7c..e049262 100644
--- a/src/donaudb/test_donaudb.c
+++ b/src/donaudb/test_donaudb.c
@@ -168,7 +168,7 @@ run (void *cls)
struct DONAUDB_IssuedReceiptsMetaData ir_meta;
// Submitted receipts information
- struct DONAU_HashDonorTaxId h_tax_number;
+ struct DONAU_HashDonorTaxId h_donor_tax_id;
size_t num_dr = 1;
struct DONAU_DonationReceipt donation_receipts[num_dr];
@@ -307,13 +307,13 @@ run (void *cls)
// &ir_meta));
/* test insert submitted receipts */
- // RND_BLK (&h_tax_number);
+ // RND_BLK (&h_donor_tax_id);
// RND_BLK (&donation_receipts[0].h_donation_unit_pub);
// RND_BLK (&donation_receipts[0].nonce);
// RND_BLK (&donation_receipts[0].donau_sig);
// FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
// plugin->insert_submitted_receipts (plugin->cls,
- // &h_tax_number,
+ // &h_donor_tax_id,
// num_dr,
// donation_receipts,
// current_year));
diff --git a/src/include/donau_crypto_lib.h b/src/include/donau_crypto_lib.h
index 7ded811..040f9f9 100644
--- a/src/include/donau_crypto_lib.h
+++ b/src/include/donau_crypto_lib.h
@@ -322,7 +322,8 @@ struct DONAU_BkpSignData
*/
const struct DONAU_BlindedUniqueDonorIdentifier *budi;
};
-/**
+
+/** USED?
* Hash of a budikeypair array
*/
// struct DONAU_BudiKeyPairsHashP
@@ -330,10 +331,18 @@ struct DONAU_BkpSignData
// struct GNUNET_HashCode hash;
// };
-/**
+/** USED?
* Hash of a budikeypair array
*/
-struct DONAU_BudiHashP
+// struct DONAU_BudiHashP
+// {
+// struct GNUNET_HashCode hash;
+// };
+
+/**
+ * Hash of a Unique Donor Identifier (h_donor_tax_id + nonce)
+ */
+struct DONAU_UniqueDonorIdentifierHashP
{
struct GNUNET_HashCode hash;
};
@@ -419,13 +428,15 @@ DONAU_donation_statement_verify (
/**
* Verify donation receipt.
*
- * @param donation_unit_priv private key of the donation_unit
+ * @param donation_unit_pub public key of the donation_unit
+ * @param h_udi hash of h_donor_tax_id + nonce
* @param donation_unit_sig signature to verify
* @return #GNUNET_OK if the signature is valid
*/
enum GNUNET_GenericReturnValue
DONAU_donation_receipt_verify (
- const struct DONAU_DonationReceipt *donation_receipt,
+ const struct DONAU_DonationUnitPublicKey *donation_unit_pub,
+ const struct DONAU_UniqueDonorIdentifierHashP *h_udi,
const struct DONAU_DonationUnitSignature *donation_unit_sig);
diff --git a/src/include/donau_service.h b/src/include/donau_service.h
index 7701f30..dfd24ea 100644
--- a/src/include/donau_service.h
+++ b/src/include/donau_service.h
@@ -476,7 +476,7 @@ struct DONAU_BatchIssueResponse
struct DONAU_BlindedDonationUnitSignature *donau_sigs;
/**
- * total issued amount over all donation receipts of a donation specified
+ * total issued amount over all donation receipts of a donation specified
* by the request (confirmation).
*/
struct TALER_Amount issued_amount;
@@ -642,7 +642,7 @@ typedef void
* @param num_drs length of the @a drs array
* @param drs array with details about the donation receipts
* @param year corresponding year
- * @param h_tax_id salted and hashed tax id
+ * @param h_donor_tax_id salted and hashed tax id
* @param cb the callback to call when a reply for this request is available
* @param cls closure for the above callback
* @param[out] ec if NULL is returned, set to the error code explaining why the operation failed
@@ -656,7 +656,7 @@ DONAU_donor_receipts_to_statement (
const size_t num_drs,
const struct DONAU_DonationReceipt drs[num_drs],
const uint64_t year,
- const struct DONAU_HashDonorTaxId *h_tax_id,
+ const struct DONAU_HashDonorTaxId *h_donor_tax_id,
DONAU_DonorReceiptsToStatementResultCallback cb,
void *cls);
diff --git a/src/include/donaudb_plugin.h b/src/include/donaudb_plugin.h
index cda587d..e885399 100644
--- a/src/include/donaudb_plugin.h
+++ b/src/include/donaudb_plugin.h
@@ -519,7 +519,7 @@ struct DONAUDB_Plugin
* Insert submitted donation receipt from the donor.
*
* @param cls closure
- * @param h_tax_number salted hash of the donors tax number
+ * @param h_donor_tax_id salted hash of the donors tax number
* @param nonce nonce that is part of the unique donation identifier
* @param donation_unit_pub donation unit public key
* @param donau_sig donau signature in case the sign keys changed
@@ -529,7 +529,7 @@ struct DONAUDB_Plugin
enum GNUNET_DB_QueryStatus
(*insert_submitted_receipts)(
void *cls,
- struct DONAU_HashDonorTaxId *h_tax_number,
+ struct DONAU_HashDonorTaxId *h_donor_tax_id,
size_t num_dr,
const struct DONAU_DonationReceipt donation_receipts[static num_dr],
uint64_t donation_year);
diff --git a/src/lib/donau_api_batch_submit_receipts.c b/src/lib/donau_api_batch_submit_receipts.c
index 12bbb89..d036798 100644
--- a/src/lib/donau_api_batch_submit_receipts.c
+++ b/src/lib/donau_api_batch_submit_receipts.c
@@ -79,14 +79,14 @@ struct DONAU_DonorReceiptsToStatementHandle
* @param num_drs number of donation receipts in @drs
* @param drs donation receipts array
* @param year corresponding year
- * @param h_tax_id salted and hashed tax id
+ * @param h_donor_tax_id salted and hashed tax id
*/
json_t *
submit_request_body_to_json (const size_t num_drs,
const struct
DONAU_DonationReceipt drs[num_drs],
const uint64_t year,
- const struct DONAU_HashDonorTaxId *h_tax_id)
+ const struct DONAU_HashDonorTaxId *h_donor_tax_id)
{
json_t *donation_receipts = json_array ();
GNUNET_assert (NULL != donation_receipts);
@@ -107,8 +107,8 @@ submit_request_body_to_json (const size_t num_drs,
return GNUNET_JSON_PACK (
GNUNET_JSON_pack_array_steal ("donation_receipts",
donation_receipts),
- GNUNET_JSON_pack_data_auto ("h_tax_number",
- h_tax_id),
+ GNUNET_JSON_pack_data_auto ("h_donor_tax_id",
+ h_donor_tax_id),
GNUNET_JSON_pack_uint64 ("donation_year",
year));
}
@@ -185,7 +185,7 @@ DONAU_donor_receipts_to_statement (
const size_t num_drs,
const struct DONAU_DonationReceipt drs[num_drs],
const uint64_t year,
- const struct DONAU_HashDonorTaxId *h_tax_id,
+ const struct DONAU_HashDonorTaxId *h_donor_tax_id,
DONAU_DonorReceiptsToStatementResultCallback cb,
void *cls)
{
@@ -213,7 +213,7 @@ DONAU_donor_receipts_to_statement (
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"submit_receipts_with_URL `%s'.\n",
birh->url);
- body = submit_request_body_to_json (num_drs, drs, year, h_tax_id);
+ body = submit_request_body_to_json (num_drs, drs, year, h_donor_tax_id);
eh = DONAU_curl_easy_get_ (birh->url);
if ( (NULL == eh) ||
(GNUNET_OK !=
diff --git a/src/util/donau_crypto.c b/src/util/donau_crypto.c
index fd12c41..a57d4fc 100644
--- a/src/util/donau_crypto.c
+++ b/src/util/donau_crypto.c
@@ -136,3 +136,16 @@ DONAU_donation_unit_pub_hash (
GNUNET_assert (0);
}
}
+
+
+enum GNUNET_GenericReturnValue
+DONAU_donation_receipt_verify (
+ const struct DONAU_DonationUnitPublicKey *donation_unit_pub,
+ const struct DONAU_UniqueDonorIdentifierHashP *h_udi,
+ const struct DONAU_DonationUnitSignature *donation_unit_sig)
+{
+ return GNUNET_CRYPTO_blind_sig_verify (donation_unit_pub->bsign_pub_key,
+ donation_unit_sig->unblinded_sig,
+ h_udi,
+ sizeof (*h_udi));
+} \ No newline at end of file