gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] branch master updated: backup enter_secret test passes


From: gnunet
Subject: [taler-anastasis] branch master updated: backup enter_secret test passes
Date: Mon, 01 Mar 2021 15:42:12 +0100

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

grothoff pushed a commit to branch master
in repository anastasis.

The following commit(s) were added to refs/heads/master by this push:
     new 2e3a22c  backup enter_secret test passes
2e3a22c is described below

commit 2e3a22c024a444513f7c176f524eeeb5d899070d
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Mar 1 15:42:10 2021 +0100

    backup enter_secret test passes
---
 src/cli/Makefile.am                            |  4 +--
 src/cli/test_anastasis_reducer_enter_secret.sh | 40 ++++++++++++---------
 src/reducer/anastasis_api_backup_redux.c       | 48 ++++++++++++++++++++++++--
 3 files changed, 71 insertions(+), 21 deletions(-)

diff --git a/src/cli/Makefile.am b/src/cli/Makefile.am
index d1751e7..3726517 100644
--- a/src/cli/Makefile.am
+++ b/src/cli/Makefile.am
@@ -16,8 +16,8 @@ check_SCRIPTS = \
   test_anastasis_reducer_backup_enter_user_attributes.sh \
   test_anastasis_reducer_add_authentication.sh \
   test_anastasis_reducer_done_authentication.sh \
-  test_anastasis_reducer_done_policy_review.sh
-#  test_anastasis_reducer_enter_secret.sh
+  test_anastasis_reducer_done_policy_review.sh \
+  test_anastasis_reducer_enter_secret.sh
 #  test_anastasis_reducer_recovery_enter_user_attributes.sh
 
 
diff --git a/src/cli/test_anastasis_reducer_enter_secret.sh 
b/src/cli/test_anastasis_reducer_enter_secret.sh
index f965fc0..5b4d5ac 100755
--- a/src/cli/test_anastasis_reducer_enter_secret.sh
+++ b/src/cli/test_anastasis_reducer_enter_secret.sh
@@ -158,7 +158,7 @@ taler-auditor-httpd -L INFO -c $CONF 2> 
taler-auditor-httpd.log &
 echo " OK"
 
 echo -n "Launching anastasis services ..."
-PREFIX=valgrind
+PREFIX="" #valgrind
 $PREFIX anastasis-httpd -c $CONF_1 2> anastasis-httpd_1.log &
 $PREFIX anastasis-httpd -c $CONF_2 2> anastasis-httpd_2.log &
 $PREFIX anastasis-httpd -c $CONF_3 2> anastasis-httpd_3.log &
@@ -270,7 +270,7 @@ curl -H "Content-Type: application/json" -X POST -d 
'{"payto_uris":["payto://x-t
 
 echo " DONE"
 
-echo -e $COLOR$BOLD"Test enter secret in a backup state ..."$NORM$NOCOLOR
+echo -en $COLOR$BOLD"Test enter secret in a backup state ..."$NORM$NOCOLOR
 
 $PREFIX anastasis-reducer -a \
   '{"secret": "veryhardtoguesssecret",
@@ -290,12 +290,14 @@ then
 fi
 
 echo " OK"
-echo -e $COLOR$BOLD"Current state of policy uploads:"$NORM$NOCOLOR
-POLICY_UPLOADS=`jq -r -e .policy_payment_requests < $TFILE`
-echo $POLICY_UPLOADS
+#echo -e $COLOR$BOLD"Current state of policy uploads:"$NORM$NOCOLOR
+#POLICY_UPLOADS=`jq -r -e .policy_payment_requests < $TFILE`
+#echo $POLICY_UPLOADS
 #Pay
-echo " "
-echo -e $COLOR$BOLD"Withdrawing amount to wallet .,.."$NORM$NOCOLOR
+
+echo -en $COLOR$BOLD"Withdrawing amount to wallet ..."$NORM$NOCOLOR
+
+rm $WALLET_DB
 taler-wallet-cli --no-throttle --wallet-db=$WALLET_DB api 
'withdrawTestBalance' \
   "$(jq -n '
     {
@@ -305,35 +307,41 @@ taler-wallet-cli --no-throttle --wallet-db=$WALLET_DB api 
'withdrawTestBalance'
     }' \
     --arg BANK_URL "$BANK_URL" \
     --arg EXCHANGE_URL "$EXCHANGE_URL"
-  )"
-taler-wallet-cli --wallet-db=$WALLET_DB run-until-done
+  )" 2> /dev/null >/dev/null
+taler-wallet-cli --wallet-db=$WALLET_DB run-until-done 2>/dev/null >/dev/null
 
 echo " OK"
-echo -e $COLOR$BOLD"Parsing policy uploads for payment-uri ..."$NORM$NOCOLOR
+
+echo -en $COLOR$BOLD"Making payments for policy uploads ... "$NORM$NOCOLOR
 OBJECT_SIZE=`jq -r -e '.policy_payment_requests | length' < $TFILE`
 for ((INDEX=0; INDEX < $OBJECT_SIZE; INDEX++))
 do
     PAY_URI=`jq --argjson INDEX $INDEX -r -e 
'.policy_payment_requests[$INDEX].payto' < $TFILE`
     # run wallet CLI
-    echo -n "."
-    taler-wallet-cli --wallet-db=$WALLET_DB handle-uri $PAY_URI -y
+    echo -n "$INDEX"
+    taler-wallet-cli --wallet-db=$WALLET_DB handle-uri $PAY_URI -y 2>/dev/null 
>/dev/null
+    echo -n ","
 done
 echo " OK"
 echo -e $COLOR$BOLD"Running wallet run-pending..."$NORM$NOCOLOR
-taler-wallet-cli --wallet-db=$WALLET_DB run-pending
+taler-wallet-cli --wallet-db=$WALLET_DB run-pending 2>/dev/null >/dev/null
 echo -e $COLOR$BOLD"Payments done"$NORM$NOCOLOR
 
-bash
-
-echo -e $COLOR$BOLD"Try to upload again ..."$NORM$NOCOLOR
+echo -en $COLOR$BOLD"Try to upload again ..."$NORM$NOCOLOR
 $PREFIX anastasis-reducer pay $TFILE $UFILE
 
+echo " OK"
+
+echo -n "Final checks ..."
+
 STATE=`jq -r -e .backup_state < $UFILE`
 if test "$STATE" != "BACKUP_FINISHED"
 then
     exit_fail "Expected new state to be BACKUP_FINISHED, got $STATE"
 fi
 
+jq -r -e .core_secret < $UFILE > /dev/null && exit_fail "'core_secret' was not 
cleared upon success"
+
 echo " OK"
 
 exit 0
diff --git a/src/reducer/anastasis_api_backup_redux.c 
b/src/reducer/anastasis_api_backup_redux.c
index 4619623..bb5d4f7 100644
--- a/src/reducer/anastasis_api_backup_redux.c
+++ b/src/reducer/anastasis_api_backup_redux.c
@@ -1358,6 +1358,10 @@ secret_share_result_cb (void *cls,
   switch (sr->ss)
   {
   case ANASTASIS_SHARE_STATUS_SUCCESS:
+    /* Just to be safe, delete the "core_secret" so that it is not
+       accidentally preserved anywhere */
+    (void) json_object_del (uc->state,
+                            "core_secret");
     set_state (uc->state,
                ANASTASIS_BACKUP_STATE_BACKUP_FINISHED);
     uc->cb (uc->cb_cls,
@@ -1511,10 +1515,37 @@ share_secret (struct UploadContext *uc)
         {
           const json_t *jmethod = json_array_get (jmethods,
                                                   j);
-          const json_t *jtruth = json_object_get (jmethod,
-                                                  "truth");
+          json_t *jtruth = NULL;
+          uint32_t truth_index;
+          const char *provider_url;
+          struct GNUNET_JSON_Specification ispec[] = {
+            GNUNET_JSON_spec_mark_optional (
+              GNUNET_JSON_spec_json ("truth",
+                                     &jtruth)),
+            GNUNET_JSON_spec_string ("provider",
+                                     &provider_url),
+            GNUNET_JSON_spec_uint32 ("authentication_method",
+                                     &truth_index),
+            GNUNET_JSON_spec_end ()
+          };
 
           GNUNET_break (NULL != jmethod);
+          if (GNUNET_OK !=
+              GNUNET_JSON_parse (jmethod,
+                                 ispec,
+                                 NULL, NULL))
+          {
+            GNUNET_break (0);
+            for (unsigned int k = 0; k<j; k++)
+              ANASTASIS_truth_free (truths[k]);
+            ANASTASIS_redux_fail_ (uc->cb,
+                                   uc->cb_cls,
+                                   TALER_EC_ANASTASIS_REDUCER_STATE_INVALID,
+                                   "'truth' failed to decode");
+            GNUNET_JSON_parse_free (spec);
+            upload_cancel_cb (uc);
+            return;
+          }
           if (NULL != jtruth)
           {
             /* Get truth by deserializing from state */
@@ -1528,6 +1559,7 @@ share_secret (struct UploadContext *uc)
                                      uc->cb_cls,
                                      TALER_EC_ANASTASIS_REDUCER_STATE_INVALID,
                                      "'truth' failed to decode");
+              GNUNET_JSON_parse_free (ispec);
               GNUNET_JSON_parse_free (spec);
               upload_cancel_cb (uc);
               return;
@@ -1542,7 +1574,9 @@ share_secret (struct UploadContext *uc)
                  tue = tue->next)
             {
               GNUNET_break (NULL != tue->t);
-              if (tue->am_idx == j)
+              if ( (tue->am_idx == truth_index) &&
+                   (0 == strcmp (provider_url,
+                                 tue->provider_url)) )
               {
                 /* Duplicate truth object */
                 json_t *jt = ANASTASIS_truth_to_json (tue->t);
@@ -1564,11 +1598,13 @@ share_secret (struct UploadContext *uc)
                                      uc->cb_cls,
                                      TALER_EC_ANASTASIS_REDUCER_STATE_INVALID,
                                      "'truth' failed to decode");
+              GNUNET_JSON_parse_free (ispec);
               GNUNET_JSON_parse_free (spec);
               upload_cancel_cb (uc);
               return;
             }
           }
+          GNUNET_JSON_parse_free (ispec);
           ctruths[j] = truths[j];
         }
         p = ANASTASIS_policy_create (ctruths,
@@ -2258,6 +2294,9 @@ pay_truths_backup (json_t *state,
                    ANASTASIS_ActionCallback cb,
                    void *cb_cls)
 {
+  /* Clear 'payments' if it exists */
+  (void) json_object_del (state,
+                          "payments");
   return upload (state,
                  cb,
                  cb_cls);
@@ -2280,6 +2319,9 @@ pay_policies_backup (json_t *state,
                      ANASTASIS_ActionCallback cb,
                      void *cb_cls)
 {
+  /* Clear 'policy_payment_requests' if it exists */
+  (void) json_object_del (state,
+                          "policy_payment_requests");
   return upload (state,
                  cb,
                  cb_cls);

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

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