gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] branch master updated: (imperfect) test fo


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: (imperfect) test for #4840
Date: Thu, 14 Sep 2017 20:52:48 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new f346e89  (imperfect) test for #4840
f346e89 is described below

commit f346e89ceb7eecf6de1abd4b2b794926d671b72c
Author: Christian Grothoff <address@hidden>
AuthorDate: Thu Sep 14 20:52:39 2017 +0200

    (imperfect) test for #4840
---
 src/exchange-lib/Makefile.am                       |   4 +-
 src/exchange-lib/exchange_api_handle.c             |  16 +--
 .../test_exchange_api_keys_cherry_picking.c        |  58 ++++++++--
 .../test_exchange_api_keys_cherry_picking.conf     | 128 +++++++++++++++++++++
 ..._exchange_api_keys_cherry_picking_extended.conf |   5 +
 src/exchange/taler-exchange-httpd_keystate.c       |   4 +-
 6 files changed, 193 insertions(+), 22 deletions(-)

diff --git a/src/exchange-lib/Makefile.am b/src/exchange-lib/Makefile.am
index d6e068b..ce1653c 100644
--- a/src/exchange-lib/Makefile.am
+++ b/src/exchange-lib/Makefile.am
@@ -80,4 +80,6 @@ EXTRA_DIST = \
   test_exchange_api_home/.local/share/taler/exchange/offline-keys/master.priv \
   test_exchange_api_home/.config/taler/test.json \
   test_exchange_api_home/.config/taler/sepa.json \
-  test_exchange_api.conf
+  test_exchange_api.conf \
+  test_exchange_api_keys_cherry_picking.conf \
+  test_exchange_api_keys_cherry_picking_extended.conf
diff --git a/src/exchange-lib/exchange_api_handle.c 
b/src/exchange-lib/exchange_api_handle.c
index 822c9c7..cc44a78 100644
--- a/src/exchange-lib/exchange_api_handle.c
+++ b/src/exchange-lib/exchange_api_handle.c
@@ -812,6 +812,9 @@ keys_completed_cb (void *cls,
               kr->url,
               response_code);
   kd_old = exchange->key_data;
+  memset (&kd,
+          0,
+          sizeof (struct TALER_EXCHANGE_Keys));
   vc = TALER_EXCHANGE_VC_PROTOCOL_ERROR;
   switch (response_code)
   {
@@ -823,15 +826,12 @@ keys_completed_cb (void *cls,
       response_code = 0;
       break;
     }
-    memset (&kd,
-            0,
-            sizeof (struct TALER_EXCHANGE_Keys));
-
     /* We keep the denomination keys and auditor signatures from the
        previous iteration (/keys cherry picking) */
     kd.num_denom_keys = kd_old.num_denom_keys;
-    kd.denom_keys = GNUNET_new_array (kd.num_denom_keys,
-                                      struct TALER_EXCHANGE_DenomPublicKey);
+    GNUNET_array_grow (kd.denom_keys,
+                       kd.denom_keys_size,
+                       kd.num_denom_keys);
     /* First make a shallow copy, we then need another pass for the RSA key... 
*/
     memcpy (kd.denom_keys,
             kd_old.denom_keys,
@@ -857,7 +857,7 @@ keys_completed_cb (void *cls,
       for (unsigned int j=0;j<aold->num_denom_keys;j++)
       {
         /* offsets will map 1:1 */
-        unsigned int off = kd_old.denom_keys - aold->denom_keys[j];
+        unsigned int off = aold->denom_keys[j] - kd_old.denom_keys;
 
         GNUNET_assert (off < kd_old.num_denom_keys);
         anew->denom_keys[j] = &kd.denom_keys[off];
@@ -872,7 +872,6 @@ keys_completed_cb (void *cls,
       response_code = 0;
       break;
     }
-    exchange->key_data = kd;
     json_decref (exchange->key_data_raw);
     exchange->key_data_raw = json_deep_copy (resp_obj);
     break;
@@ -882,6 +881,7 @@ keys_completed_cb (void *cls,
                 (unsigned int) response_code);
     break;
   }
+  exchange->key_data = kd;
 
   if (MHD_HTTP_OK != response_code)
   {
diff --git a/src/exchange-lib/test_exchange_api_keys_cherry_picking.c 
b/src/exchange-lib/test_exchange_api_keys_cherry_picking.c
index 9f77170..0fbf172 100644
--- a/src/exchange-lib/test_exchange_api_keys_cherry_picking.c
+++ b/src/exchange-lib/test_exchange_api_keys_cherry_picking.c
@@ -117,7 +117,7 @@ struct Command
       /**
        * Command-line arguments for the process to be run.
        */
-      char *const*argv;
+      char *const *argv;
 
       /**
        * Process handle.
@@ -359,6 +359,10 @@ interpreter_run (void *cls)
       {
         /* Did not get the expected number of denomination keys! */
         GNUNET_break (0);
+        fprintf (stderr,
+                 "Got %u keys in step %s\n",
+                 is->keys->num_denom_keys,
+                 cmd->label);
         fail (is);
         return;
       }
@@ -419,13 +423,8 @@ do_shutdown (void *cls)
 {
   struct InterpreterState *is = cls;
   struct Command *cmd;
-  unsigned int i;
 
-  fprintf (stderr,
-           "Executing shutdown at `%s'\n",
-           is->commands[is->ip].label);
-
-  for (i=0;OC_END != (cmd = &is->commands[i])->oc;i++)
+  for (unsigned int i=0;OC_END != (cmd = &is->commands[i])->oc;i++)
   {
     switch (cmd->oc)
     {
@@ -541,10 +540,47 @@ static void
 run (void *cls)
 {
   struct InterpreterState *is;
+  static char *keyup[] = {
+    "taler-exchange-keyup",
+    "-c", "test_exchange_api_keys_cherry_picking_extended.conf",
+    "-o", "auditor.in",
+    NULL
+  };
+  static char *auditorsign[] = {
+    "taler-auditor-sign",
+    "-c", "test_exchange_api_keys_cherry_picking.conf",
+    "-u", "http://auditor/";,
+    "-m", "98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG",
+    "-r", "auditor.in",
+    "-o", "test_exchange_api_home/.local/share/taler/auditors/auditor.out",
+    NULL
+  };
   static struct Command commands[] =
   {
     /* Test signal handling by itself */
     { .oc = OC_SIGNAL_EXCHANGE },
+    /* Check we got /keys properly */
+    { .oc = OC_CHECK_KEYS,
+      .details.check_keys.generation = 1,
+      .details.check_keys.num_denom_keys = 4
+    },
+    /* Generate more keys */
+    { .oc = OC_RUN_PROCESS,
+      .details.run_process.binary = "taler-exchange-keyup",
+      .details.run_process.argv = keyup
+    },
+    /* Auditor-sign them */
+    { .oc = OC_RUN_PROCESS,
+      .details.run_process.binary = "taler-auditor-sign",
+      .details.run_process.argv = auditorsign
+    },
+    /* Load new keys into exchange via signal */
+    { .oc = OC_SIGNAL_EXCHANGE },
+    /* Re-download and check /keys */
+    { .oc = OC_CHECK_KEYS,
+      .details.check_keys.generation = 2,
+      .details.check_keys.num_denom_keys = 8
+    },
     { .oc = OC_END }
   };
 
@@ -640,7 +676,7 @@ main (int argc,
                                   NULL, NULL, NULL,
                                   "taler-exchange-keyup",
                                   "taler-exchange-keyup",
-                                  "-c", "test_exchange_api.conf",
+                                  "-c", 
"test_exchange_api_keys_cherry_picking.conf",
                                   "-o", "auditor.in",
                                   NULL);
   if (NULL == proc)
@@ -657,7 +693,7 @@ main (int argc,
                                   NULL, NULL, NULL,
                                   "taler-auditor-sign",
                                   "taler-auditor-sign",
-                                  "-c", "test_exchange_api.conf",
+                                  "-c", 
"test_exchange_api_keys_cherry_picking.conf",
                                   "-u", "http://auditor/";,
                                   "-m", 
"98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG",
                                   "-r", "auditor.in",
@@ -677,7 +713,7 @@ main (int argc,
                                   NULL, NULL, NULL,
                                   "taler-exchange-dbinit",
                                   "taler-exchange-dbinit",
-                                  "-c", "test_exchange_api.conf",
+                                  "-c", 
"test_exchange_api_keys_cherry_picking.conf",
                                   "-r",
                                   NULL);
   if (NULL == proc)
@@ -715,7 +751,7 @@ main (int argc,
                                        NULL, NULL, NULL,
                                        "taler-exchange-httpd",
                                        "taler-exchange-httpd",
-                                       "-c", "test_exchange_api.conf",
+                                       "-c", 
"test_exchange_api_keys_cherry_picking.conf",
                                        "-i",
                                        NULL);
   /* give child time to start and bind against the socket */
diff --git a/src/exchange-lib/test_exchange_api_keys_cherry_picking.conf 
b/src/exchange-lib/test_exchange_api_keys_cherry_picking.conf
new file mode 100644
index 0000000..c6b8ef9
--- /dev/null
+++ b/src/exchange-lib/test_exchange_api_keys_cherry_picking.conf
@@ -0,0 +1,128 @@
+# This file is in the public domain.
+#
+[PATHS]
+# Persistant data storage for the testcase
+TALER_TEST_HOME = test_exchange_api_home/
+
+[taler]
+# Currency supported by the exchange (can only be one)
+CURRENCY = EUR
+
+[exchange]
+
+# HTTP port the exchange listens to
+PORT = 8081
+
+# Master public key used to sign the exchange's various keys
+MASTER_PUBLIC_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
+
+# How to access our database
+DB = postgres
+
+# Base URL of the exchange. Note that the test expects exactly this
+# value in the wire transfers.
+BASE_URL = "https://exchange.com/";
+
+[exchangedb-postgres]
+DB_CONN_STR = "postgres:///talercheck"
+
+[auditordb-postgres]
+DB_CONN_STR = "postgres:///talercheck"
+
+[exchange-wire-sepa]
+# Enable 'sepa' to test SEPA-specific routines.
+ENABLE = YES
+
+# This is the response we give out for the /wire request.  It provides
+# wallets with the bank information for transfers to the exchange.
+SEPA_RESPONSE_FILE = ${TALER_CONFIG_HOME}/sepa.json
+
+# Fees for the forseeable future...
+# If you see this after 2017, update to match the next 10 years...
+WIRE-FEE-2017 = EUR:0.01
+WIRE-FEE-2018 = EUR:0.01
+WIRE-FEE-2019 = EUR:0.01
+WIRE-FEE-2020 = EUR:0.01
+WIRE-FEE-2021 = EUR:0.01
+WIRE-FEE-2022 = EUR:0.01
+WIRE-FEE-2023 = EUR:0.01
+WIRE-FEE-2024 = EUR:0.01
+WIRE-FEE-2025 = EUR:0.01
+WIRE-FEE-2026 = EUR:0.01
+
+CLOSING-FEE-2017 = EUR:0.01
+CLOSING-FEE-2018 = EUR:0.01
+CLOSING-FEE-2019 = EUR:0.01
+CLOSING-FEE-2020 = EUR:0.01
+CLOSING-FEE-2021 = EUR:0.01
+CLOSING-FEE-2022 = EUR:0.01
+CLOSING-FEE-2023 = EUR:0.01
+CLOSING-FEE-2024 = EUR:0.01
+CLOSING-FEE-2025 = EUR:0.01
+CLOSING-FEE-2026 = EUR:0.01
+
+[exchange_keys]
+# Keep it short so we can prolong later!
+LOOKAHEAD_SIGN = 60 s
+
+[exchange-wire-test]
+# Enable 'test' for testing of the actual coin operations.
+ENABLE = YES
+
+# Fees for the forseeable future...
+# If you see this after 2017, update to match the next 10 years...
+WIRE-FEE-2017 = EUR:0.01
+WIRE-FEE-2018 = EUR:0.01
+WIRE-FEE-2019 = EUR:0.01
+WIRE-FEE-2020 = EUR:0.01
+WIRE-FEE-2021 = EUR:0.01
+WIRE-FEE-2022 = EUR:0.01
+WIRE-FEE-2023 = EUR:0.01
+WIRE-FEE-2024 = EUR:0.01
+WIRE-FEE-2025 = EUR:0.01
+WIRE-FEE-2026 = EUR:0.01
+
+CLOSING-FEE-2017 = EUR:0.01
+CLOSING-FEE-2018 = EUR:0.01
+CLOSING-FEE-2019 = EUR:0.01
+CLOSING-FEE-2020 = EUR:0.01
+CLOSING-FEE-2021 = EUR:0.01
+CLOSING-FEE-2022 = EUR:0.01
+CLOSING-FEE-2023 = EUR:0.01
+CLOSING-FEE-2024 = EUR:0.01
+CLOSING-FEE-2025 = EUR:0.01
+CLOSING-FEE-2026 = EUR:0.01
+
+# This is the response we give out for the /wire request.  It provides
+# wallets with the bank information for transfers to the exchange.
+TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/test.json
+
+# What is the main website of the bank?
+BANK_URI = "http://localhost:8082/";
+# From which account at the 'bank' should outgoing wire transfers be made?
+BANK_ACCOUNT_NUMBER = 2
+
+
+[coin_eur_ct_1]
+value = EUR:0.01
+duration_overlap = 5 s
+duration_withdraw = 35 s
+duration_spend = 40 s
+duration_legal = 60 s
+fee_withdraw = EUR:0.00
+fee_deposit = EUR:0.00
+fee_refresh = EUR:0.01
+fee_refund = EUR:0.01
+rsa_keysize = 1024
+
+[coin_eur_ct_2]
+value = EUR:0.02
+duration_overlap = 5 s
+duration_withdraw = 35 s
+duration_spend = 40 s
+duration_legal = 60 s
+fee_withdraw = EUR:0.01
+fee_deposit = EUR:0.01
+fee_refresh = EUR:0.01
+fee_refund = EUR:0.01
+rsa_keysize = 1024
diff --git 
a/src/exchange-lib/test_exchange_api_keys_cherry_picking_extended.conf 
b/src/exchange-lib/test_exchange_api_keys_cherry_picking_extended.conf
new file mode 100644
index 0000000..3becf3d
--- /dev/null
+++ b/src/exchange-lib/test_exchange_api_keys_cherry_picking_extended.conf
@@ -0,0 +1,5 @@
address@hidden@ test_exchange_api_keys_cherry_picking.conf
+
+[exchange_keys]
+# Lengthen over original value (60 s)
+LOOKAHEAD_SIGN = 100 s
diff --git a/src/exchange/taler-exchange-httpd_keystate.c 
b/src/exchange/taler-exchange-httpd_keystate.c
index b4026bf..32a619e 100644
--- a/src/exchange/taler-exchange-httpd_keystate.c
+++ b/src/exchange/taler-exchange-httpd_keystate.c
@@ -1424,13 +1424,13 @@ TEH_KS_handler_keys (struct TEH_RequestHandler *rh,
       ks.purpose.size = htonl (sizeof (ks));
       ks.purpose.purpose = htonl (TALER_SIGNATURE_EXCHANGE_KEY_SET);
       ks.list_issue_date = GNUNET_TIME_absolute_hton (key_state->reload_time);
-      GNUNET_CRYPTO_hash_context_finish (key_state->hash_context,
+      GNUNET_CRYPTO_hash_context_finish (rbc.hash_context,
                                          &ks.hc);
       GNUNET_assert (GNUNET_OK ==
                      GNUNET_CRYPTO_eddsa_sign 
(&key_state->current_sign_key_issue.signkey_priv.eddsa_priv,
                                                &ks.purpose,
                                                &sig.eddsa_signature));
-      keys = json_pack ("{s:s, s:o, s:O, s:o, s:O, s:o, s:o}",
+      keys = json_pack ("{s:s, s:o, s:O, s:o, s:O, s:o, s:o, s:o, s:o}",
                         "version", TALER_PROTOCOL_VERSION,
                         "master_public_key", GNUNET_JSON_from_data_auto 
(&TEH_master_public_key),
                         "signkeys", key_state->sign_keys_array,

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]