diff options
-rw-r--r-- | src/lib/exchange_api_handle.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index 5ce5285d0..215f122be 100644 --- a/src/lib/exchange_api_handle.c +++ b/src/lib/exchange_api_handle.c @@ -694,9 +694,8 @@ decode_keys_json (const json_t *resp_obj, GNUNET_JSON_spec_string ("currency", ¤cy), GNUNET_JSON_spec_mark_optional ( - TALER_JSON_spec_amount ("wallet_balance_limit_without_kyc", - currency, - &key_data->wallet_balance_limit_without_kyc)), + TALER_JSON_spec_amount_any ("wallet_balance_limit_without_kyc", + &key_data->wallet_balance_limit_without_kyc)), GNUNET_JSON_spec_end () }; @@ -763,6 +762,17 @@ decode_keys_json (const json_t *resp_obj, (check_sig) ? mspec : &mspec[2], NULL, NULL)); key_data->currency = GNUNET_strdup (currency); + + if (GNUNET_OK == + TALER_amount_is_valid (&key_data->wallet_balance_limit_without_kyc)) + { + if (0 != strcasecmp (currency, + key_data->wallet_balance_limit_without_kyc.currency)) + { + GNUNET_break_op (0); + return GNUNET_SYSERR; + } + } /* parse the master public key and issue date of the response */ if (check_sig) hash_context = GNUNET_CRYPTO_hash_context_start (); |