From 4877cb07d32fecd4fb26ca1b00bf937040872d95 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 22 Jan 2019 15:16:21 +0100 Subject: 5136. Force creation of new DKs after serialized state has been imported. --- src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf | 2 +- src/lib/test_exchange_api_keys_cherry_picking_new.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf b/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf index cfa8b1347..8097a6cda 100644 --- a/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf +++ b/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf @@ -2,4 +2,4 @@ [exchange] # Lengthen over firstly extended value (100 s) -LOOKAHEAD_SIGN = 1500 s +LOOKAHEAD_SIGN = 3500 s diff --git a/src/lib/test_exchange_api_keys_cherry_picking_new.c b/src/lib/test_exchange_api_keys_cherry_picking_new.c index c1dde0009..b7cea5a48 100644 --- a/src/lib/test_exchange_api_keys_cherry_picking_new.c +++ b/src/lib/test_exchange_api_keys_cherry_picking_new.c @@ -113,7 +113,7 @@ run (void *cls, */ TALER_TESTING_cmd_check_keys ("check-freshest-keys", 8, - 8), + 10), TALER_TESTING_cmd_wire ("verify-/wire-with-fresh-keys", "x-taler-bank", -- cgit v1.2.3 From 342f9f1ec803492392211fc15ac639d459f93900 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 22 Jan 2019 19:02:49 +0100 Subject: Fix Makefiles. --- src/bank-lib/Makefile.am | 12 ++++++------ src/lib/Makefile.am | 16 ---------------- 2 files changed, 6 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/bank-lib/Makefile.am b/src/bank-lib/Makefile.am index 084614b62..6daf9e5c0 100644 --- a/src/bank-lib/Makefile.am +++ b/src/bank-lib/Makefile.am @@ -97,11 +97,11 @@ check_PROGRAMS += \ test_bank_api_with_fakebank_twisted_SOURCES = \ test_bank_api_with_fakebank_twisted.c test_bank_api_with_fakebank_twisted_LDADD = \ - $(top_builddir)/src/exchange-lib/libtalertesting.la \ + $(top_builddir)/src/lib/libtalertesting.la \ libtalerbank.la \ libtalerbanktesting.la \ libtalerfakebank.la \ - $(top_builddir)/src/exchange-lib/libtalerexchange.la \ + $(top_builddir)/src/lib/libtalerexchange.la \ $(top_builddir)/src/json/libtalerjson.la \ -ltalertwistertesting \ -lgnunetjson \ @@ -113,11 +113,11 @@ endif test_bank_api_twisted_SOURCES = \ test_bank_api_twisted.c test_bank_api_twisted_LDADD = \ - $(top_builddir)/src/exchange-lib/libtalertesting.la \ + $(top_builddir)/src/lib/libtalertesting.la \ libtalerbank.la \ libtalerbanktesting.la \ libtalerfakebank.la \ - $(top_builddir)/src/exchange-lib/libtalerexchange.la \ + $(top_builddir)/src/lib/libtalerexchange.la \ $(top_builddir)/src/json/libtalerjson.la \ -ltalertwistertesting \ -lgnunetjson \ @@ -143,7 +143,7 @@ test_bank_api_new_SOURCES = \ test_bank_api_new.c test_bank_api_new_LDADD = \ - $(top_builddir)/src/exchange-lib/libtalertesting.la \ + $(top_builddir)/src/lib/libtalertesting.la \ $(top_builddir)/src/json/libtalerjson.la \ libtalerbanktesting.la \ -ltalerexchange \ @@ -165,7 +165,7 @@ test_bank_api_with_fakebank_new_SOURCES = \ test_bank_api_with_fakebank_new.c test_bank_api_with_fakebank_new_LDADD = \ - $(top_builddir)/src/exchange-lib/libtalertesting.la \ + $(top_builddir)/src/lib/libtalertesting.la \ libtalerbanktesting.la \ -ltalerexchange \ -lgnunetutil \ diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index 6f4ffbdf9..876f4aab1 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -156,7 +156,6 @@ endif check_PROGRAMS = \ test_exchange_api_keys_cherry_picking_new \ test_exchange_api_overlapping_keys_bug \ - test_exchange_api_interpreter_on-off \ test_exchange_api_new \ test_auditor_api @@ -201,19 +200,6 @@ test_exchange_api_new_LDADD = \ -lgnunetutil \ -ljansson -test_exchange_api_interpreter_on_off_SOURCES = \ - test_exchange_api_interpreter_on-off.c -test_exchange_api_interpreter_on_off_LDADD = \ - libtalertesting.la \ - libtalerexchange.la \ - $(LIBGCRYPT_LIBS) \ - $(top_builddir)/src/json/libtalerjson.la \ - $(top_builddir)/src/util/libtalerutil.la \ - $(top_builddir)/src/bank-lib/libtalerbank.la \ - -lgnunetcurl \ - -lgnunetutil \ - -ljansson - test_exchange_api_overlapping_keys_bug_SOURCES = \ test_exchange_api_overlapping_keys_bug.c test_exchange_api_overlapping_keys_bug_LDADD = \ @@ -256,8 +242,6 @@ test_auditor_api_LDADD = \ -lgnunetutil \ -ljansson - - EXTRA_DIST = \ test_exchange_api_home/.local/share/taler/exchange/offline-keys/master.priv \ test_exchange_api_home/.config/taler/test.json \ -- cgit v1.2.3 From d5ee6e1d07805b11e02831fac0823f83cb8f9edd Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 22 Jan 2019 19:04:19 +0100 Subject: Fix denoms comparison. --- src/lib/exchange_api_handle.c | 68 ++++++++++++++++++++---- src/lib/test_exchange_api_overlapping_keys_bug.c | 4 +- 2 files changed, 59 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index b2ac596fe..61b34fc87 100644 --- a/src/lib/exchange_api_handle.c +++ b/src/lib/exchange_api_handle.c @@ -719,6 +719,50 @@ update_auditors (struct TALER_EXCHANGE_Handle *exchange) } } +/** + * Compare two denomination keys. + * + * @param denoma first denomination key + * @param denomb second denomination key + * @return 0 if the two keys are equal (not necessarily + * the same object), 1 otherwise. + */ +unsigned int +TALER_denoms_cmp (struct TALER_EXCHANGE_DenomPublicKey *denom1, + struct TALER_EXCHANGE_DenomPublicKey *denom2) +{ + struct GNUNET_CRYPTO_RsaPublicKey *tmp1; + struct GNUNET_CRYPTO_RsaPublicKey *tmp2; + + /* First check if pub is the same. */ + if (0 != GNUNET_CRYPTO_rsa_public_key_cmp + (denom1->key.rsa_public_key, + denom2->key.rsa_public_key)) + return 1; + + tmp1 = denom1->key.rsa_public_key; + tmp2 = denom2->key.rsa_public_key; + + denom1->key.rsa_public_key = NULL; + denom2->key.rsa_public_key = NULL; + + /* Then procede with the rest of the object. */ + if (0 != memcmp (denom1, + denom2, + sizeof (struct TALER_EXCHANGE_DenomPublicKey))) + { + denom1->key.rsa_public_key = tmp1; + denom2->key.rsa_public_key = tmp2; + + return 1; + } + + denom1->key.rsa_public_key = tmp1; + denom2->key.rsa_public_key = tmp2; + + return 0; +} + /** * Decode the JSON in @a resp_obj from the /keys response @@ -857,7 +901,7 @@ decode_keys_json (const json_t *resp_obj, index = 0; json_array_foreach (denom_keys_array, index, denom_key_obj) { struct TALER_EXCHANGE_DenomPublicKey dk; - bool found = false; + int found = GNUNET_NO; EXITIF (GNUNET_SYSERR == parse_json_denomkey (&dk, @@ -865,17 +909,19 @@ decode_keys_json (const json_t *resp_obj, denom_key_obj, &key_data->master_pub, hash_context)); - for (unsigned int j=0;jnum_denom_keys;j++) + + for (unsigned int j=0; + jnum_denom_keys; + j++) { - if (0 == memcmp (&dk, - &key_data->denom_keys[j], - sizeof (dk))) + if (0 == TALER_denoms_cmp (&dk, + &key_data->denom_keys[j])) { - found = true; + found = GNUNET_YES; break; } } - if (found) + if (GNUNET_YES == found) { /* 0:0:0 did not support /keys cherry picking */ GNUNET_break_op (0 == current); @@ -910,7 +956,7 @@ decode_keys_json (const json_t *resp_obj, index = 0; json_array_foreach (auditors_array, index, auditor_info) { struct TALER_EXCHANGE_AuditorInformation ai; - bool found = false; + int found = GNUNET_NO; memset (&ai, 0, @@ -928,7 +974,7 @@ decode_keys_json (const json_t *resp_obj, &aix->auditor_pub, sizeof (struct TALER_AuditorPublicKeyP))) { - found = true; + found = GNUNET_YES; /* Merge denomination key signatures of downloaded /keys into existing auditor information 'aix'. */ GNUNET_array_grow (aix->denom_keys, @@ -940,7 +986,7 @@ decode_keys_json (const json_t *resp_obj, break; } } - if (found) + if (GNUNET_YES == found) continue; /* we are done */ if (key_data->auditors_size == key_data->num_auditors) GNUNET_array_grow (key_data->auditors, @@ -1077,7 +1123,6 @@ TALER_EXCHANGE_check_keys_current (struct TALER_EXCHANGE_Handle *exchange, return GNUNET_TIME_UNIT_ZERO_ABS; } - /** * Callback used when downloading the reply to a /keys request * is complete. @@ -1136,6 +1181,7 @@ keys_completed_cb (void *cls, memcpy (kd.denom_keys, kd_old.denom_keys, kd_old.num_denom_keys * sizeof (struct TALER_EXCHANGE_DenomPublicKey)); + for (unsigned int i=0;i Date: Wed, 23 Jan 2019 15:46:07 +0100 Subject: debug --- src/lib/auditor_api_handle.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/auditor_api_handle.c b/src/lib/auditor_api_handle.c index fffbd39d0..652566c05 100644 --- a/src/lib/auditor_api_handle.c +++ b/src/lib/auditor_api_handle.c @@ -259,7 +259,6 @@ decode_version_json (const json_t *resp_obj, return GNUNET_OK; } - /** * Initiate download of /version from the auditor. * @@ -307,6 +306,7 @@ version_completed_cb (void *cls, case MHD_HTTP_OK: if (NULL == resp_obj) { + TALER_LOG_WARNING ("NULL body for a 200-OK /version\n"); response_code = 0; break; } @@ -342,6 +342,7 @@ version_completed_cb (void *cls, auditor->vr = NULL; free_version_request (vr); + TALER_LOG_DEBUG ("Switching auditor state to 'version'\n"); auditor->state = MHS_VERSION; /* notify application about the key information */ auditor->version_cb (auditor->version_cb_cls, -- cgit v1.2.3 From 862ed50d7db6dad591bee045a7864e8310f1fbcc Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Thu, 24 Jan 2019 17:53:10 +0100 Subject: Auditor tests. Fix double connection. --- src/include/taler_testing_lib.h | 6 ------ src/lib/auditor_api_handle.c | 3 +++ src/lib/exchange_api_handle.c | 9 +++++++++ src/lib/test_auditor_api.c | 4 ++++ src/lib/testing_api_loop.c | 1 + src/lib/testing_auditor_api_helpers.c | 34 ++-------------------------------- 6 files changed, 19 insertions(+), 38 deletions(-) (limited to 'src') diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h index 711a13235..6573d2cd7 100644 --- a/src/include/taler_testing_lib.h +++ b/src/include/taler_testing_lib.h @@ -369,12 +369,6 @@ struct TALER_TESTING_Interpreter */ int working; - /** - * Is the auditor running (#GNUNET_YES) or waiting - * for /version (#GNUNET_NO)? - */ - int auditor_working; - /** * How often have we gotten a /keys response so far? */ diff --git a/src/lib/auditor_api_handle.c b/src/lib/auditor_api_handle.c index 652566c05..dc60fc869 100644 --- a/src/lib/auditor_api_handle.c +++ b/src/lib/auditor_api_handle.c @@ -447,6 +447,9 @@ TALER_AUDITOR_connect (struct GNUNET_CURL_Context *ctx, { struct TALER_AUDITOR_Handle *auditor; + TALER_LOG_DEBUG ("Connecting to the auditor (%s)\n", + url); + auditor = GNUNET_new (struct TALER_AUDITOR_Handle); auditor->ctx = ctx; auditor->url = GNUNET_strdup (url); diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index 61b34fc87..78219e611 100644 --- a/src/lib/exchange_api_handle.c +++ b/src/lib/exchange_api_handle.c @@ -685,8 +685,11 @@ update_auditors (struct TALER_EXCHANGE_Handle *exchange) { struct TALER_EXCHANGE_Keys *kd = &exchange->key_data; + TALER_LOG_DEBUG ("Updating auditors\n"); for (unsigned int i=0;inum_auditors;i++) { + /* Compare auditor data from /keys with auditor data + * from owned exchange structures. */ struct TALER_EXCHANGE_AuditorInformation *auditor = &kd->auditors[i]; struct TEAH_AuditorListEntry *ale = NULL; @@ -704,7 +707,9 @@ update_auditors (struct TALER_EXCHANGE_Handle *exchange) } if (NULL != ale) continue; /* found, no need to add */ + /* new auditor, add */ + TALER_LOG_DEBUG ("Found new auditor!\n"); ale = GNUNET_new (struct TEAH_AuditorListEntry); ale->auditor_pub = auditor->auditor_pub; ale->auditor_url = GNUNET_strdup (auditor->auditor_url); @@ -1206,6 +1211,7 @@ keys_completed_cb (void *cls, aold->num_denom_keys * sizeof (struct TALER_EXCHANGE_AuditorDenominationInfo)); } + /* Old auditors got just copied into new ones. */ if (GNUNET_OK != decode_keys_json (j, GNUNET_YES, @@ -1728,6 +1734,9 @@ TALER_EXCHANGE_connect va_list ap; enum TALER_EXCHANGE_Option opt; + TALER_LOG_DEBUG ("Connecting to the exchange (%s)\n", + url); + exchange = GNUNET_new (struct TALER_EXCHANGE_Handle); exchange->ctx = ctx; exchange->url = GNUNET_strdup (url); diff --git a/src/lib/test_auditor_api.c b/src/lib/test_auditor_api.c index cddd21197..04fbaa58e 100644 --- a/src/lib/test_auditor_api.c +++ b/src/lib/test_auditor_api.c @@ -471,6 +471,8 @@ run (void *cls, }; struct TALER_TESTING_Command commands[] = { + + #if 0 CMD_RUN_AUDITOR("virgin-auditor"), CMD_RUN_WIRE_AUDITOR("virgin-wire-auditor"), TALER_TESTING_cmd_batch ("withdraw", @@ -489,6 +491,8 @@ run (void *cls, payback), CMD_RUN_AUDITOR("normal-auditor"), CMD_RUN_WIRE_AUDITOR("normal-wire-auditor"), + #endif + TALER_TESTING_cmd_end () }; diff --git a/src/lib/testing_api_loop.c b/src/lib/testing_api_loop.c index d0865c905..0582b73ba 100644 --- a/src/lib/testing_api_loop.c +++ b/src/lib/testing_api_loop.c @@ -309,6 +309,7 @@ do_shutdown (void *cls) if (NULL != is->exchange) { + TALER_LOG_DEBUG ("Disconnecting the exchange\n"); TALER_EXCHANGE_disconnect (is->exchange); is->exchange = NULL; } diff --git a/src/lib/testing_auditor_api_helpers.c b/src/lib/testing_auditor_api_helpers.c index 7e7103150..c85fe47b7 100644 --- a/src/lib/testing_auditor_api_helpers.c +++ b/src/lib/testing_auditor_api_helpers.c @@ -70,28 +70,6 @@ cleanup_auditor (void *cls) GNUNET_free (cc); } - - -/** - * Function called with information about the auditor. - * - * @param cls closure - * @param vi basic information about the auditor - * @param compat protocol compatibility information - */ -static void -auditor_version_cb (void *cls, - const struct TALER_AUDITOR_VersionInformation *vi, - enum TALER_AUDITOR_VersionCompatibility compat) -{ - struct TALER_TESTING_Interpreter *is = cls; - - /* TODO: check vi/compat? */ - is->auditor_working = GNUNET_YES; -} - - - /** * Closure for #auditor_main_wrapper() */ @@ -145,21 +123,13 @@ auditor_main_wrapper (void *cls, "BASE_URL"); return; } - is->auditor = TALER_AUDITOR_connect (is->ctx, - auditor_base_url, - &auditor_version_cb, - is); + GNUNET_free (auditor_base_url); - if (NULL == is->auditor) - { - GNUNET_break (0); - return; - } cc = GNUNET_new (struct CleanupContext); cc->is = is; cc->fcb = is->final_cleanup_cb; cc->fcb_cls = is->final_cleanup_cb; - is->final_cleanup_cb = &cleanup_auditor; + is->final_cleanup_cb = NULL; is->final_cleanup_cb_cls = cc; mwc->main_cb (mwc->main_cb_cls, is); -- cgit v1.2.3 From d99308543872e5021eee0351463818941c8cbeb2 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Thu, 24 Jan 2019 17:54:33 +0100 Subject: Reproduce auditor assert fail. --- src/lib/test_auditor_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/lib/test_auditor_api.c b/src/lib/test_auditor_api.c index 04fbaa58e..71221ee0d 100644 --- a/src/lib/test_auditor_api.c +++ b/src/lib/test_auditor_api.c @@ -474,6 +474,7 @@ run (void *cls, #if 0 CMD_RUN_AUDITOR("virgin-auditor"), + #endif CMD_RUN_WIRE_AUDITOR("virgin-wire-auditor"), TALER_TESTING_cmd_batch ("withdraw", withdraw), @@ -491,7 +492,6 @@ run (void *cls, payback), CMD_RUN_AUDITOR("normal-auditor"), CMD_RUN_WIRE_AUDITOR("normal-wire-auditor"), - #endif TALER_TESTING_cmd_end () }; -- cgit v1.2.3 From b2c47a74a91459dc190421d25772ea0c86eae513 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Thu, 24 Jan 2019 17:57:10 +0100 Subject: Reproduce auditor assert fail, with less code executed. --- src/lib/test_auditor_api.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/lib/test_auditor_api.c b/src/lib/test_auditor_api.c index 71221ee0d..d7e8f8630 100644 --- a/src/lib/test_auditor_api.c +++ b/src/lib/test_auditor_api.c @@ -474,12 +474,13 @@ run (void *cls, #if 0 CMD_RUN_AUDITOR("virgin-auditor"), - #endif CMD_RUN_WIRE_AUDITOR("virgin-wire-auditor"), + #endif TALER_TESTING_cmd_batch ("withdraw", withdraw), TALER_TESTING_cmd_batch ("spend", spend), + #if 0 TALER_TESTING_cmd_batch ("refresh", refresh), TALER_TESTING_cmd_batch ("track", @@ -492,7 +493,7 @@ run (void *cls, payback), CMD_RUN_AUDITOR("normal-auditor"), CMD_RUN_WIRE_AUDITOR("normal-wire-auditor"), - + #endif TALER_TESTING_cmd_end () }; -- cgit v1.2.3 From 649dd16401379285bb2260fce8dbb5eb6f24b453 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Thu, 24 Jan 2019 18:01:07 +0100 Subject: Simplify things. --- src/lib/test_auditor_api.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'src') diff --git a/src/lib/test_auditor_api.c b/src/lib/test_auditor_api.c index d7e8f8630..cde3e1aa9 100644 --- a/src/lib/test_auditor_api.c +++ b/src/lib/test_auditor_api.c @@ -472,15 +472,12 @@ run (void *cls, struct TALER_TESTING_Command commands[] = { - #if 0 CMD_RUN_AUDITOR("virgin-auditor"), CMD_RUN_WIRE_AUDITOR("virgin-wire-auditor"), - #endif TALER_TESTING_cmd_batch ("withdraw", withdraw), TALER_TESTING_cmd_batch ("spend", spend), - #if 0 TALER_TESTING_cmd_batch ("refresh", refresh), TALER_TESTING_cmd_batch ("track", @@ -493,7 +490,6 @@ run (void *cls, payback), CMD_RUN_AUDITOR("normal-auditor"), CMD_RUN_WIRE_AUDITOR("normal-wire-auditor"), - #endif TALER_TESTING_cmd_end () }; -- cgit v1.2.3