summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-10-14 15:49:35 +0200
committerFlorian Dold <florian@dold.me>2021-10-14 15:49:35 +0200
commiteaeb2b9500195db15a0e8eb58795496ad69abe4a (patch)
tree9b90a21b0fbe0aca6faec37c1c3e9a0f8b37dd66
parent685a68664c06f66b00e315fa34379e249f393fba (diff)
downloadanastasis-eaeb2b9500195db15a0e8eb58795496ad69abe4a.tar.gz
anastasis-eaeb2b9500195db15a0e8eb58795496ad69abe4a.tar.bz2
anastasis-eaeb2b9500195db15a0e8eb58795496ad69abe4a.zip
docs
-rw-r--r--doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pycbin15399 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pycbin514 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pycbin518 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pycbin520 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pycbin24431 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pycbin24436 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pycbin24344 -> 0 bytes
-rw-r--r--doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pycbin6548 -> 0 bytes
-rw-r--r--doc/sphinx/reducer.rst378
9 files changed, 189 insertions, 189 deletions
diff --git a/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc b/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc
deleted file mode 100644
index 077f3c9..0000000
--- a/doc/sphinx/_exts/__pycache__/typescriptdomain.cpython-39.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc
deleted file mode 100644
index 6f0c344..0000000
--- a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-37.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc
deleted file mode 100644
index 2b7f52b..0000000
--- a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-38.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc b/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 0323e4b..0000000
--- a/doc/sphinx/_exts/httpdomain/__pycache__/__init__.cpython-39.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc
deleted file mode 100644
index 031c4ed..0000000
--- a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-37.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc
deleted file mode 100644
index 062d289..0000000
--- a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-38.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc b/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc
deleted file mode 100644
index 32e2273..0000000
--- a/doc/sphinx/_exts/httpdomain/__pycache__/httpdomain.cpython-39.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc b/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc
deleted file mode 100644
index 7f4021b..0000000
--- a/doc/sphinx/_exts/taler_sphinx_theme/__pycache__/__init__.cpython-39.pyc
+++ /dev/null
Binary files differ
diff --git a/doc/sphinx/reducer.rst b/doc/sphinx/reducer.rst
index 2c75578..9728d7d 100644
--- a/doc/sphinx/reducer.rst
+++ b/doc/sphinx/reducer.rst
@@ -1458,236 +1458,236 @@ information about attempted challenges, with the final state being ``solved``:
Challenges feedback for a challenge can have many different ``state`` values
that applications must all handle. States other than ``solved`` are:
- - **payment**: Here, the user must pay for a challenge. An example would be:
+- **payment**: Here, the user must pay for a challenge. An example would be:
+
+ .. code-block:: json
+
+ {
+ "backup_state": "CHALLENGE_PAYING",
+ "selected_challenge_uuid": "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30",
+ "challenge_feedback": {
+ "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : {
+ "state" : "payment",
+ "taler_pay_uri" : "taler://pay/...",
+ "provider" : "https://localhost:8080/",
+ "payment_secret" : "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
+ }
+ }
+ }
- .. code-block:: json
+- **body**: Here, the server provided an HTTP reply for
+ how to solve the challenge, but the reducer could not parse
+ them into a known format. A mime-type may be provided and may
+ help parse the details.
- {
- "backup_state": "CHALLENGE_PAYING",
- "selected_challenge_uuid": "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30",
- "challenge_feedback": {
- "80H646H5ZBR453C02Y5RT55VQSJZGM5REWFXVY0SWXY1TNE8CT30" : {
- "state" : "payment",
- "taler_pay_uri" : "taler://pay/...",
- "provider" : "https://localhost:8080/",
- "payment_secret" : "3P4561HAMHRRYEYD6CM6J7TS5VTD5SR2K2EXJDZEFSX92XKHR4KG"
- }
- }
- }
+ .. code-block:: json
- - **body**: Here, the server provided an HTTP reply for
- how to solve the challenge, but the reducer could not parse
- them into a known format. A mime-type may be provided and may
- help parse the details.
+ {
+ "recovery_state": "CHALLENGE_SOLVING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "body",
+ "body": "CROCKFORDBASE32ENCODEDBODY",
+ "http_status": 403,
+ "mime_type" : "anything/possible"
+ }
+ }
+ }
- .. code-block:: json
+- **hint**: Here, the server provided human-readable hint for
+ how to solve the challenge. Note that the ``hint`` provided this
+ time is from the Anastasis provider and may differ from the ``instructions``
+ for the challenge under ``recovery_information``:
- {
- "recovery_state": "CHALLENGE_SOLVING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "body",
- "body": "CROCKFORDBASE32ENCODEDBODY",
- "http_status": 403,
- "mime_type" : "anything/possible"
- }
- }
- }
+ .. code-block:: json
- - **hint**: Here, the server provided human-readable hint for
- how to solve the challenge. Note that the ``hint`` provided this
- time is from the Anastasis provider and may differ from the ``instructions``
- for the challenge under ``recovery_information``:
+ {
+ "recovery_state": "CHALLENGE_SOLVING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "hint",
+ "hint": "Recovery TAN send to email mail@DOMAIN",
+ "http_status": 403
+ }
+ }
+ }
- .. code-block:: json
+- **details**: Here, the server provided a detailed JSON status response
+ related to solving the challenge:
- {
- "recovery_state": "CHALLENGE_SOLVING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "hint",
- "hint": "Recovery TAN send to email mail@DOMAIN",
- "http_status": 403
- }
- }
+ .. code-block:: json
+
+ {
+ "recovery_state": "CHALLENGE_SOLVING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "details",
+ "details": {
+ "code": 8111,
+ "hint": "The client's response to the challenge was invalid.",
+ "detail" : null
+ },
+ "http_status": 403
}
+ }
+ }
- - **details**: Here, the server provided a detailed JSON status response
- related to solving the challenge:
+- **redirect**: To solve the challenge, the user must visit the indicated
+ Web site at ``redirect_url``, for example to perform video authentication:
- .. code-block:: json
+ .. code-block:: json
- {
- "recovery_state": "CHALLENGE_SOLVING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "details",
- "details": {
- "code": 8111,
- "hint": "The client's response to the challenge was invalid.",
- "detail" : null
- },
- "http_status": 403
- }
+ {
+ "recovery_state": "CHALLENGE_SOLVING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "redirect",
+ "redirect_url": "https://videoconf.example.com/",
+ "http_status": 303
}
}
+ }
- - **redirect**: To solve the challenge, the user must visit the indicated
- Web site at ``redirect_url``, for example to perform video authentication:
+- **server-failure**: This indicates that the Anastasis provider encountered
+ a failure and recovery using this challenge cannot proceed at this time.
+ Examples for failures might be that the provider is unable to send SMS
+ messages at this time due to an outage. The body includes details about
+ the failure. The user may try again later or continue with other challenges.
- .. code-block:: json
+ .. code-block:: json
- {
- "recovery_state": "CHALLENGE_SOLVING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "redirect",
- "redirect_url": "https://videoconf.example.com/",
- "http_status": 303
- }
- }
+ {
+ "recovery_state": "CHALLENGE_SELECTING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "server-failure",
+ "http_status": "500",
+ "error_code": 52
}
+ }
+ }
- - **server-failure**: This indicates that the Anastasis provider encountered
- a failure and recovery using this challenge cannot proceed at this time.
- Examples for failures might be that the provider is unable to send SMS
- messages at this time due to an outage. The body includes details about
- the failure. The user may try again later or continue with other challenges.
+- **truth-unknown**: This indicates that the Anastasis provider is unaware of
+ the specified challenge. This is typically a permanent failure, and user
+ interfaces should not allow users to re-try this challenge.
- .. code-block:: json
+ .. code-block:: json
- {
- "recovery_state": "CHALLENGE_SELECTING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "server-failure",
- "http_status": "500",
- "error_code": 52
- }
+ {
+ "recovery_state": "CHALLENGE_SELECTING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "truth-unknown",
+ "error_code": 8108
}
}
+ }
- - **truth-unknown**: This indicates that the Anastasis provider is unaware of
- the specified challenge. This is typically a permanent failure, and user
- interfaces should not allow users to re-try this challenge.
+- **rate-limit-exceeded**: This indicates that the user has made too many invalid attempts in too short an amount of time.
- .. code-block:: json
+ .. code-block:: json
- {
- "recovery_state": "CHALLENGE_SELECTING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "truth-unknown",
- "error_code": 8108
- }
- }
- }
+ {
+ "recovery_state": "CHALLENGE_SELECTING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "rate-limit-exceeded",
+ "error_code": 8121
+ }
+ }
+ }
- - **rate-limit-exceeded**: This indicates that the user has made too many invalid attempts in too short an amount of time.
+- **authentication-timeout**: This indicates that the challenge is awaiting for some external authentication process to complete. The application should ``poll`` for it to complete, or proceed with selecting other challenges.
- .. code-block:: json
+ .. code-block:: json
- {
- "recovery_state": "CHALLENGE_SELECTING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "rate-limit-exceeded",
- "error_code": 8121
- }
- }
+ {
+ "recovery_state": "CHALLENGE_SELECTING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "authentication-timeout",
+ "error_code": 8122
}
+ }
+ }
- - **authentication-timeout**: This indicates that the challenge is awaiting for some external authentication process to complete. The application should ``poll`` for it to complete, or proceed with selecting other challenges.
+- **external-instructions**: This indicates that the challenge requires the user to perform some authentication method-specific actions. Details about what the user should do are provided.
- .. code-block:: json
+ .. code-block:: json
- {
- "recovery_state": "CHALLENGE_SELECTING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "authentication-timeout",
- "error_code": 8122
- }
+ {
+ "recovery_state": "CHALLENGE_SELECTING",
+ "recovery_information": {
+ "...": "..."
+ }
+ "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
+ "challenge_feedback": {
+ "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
+ "state": "external-instructions",
+ "method": "iban",
+ "async": true, // optional
+ "answer_code": 987654321, // optional
+ "details": {
+ "...": "..."
}
}
+ }
+ }
- - **external-instructions**: This indicates that the challenge requires the user to perform some authentication method-specific actions. Details about what the user should do are provided.
-
- .. code-block:: json
-
- {
- "recovery_state": "CHALLENGE_SELECTING",
- "recovery_information": {
- "...": "..."
- }
- "selected_challenge_uuid": "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0",
- "challenge_feedback": {
- "TXYKGE1SJZHJ4M2FKSV1P2RZVNTHZFB9E3A79QE956D3SCAWXPK0": {
- "state": "external-instructions",
- "method": "iban",
- "async": true, // optional
- "answer_code": 987654321, // optional
- "details": {
- "...": "..."
- }
- }
- }
- }
+ If "async" is "true", then the client should
+ poll for the challenge being satisfied using
+ the "answer_code" that has been provided.
- If "async" is "true", then the client should
- poll for the challenge being satisfied using
- the "answer_code" that has been provided.
+ The specific instructions on how to satisfy
+ the challenge depend on the ``method``.
+ They include:
- The specific instructions on how to satisfy
- the challenge depend on the ``method``.
- They include:
+ - **iban**: The user must perform a wire transfer from their account to the Anastasis provider.
- - **iban**: The user must perform a wire transfer from their account to the Anastasis provider.
+ .. code-block:: json
- .. code-block:: json
+ {
+ "challenge_amount": "EUR:1",
+ "credit_iban": "DE12345789000",
+ "business_name": "Data Loss Incorporated",
+ "wire_transfer_subject": "Anastasis 987654321"
+ }
- {
- "challenge_amount": "EUR:1",
- "credit_iban": "DE12345789000",
- "business_name": "Data Loss Incorporated",
- "wire_transfer_subject": "Anastasis 987654321"
- }
-
- Note that the actual wire transfer subject must contain both
- the numeric ``answer_code`` as well as
- the string ``Anastasis``.
+ Note that the actual wire transfer subject must contain both
+ the numeric ``answer_code`` as well as
+ the string ``Anastasis``.
**poll:**