gnunet-svn
[Top][All Lists]
Advanced

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

[taler-anastasis] branch master updated: split secret selection and chal


From: gnunet
Subject: [taler-anastasis] branch master updated: split secret selection and challenge selection in reducer
Date: Tue, 13 Jul 2021 21:10:04 +0200

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 069b04c  split secret selection and challenge selection in reducer
069b04c is described below

commit 069b04c68b6caa2a435462f22451e58d96275381
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Tue Jul 13 21:10:01 2021 +0200

    split secret selection and challenge selection in reducer
---
 src/backend/anastasis-httpd_policy_upload.c        | 16 ++++--
 ...tasis_reducer_recovery_enter_user_attributes.sh | 11 ++++
 src/reducer/anastasis_api_recovery_redux.c         | 63 +++++++++++++++++++---
 src/reducer/anastasis_api_redux.h                  |  1 +
 4 files changed, 81 insertions(+), 10 deletions(-)

diff --git a/src/backend/anastasis-httpd_policy_upload.c 
b/src/backend/anastasis-httpd_policy_upload.c
index da99db5..24f150b 100644
--- a/src/backend/anastasis-httpd_policy_upload.c
+++ b/src/backend/anastasis-httpd_policy_upload.c
@@ -896,6 +896,7 @@ AH_handler_policy_post (
       {
         struct TALER_Amount zero_amount;
         enum GNUNET_DB_QueryStatus qs;
+        struct GNUNET_TIME_Relative rel;
 
         TALER_amount_get_zero (AH_currency,
                                &zero_amount);
@@ -919,17 +920,26 @@ AH_handler_policy_post (
                                              MHD_HTTP_INTERNAL_SERVER_ERROR,
                                              TALER_EC_GENERIC_DB_FETCH_FAILED,
                                              NULL);
+        rel = GNUNET_TIME_relative_multiply (
+          GNUNET_TIME_UNIT_YEARS,
+          ANASTASIS_MAX_YEARS_STORAGE);
+        GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                    "Policy lifetime is %s (%u years)\n",
+                    GNUNET_STRINGS_relative_time_to_string (rel,
+                                                            GNUNET_YES),
+                    ANASTASIS_MAX_YEARS_STORAGE);
         qs = db->increment_lifetime (db->cls,
                                      account_pub,
                                      &puc->payment_identifier,
-                                     GNUNET_TIME_relative_multiply (
-                                       GNUNET_TIME_UNIT_YEARS,
-                                       ANASTASIS_MAX_YEARS_STORAGE));
+                                     rel);
         if (qs <= 0)
+        {
+          GNUNET_break (0);
           return TALER_MHD_reply_with_error (puc->con,
                                              MHD_HTTP_INTERNAL_SERVER_ERROR,
                                              TALER_EC_GENERIC_DB_FETCH_FAILED,
                                              NULL);
+        }
       }
     }
 
diff --git a/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh 
b/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh
index d2ef21a..d0562e2 100755
--- a/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh
+++ b/src/cli/test_anastasis_reducer_recovery_enter_user_attributes.sh
@@ -414,6 +414,17 @@ anastasis-reducer -a \
 anastasis-reducer -a '{"identity_attributes": { "full_name": "Max Musterman", 
"sq_number": "4", "birthdate": "2000-01-01" }}' enter_user_attributes < $R1FILE 
> $R2FILE
 
 
+STATE=`jq -r -e .recovery_state < $R2FILE`
+if test "$STATE" != "SECRET_SELECTING"
+then
+    exit_fail "Expected new state to be 'SECRET_SELECTING', got '$STATE'"
+fi
+echo " OK"
+
+echo -n "Selecting default secret"
+mv $R2FILE $R1FILE
+anastasis-reducer next < $R1FILE > $R2FILE
+
 STATE=`jq -r -e .recovery_state < $R2FILE`
 if test "$STATE" != "CHALLENGE_SELECTING"
 then
diff --git a/src/reducer/anastasis_api_recovery_redux.c 
b/src/reducer/anastasis_api_recovery_redux.c
index 95c5b0f..d173a4c 100644
--- a/src/reducer/anastasis_api_recovery_redux.c
+++ b/src/reducer/anastasis_api_recovery_redux.c
@@ -1593,6 +1593,45 @@ change_version (json_t *state,
 }
 
 
+/**
+ * DispatchHandler/Callback function which is called for a
+ * "next" action in "secret_selecting" state.
+ *
+ * @param state state to operate on
+ * @param arguments arguments to use for operation on state
+ * @param cb callback to call during/after operation
+ * @param cb_cls callback closure
+ * @return NULL
+ */
+static struct ANASTASIS_ReduxAction *
+done_secret_selecting (json_t *state,
+                       const json_t *arguments,
+                       ANASTASIS_ActionCallback cb,
+                       void *cb_cls)
+{
+  const json_t *ri;
+
+  ri = json_object_get (state,
+                        "recovery_information");
+  if ( (NULL == ri) ||
+       (NULL == json_object_get (ri,
+                                 "challenges")) )
+  {
+    ANASTASIS_redux_fail_ (cb,
+                           cb_cls,
+                           TALER_EC_ANASTASIS_REDUCER_INPUT_INVALID_FOR_STATE,
+                           "no valid version selected");
+    return NULL;
+  }
+  set_state (state,
+             ANASTASIS_RECOVERY_STATE_CHALLENGE_SELECTING);
+  cb (cb_cls,
+      TALER_EC_NONE,
+      state);
+  return NULL;
+}
+
+
 /**
  * Signature of callback function that implements a state transition.
  *
@@ -1634,14 +1673,24 @@ ANASTASIS_recovery_action_ (json_t *state,
     DispatchHandler fun;
   } dispatchers[] = {
     {
-      ANASTASIS_RECOVERY_STATE_CHALLENGE_SELECTING,
-      "select_challenge",
-      &select_challenge
+      ANASTASIS_RECOVERY_STATE_SECRET_SELECTING,
+      "change_version",
+      &change_version
+    },
+    {
+      ANASTASIS_RECOVERY_STATE_SECRET_SELECTING,
+      "next",
+      &done_secret_selecting
+    },
+    {
+      ANASTASIS_RECOVERY_STATE_SECRET_SELECTING,
+      "back",
+      &ANASTASIS_back_generic_decrement_
     },
     {
       ANASTASIS_RECOVERY_STATE_CHALLENGE_SELECTING,
-      "change_version",
-      &change_version
+      "select_challenge",
+      &select_challenge
     },
     {
       ANASTASIS_RECOVERY_STATE_CHALLENGE_SELECTING,
@@ -2051,7 +2100,7 @@ return_no_policy (struct RecoverSecretState *rss,
   (void) json_object_del (rss->state,
                           "recovery_information");
   set_state (rss->state,
-             ANASTASIS_RECOVERY_STATE_CHALLENGE_SELECTING);
+             ANASTASIS_RECOVERY_STATE_SECRET_SELECTING);
   rss->cb (rss->cb_cls,
            TALER_EC_NONE,
            rss->state);
@@ -2205,7 +2254,7 @@ policy_lookup_cb (void *cls,
   (void) json_object_del (rss->state,
                           "recovery_error");
   set_state (rss->state,
-             ANASTASIS_RECOVERY_STATE_CHALLENGE_SELECTING);
+             ANASTASIS_RECOVERY_STATE_SECRET_SELECTING);
   rss->cb (rss->cb_cls,
            TALER_EC_NONE,
            rss->state);
diff --git a/src/reducer/anastasis_api_redux.h 
b/src/reducer/anastasis_api_redux.h
index 306caf9..19d9466 100644
--- a/src/reducer/anastasis_api_redux.h
+++ b/src/reducer/anastasis_api_redux.h
@@ -59,6 +59,7 @@ enum ANASTASIS_BackupState
 
 #define ANASTASIS_RECOVERY_STATES(REDUX_STATE) \
   ANASTASIS_GENERIC_STATES (REDUX_STATE) \
+  REDUX_STATE (SECRET_SELECTING)  \
   REDUX_STATE (CHALLENGE_SELECTING)  \
   REDUX_STATE (CHALLENGE_PAYING)   \
   REDUX_STATE (CHALLENGE_SOLVING)  \

-- 
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]