diff options
| author | Christian Grothoff <christian@grothoff.org> | 2019-01-24 18:46:49 +0100 | 
|---|---|---|
| committer | Christian Grothoff <christian@grothoff.org> | 2019-01-24 18:46:49 +0100 | 
| commit | 531b61cd43765e16ebaacd3900241efc9a6b6616 (patch) | |
| tree | 2ce28f8cdda92608589eae7aff1d7852632f1da6 /src/lib | |
| parent | 9de8b7762547e4064d618cf2ad1e4da8a1f6994b (diff) | |
| parent | 649dd16401379285bb2260fce8dbb5eb6f24b453 (diff) | |
adding separate test just for /verison API
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/Makefile.am | 14 | ||||
| -rw-r--r-- | src/lib/auditor_api_handle.c | 3 | ||||
| -rw-r--r-- | src/lib/exchange_api_handle.c | 77 | ||||
| -rw-r--r-- | src/lib/test_auditor_api.c | 1 | ||||
| -rw-r--r-- | src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf | 2 | ||||
| -rw-r--r-- | src/lib/test_exchange_api_keys_cherry_picking_new.c | 2 | ||||
| -rwxr-xr-x | src/lib/test_exchange_api_overlapping_keys_bug.c | 4 | ||||
| -rw-r--r-- | src/lib/testing_api_loop.c | 1 | ||||
| -rw-r--r-- | src/lib/testing_auditor_api_helpers.c | 34 | 
9 files changed, 76 insertions, 62 deletions
| diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index b44eccbc..9e91e701 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_version \    test_auditor_api @@ -202,19 +201,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 = \ diff --git a/src/lib/auditor_api_handle.c b/src/lib/auditor_api_handle.c index 13dd63df..f14713e1 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.   * @@ -308,6 +307,7 @@ version_completed_cb (void *cls,      if (NULL == resp_obj)      {        GNUNET_break_op (0); +      TALER_LOG_WARNING ("NULL body for a 200-OK /version\n");        response_code = 0;        break;      } @@ -348,6 +348,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;    GNUNET_log (GNUNET_ERROR_TYPE_INFO,                "Auditor %p is now READY!\n", diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index b2ac596f..78219e61 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;i<kd->num_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); @@ -719,6 +724,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 +906,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 +914,19 @@ decode_keys_json (const json_t *resp_obj,                                     denom_key_obj,                                     &key_data->master_pub,                                     hash_context)); -      for (unsigned int j=0;j<key_data->num_denom_keys;j++) + +      for (unsigned int j=0; +           j<key_data->num_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 +961,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 +979,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 +991,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 +1128,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 +1186,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<kd_old.num_denom_keys;i++)        kd.denom_keys[i].key.rsa_public_key          = GNUNET_CRYPTO_rsa_public_key_dup (kd_old.denom_keys[i].key.rsa_public_key); @@ -1160,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, @@ -1682,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 cddd2119..cde3e1aa 100644 --- a/src/lib/test_auditor_api.c +++ b/src/lib/test_auditor_api.c @@ -471,6 +471,7 @@ run (void *cls,    };    struct TALER_TESTING_Command commands[] = { +      CMD_RUN_AUDITOR("virgin-auditor"),      CMD_RUN_WIRE_AUDITOR("virgin-wire-auditor"),      TALER_TESTING_cmd_batch ("withdraw", 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 cfa8b134..8097a6cd 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 c1dde000..b7cea5a4 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", diff --git a/src/lib/test_exchange_api_overlapping_keys_bug.c b/src/lib/test_exchange_api_overlapping_keys_bug.c index 2614cd87..01fb4623 100755 --- a/src/lib/test_exchange_api_overlapping_keys_bug.c +++ b/src/lib/test_exchange_api_overlapping_keys_bug.c @@ -93,8 +93,8 @@ run (void *cls,      /* Causes GET /keys?last_denom_issue=0 */      TALER_TESTING_cmd_check_keys_with_last_denom ("second-download", -                                                  2, -                                                  8, +                                                  3, +                                                  4,                                                    GNUNET_TIME_UNIT_ZERO_ABS),      TALER_TESTING_cmd_end ()    }; diff --git a/src/lib/testing_api_loop.c b/src/lib/testing_api_loop.c index d0865c90..0582b73b 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 7e710315..c85fe47b 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); | 
