actually look at recoup/revocations in libtalerexchange and expose the result to clients; make exchange API follow specification
This commit is contained in:
parent
65062e4354
commit
f6684c1ae3
@ -909,10 +909,18 @@ revocations_iter (void *cls,
|
|||||||
handle_signal (SIGTERM);
|
handle_signal (SIGTERM);
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
json_t *obj;
|
||||||
|
|
||||||
|
obj = json_pack ("{s:o}",
|
||||||
|
"h_denom_pub",
|
||||||
|
GNUNET_JSON_from_data_auto (denom_hash));
|
||||||
|
GNUNET_assert (NULL != obj);
|
||||||
GNUNET_assert (0 ==
|
GNUNET_assert (0 ==
|
||||||
json_array_append_new (rfc->recoup_array,
|
json_array_append_new (rfc->recoup_array,
|
||||||
GNUNET_JSON_from_data_auto (
|
obj));
|
||||||
denom_hash)));
|
}
|
||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,6 +153,12 @@ struct TALER_EXCHANGE_DenomPublicKey
|
|||||||
* The applicable fee to refund a coin of this denomination
|
* The applicable fee to refund a coin of this denomination
|
||||||
*/
|
*/
|
||||||
struct TALER_Amount fee_refund;
|
struct TALER_Amount fee_refund;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set to #GNUNET_YES if this denomination key has been
|
||||||
|
* revoked by the exchange.
|
||||||
|
*/
|
||||||
|
int revoked;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ struct TALER_EXCHANGE_Handle
|
|||||||
enum ExchangeHandleState state;
|
enum ExchangeHandleState state;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If GNUNET_YES, use fake now given by the user, in
|
* If #GNUNET_YES, use fake now given by the user, in
|
||||||
* request of "/keys".
|
* request of "/keys".
|
||||||
*/
|
*/
|
||||||
int with_now;
|
int with_now;
|
||||||
@ -977,6 +977,7 @@ decode_keys_json (const json_t *resp_obj,
|
|||||||
dk.valid_from);
|
dk.valid_from);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse the auditor information */
|
/* parse the auditor information */
|
||||||
{
|
{
|
||||||
json_t *auditors_array;
|
json_t *auditors_array;
|
||||||
@ -1038,6 +1039,43 @@ decode_keys_json (const json_t *resp_obj,
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* parse the revocation/recoup information */
|
||||||
|
{
|
||||||
|
json_t *recoup_array;
|
||||||
|
json_t *recoup_info;
|
||||||
|
unsigned int index;
|
||||||
|
|
||||||
|
EXITIF (NULL == (recoup_array =
|
||||||
|
json_object_get (resp_obj,
|
||||||
|
"recoup")));
|
||||||
|
EXITIF (JSON_ARRAY != json_typeof (recoup_array));
|
||||||
|
|
||||||
|
json_array_foreach (recoup_array, index, recoup_info) {
|
||||||
|
struct GNUNET_HashCode h_denom_pub;
|
||||||
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
|
GNUNET_JSON_spec_fixed_auto ("h_denom_pub",
|
||||||
|
&h_denom_pub),
|
||||||
|
GNUNET_JSON_spec_end ()
|
||||||
|
};
|
||||||
|
|
||||||
|
EXITIF (GNUNET_OK !=
|
||||||
|
GNUNET_JSON_parse (recoup_info,
|
||||||
|
spec,
|
||||||
|
NULL, NULL));
|
||||||
|
for (unsigned int j = 0;
|
||||||
|
j<key_data->num_denom_keys;
|
||||||
|
j++)
|
||||||
|
{
|
||||||
|
if (0 == GNUNET_memcmp (&h_denom_pub,
|
||||||
|
&key_data->denom_keys[j].h_key))
|
||||||
|
{
|
||||||
|
key_data->denom_keys[j].revoked = GNUNET_YES;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (check_sig)
|
if (check_sig)
|
||||||
{
|
{
|
||||||
struct TALER_ExchangeKeySetPS ks;
|
struct TALER_ExchangeKeySetPS ks;
|
||||||
|
Loading…
Reference in New Issue
Block a user