commit f3c49a7c9488e3ff9ce46c184052659c02f01905
parent a8ddc7bd0ece92d7387554c452b65f7fec0ac408
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
Date: Sun, 9 Jun 2024 01:19:42 +0200
loop eddsa keys
Diffstat:
2 files changed, 50 insertions(+), 21 deletions(-)
diff --git a/src/donau/donau-httpd_donation-statement.c b/src/donau/donau-httpd_donation-statement.c
@@ -97,13 +97,13 @@ DH_handler_donation_statement_get (
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
enum TALER_ErrorCode ec;
ec = DONAU_donation_statement_sign (
- &DH_keys_donau_sign_,
- &total_donations,
- donation_year,
- &h_donor_tax_id,
- &donau_pub,
- &donau_sig);
-
+ &DH_keys_donau_sign_,
+ &total_donations,
+ donation_year,
+ &h_donor_tax_id,
+ &donau_pub,
+ &donau_sig);
+
if (TALER_EC_NONE != ec)
{
GNUNET_break (0);
diff --git a/src/testing/testing_api_cmd_donation_statement_get.c b/src/testing/testing_api_cmd_donation_statement_get.c
@@ -54,6 +54,11 @@ struct StatusState
*/
struct DONAU_DonationStatement donation_statement;
+ /**
+ * The Donau keys
+ */
+ struct DONAU_Keys *keys;
+
};
/**
@@ -83,24 +88,48 @@ donation_statement_status_cb (void *cls,
TALER_TESTING_interpreter_fail (ss->is);
return;
}
+
+ /* Get donau keys from trait */
+ {
+ const struct TALER_TESTING_Command *keys_cmd;
+ struct DONAU_Keys *keys;
+
+ keys_cmd = TALER_TESTING_interpreter_lookup_command (ss->is,
+ "get-donau");
+
+ if (GNUNET_OK !=
+ TALER_TESTING_get_trait_donau_keys (keys_cmd, &keys))
+ {
+ GNUNET_break (0);
+ TALER_TESTING_interpreter_fail (ss->is);
+ return;
+ }
+ ss->keys = keys;
+ }
+
ss->donation_statement.total_amount = dsr->details.ok.total_amount;
ss->donation_statement.donation_statement_sig =
dsr->details.ok.donation_statement_sig;
- if (GNUNET_OK != DONAU_donation_statement_verify (
- &ss->donation_statement.total_amount,
- ss->donation_statement.year,
- ss->donation_statement.
- h_donor_tax_id,
- &dsr->details.ok.donau_pub,
- &ss->donation_statement.
- donation_statement_sig))
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Verify donation statement signature failed!");
- TALER_TESTING_interpreter_fail (ss->is);
- return;
+
+ //FIXME: check the authenticity of the eddsa key (existence in ss->keys)
+ for (unsigned int i = 0; i < ss->keys->num_sign_keys; i++) {
+ if (GNUNET_OK == DONAU_donation_statement_verify (
+ &ss->donation_statement.total_amount,
+ ss->donation_statement.year,
+ ss->donation_statement.
+ h_donor_tax_id,
+ &ss->keys->sign_keys[i].key,
+ &ss->donation_statement.
+ donation_statement_sig))
+ {
+ TALER_TESTING_interpreter_next (ss->is);
+ return;
+ }
}
- TALER_TESTING_interpreter_next (ss->is);
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Verify donation statement signature failed!");
+ TALER_TESTING_interpreter_fail (ss->is);
+ return;
}