summaryrefslogtreecommitdiff
path: root/src/lib/exchange_api_common.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-05-23 16:11:21 +0200
committerChristian Grothoff <christian@grothoff.org>2022-05-23 16:11:21 +0200
commit2e80f51e2515da3cb4bae47ccf3bee9ddf3d4482 (patch)
tree396e7fdb4ac050570ebab3b9aed1b12e6d7ab9b9 /src/lib/exchange_api_common.c
parent76b8a2a8de551db8801bd42111bd959a28517cb3 (diff)
downloadexchange-2e80f51e2515da3cb4bae47ccf3bee9ddf3d4482.tar.gz
exchange-2e80f51e2515da3cb4bae47ccf3bee9ddf3d4482.tar.bz2
exchange-2e80f51e2515da3cb4bae47ccf3bee9ddf3d4482.zip
handle purse deposit client-side
Diffstat (limited to 'src/lib/exchange_api_common.c')
-rw-r--r--src/lib/exchange_api_common.c37
1 files changed, 34 insertions, 3 deletions
diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c
index a4282283d..caa8407f6 100644
--- a/src/lib/exchange_api_common.c
+++ b/src/lib/exchange_api_common.c
@@ -1167,8 +1167,39 @@ help_purse_deposit (struct CoinHistoryParseContext *pc,
const struct TALER_Amount *amount,
json_t *transaction)
{
- GNUNET_break (0); // FIXME: implement!
- return GNUNET_SYSERR;
+ struct TALER_PurseContractPublicKeyP purse_pub;
+ struct TALER_CoinSpendSignatureP coin_sig;
+ const char *exchange_base_url;
+ struct GNUNET_JSON_Specification spec[] = {
+ GNUNET_JSON_spec_fixed_auto ("purse_pub",
+ &purse_pub),
+ GNUNET_JSON_spec_fixed_auto ("coin_sig",
+ &coin_sig),
+ GNUNET_JSON_spec_string ("exchange_base_url",
+ &exchange_base_url),
+ GNUNET_JSON_spec_end ()
+ };
+
+ if (GNUNET_OK !=
+ GNUNET_JSON_parse (transaction,
+ spec,
+ NULL, NULL))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ if (GNUNET_OK !=
+ TALER_wallet_purse_deposit_verify (
+ exchange_base_url,
+ &purse_pub,
+ amount,
+ pc->coin_pub,
+ &coin_sig))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
+ return GNUNET_YES;
}
@@ -1192,7 +1223,7 @@ TALER_EXCHANGE_verify_coin_history (
{ "RECOUP", &help_recoup },
{ "RECOUP-REFRESH", &help_recoup_refresh },
{ "OLD-COIN-RECOUP", &help_old_coin_recoup },
- { "PURSE_DEPOSIT", &help_purse_deposit },
+ { "PURSE-DEPOSIT", &help_purse_deposit },
{ NULL, NULL }
};
struct CoinHistoryParseContext pc = {