aboutsummaryrefslogtreecommitdiff
path: root/src/exchange
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-02-02 14:55:56 +0100
committerChristian Grothoff <christian@grothoff.org>2023-02-02 14:55:56 +0100
commit3898054b1070db0c6be0fa9f6772637069aa34e2 (patch)
treecbe917775e0a44ef4e3140d9d605194f20136c39 /src/exchange
parenteab95d015412833c96568fb91d25aa23c53c45cd (diff)
downloadexchange-3898054b1070db0c6be0fa9f6772637069aa34e2.tar.gz
exchange-3898054b1070db0c6be0fa9f6772637069aa34e2.tar.bz2
exchange-3898054b1070db0c6be0fa9f6772637069aa34e2.zip
more work on KYC/AML decision inspection
Diffstat (limited to 'src/exchange')
-rw-r--r--src/exchange/taler-exchange-httpd_aml-decision-get.c11
-rw-r--r--src/exchange/taler-exchange-httpd_aml-decision.h4
-rw-r--r--src/exchange/taler-exchange-httpd_aml-decisions-get.c51
3 files changed, 37 insertions, 29 deletions
diff --git a/src/exchange/taler-exchange-httpd_aml-decision-get.c b/src/exchange/taler-exchange-httpd_aml-decision-get.c
index 0754c0b86..09f9c8e86 100644
--- a/src/exchange/taler-exchange-httpd_aml-decision-get.c
+++ b/src/exchange/taler-exchange-httpd_aml-decision-get.c
@@ -64,8 +64,10 @@ kyc_attribute_cb (
json_t *kyc_attributes = cls;
json_t *attributes;
- attributes = NULL; // FIXME
-
+ attributes = TALER_CRYPTO_kyc_attributes_decrypt (&TEH_attribute_key,
+ enc_attributes,
+ enc_attributes_size);
+ GNUNET_break (NULL != attributes);
GNUNET_assert (
0 ==
json_array_append (
@@ -77,8 +79,9 @@ kyc_attribute_cb (
collection_time),
GNUNET_JSON_pack_timestamp ("expiration_time",
expiration_time),
- GNUNET_JSON_pack_object_steal ("attributes",
- attributes)
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_object_steal ("attributes",
+ attributes))
)));
}
diff --git a/src/exchange/taler-exchange-httpd_aml-decision.h b/src/exchange/taler-exchange-httpd_aml-decision.h
index 033db4a89..8af742c0a 100644
--- a/src/exchange/taler-exchange-httpd_aml-decision.h
+++ b/src/exchange/taler-exchange-httpd_aml-decision.h
@@ -43,13 +43,13 @@ TEH_handler_post_aml_decision (
/**
- * Handle a GET "/aml/$OFFICER_PUB/decisions" request. Parses the request
+ * Handle a GET "/aml/$OFFICER_PUB/decisions/$STATE" request. Parses the request
* details, checks the signatures and if appropriately authorized returns
* the matching decisions.
*
* @param rc request context
* @param officer_pub public key of the AML officer who made the request
- * @param args GET arguments (should be none)
+ * @param args GET arguments (should be the state)
* @return MHD result code
*/
MHD_RESULT
diff --git a/src/exchange/taler-exchange-httpd_aml-decisions-get.c b/src/exchange/taler-exchange-httpd_aml-decisions-get.c
index 9f2fae3b7..7c4a137d9 100644
--- a/src/exchange/taler-exchange-httpd_aml-decisions-get.c
+++ b/src/exchange/taler-exchange-httpd_aml-decisions-get.c
@@ -80,13 +80,12 @@ TEH_handler_aml_decisions_get (
const char *const args[])
{
struct TALER_AmlOfficerSignatureP officer_sig;
- bool frozen = false;
- bool pending = false;
- bool normal = false;
+ enum TALER_AmlDecisionState decision;
int delta = -20;
unsigned long long start = INT64_MAX;
+ const char *state_str = args[0];
- if (NULL != args[0])
+ if (NULL == state_str)
{
GNUNET_break_op (0);
return TALER_MHD_reply_with_error (rc->connection,
@@ -94,6 +93,31 @@ TEH_handler_aml_decisions_get (
TALER_EC_GENERIC_ENDPOINT_UNKNOWN,
args[0]);
}
+ if (0 == strcmp (state_str,
+ "pending"))
+ decision = TALER_AML_PENDING;
+ else if (0 == strcmp (state_str,
+ "frozen"))
+ decision = TALER_AML_FROZEN;
+ if (0 == strcmp (state_str,
+ "normal"))
+ decision = TALER_AML_NORMAL;
+ else
+ {
+ GNUNET_break_op (0);
+ return TALER_MHD_reply_with_error (rc->connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_ENDPOINT_UNKNOWN,
+ state_str);
+ }
+ if (NULL != args[1])
+ {
+ GNUNET_break_op (0);
+ return TALER_MHD_reply_with_error (rc->connection,
+ MHD_HTTP_BAD_REQUEST,
+ TALER_EC_GENERIC_ENDPOINT_UNKNOWN,
+ args[1]);
+ }
{
const char *sig_hdr;
@@ -124,24 +148,6 @@ TEH_handler_aml_decisions_get (
p = MHD_lookup_connection_value (rc->connection,
MHD_GET_ARGUMENT_KIND,
- "frozen");
- if (NULL != p)
- frozen = (0 == strcasecmp (p,
- "yes"));
- p = MHD_lookup_connection_value (rc->connection,
- MHD_GET_ARGUMENT_KIND,
- "pending");
- if (NULL != p)
- pending = (0 == strcasecmp (p,
- "yes"));
- p = MHD_lookup_connection_value (rc->connection,
- MHD_GET_ARGUMENT_KIND,
- "normal");
- if (NULL != p)
- normal = (0 == strcasecmp (p,
- "yes"));
- p = MHD_lookup_connection_value (rc->connection,
- MHD_GET_ARGUMENT_KIND,
"start");
if (NULL != p)
{
@@ -183,7 +189,6 @@ TEH_handler_aml_decisions_get (
{
json_t *records;
enum GNUNET_DB_QueryStatus qs;
- enum TALER_AmlDecisionState decision = 42; // FIXME!
records = json_array ();
GNUNET_assert (NULL != records);