donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/donau/donau-httpd_donation-statement.c | 14+++++++-------
Msrc/testing/testing_api_cmd_donation_statement_get.c | 57+++++++++++++++++++++++++++++++++++++++++++--------------
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; }