[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-anastasis] branch master updated: split secret selection and challenge selection in reducer,
gnunet <=