implement 'lost' field for #7883

This commit is contained in:
Christian Grothoff 2023-07-11 20:36:52 +02:00
parent e984dbd8f4
commit a5451527cb
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
4 changed files with 28 additions and 1 deletions

@ -1 +1 @@
Subproject commit fa4729db5637c82d5fc6f5bb7021f6c350c8c5a6 Subproject commit 66e99d09d4351bb6e6c5fd442f14ec7cf1363a81

View File

@ -2960,8 +2960,18 @@ finish_keys_response (struct TEH_KeyStateHandle *ksh)
/* Now that we have found/created the right group, add the /* Now that we have found/created the right group, add the
denomination to the list */ denomination to the list */
{ {
struct HelperDenomination *hd;
struct GNUNET_JSON_PackSpec key_spec; struct GNUNET_JSON_PackSpec key_spec;
bool private_key_lost;
hd = GNUNET_CONTAINER_multihashmap_get (ksh->helpers->denom_keys,
&dk->h_denom_pub.hash);
private_key_lost
= (NULL == hd) ||
GNUNET_TIME_absolute_is_past (
GNUNET_TIME_absolute_add (
hd->start_time.abs_time,
hd->validity_duration));
switch (meta.cipher) switch (meta.cipher)
{ {
case TALER_DENOMINATION_RSA: case TALER_DENOMINATION_RSA:
@ -2984,6 +2994,12 @@ finish_keys_response (struct TEH_KeyStateHandle *ksh)
entry = GNUNET_JSON_PACK ( entry = GNUNET_JSON_PACK (
GNUNET_JSON_pack_data_auto ("master_sig", GNUNET_JSON_pack_data_auto ("master_sig",
&dk->master_sig), &dk->master_sig),
GNUNET_JSON_pack_allow_null (
private_key_lost
? GNUNET_JSON_pack_bool ("lost",
true)
: GNUNET_JSON_pack_string ("dummy",
NULL)),
GNUNET_JSON_pack_timestamp ("stamp_start", GNUNET_JSON_pack_timestamp ("stamp_start",
dk->meta.start), dk->meta.start),
GNUNET_JSON_pack_timestamp ("stamp_expire_withdraw", GNUNET_JSON_pack_timestamp ("stamp_expire_withdraw",

View File

@ -120,6 +120,13 @@ struct TALER_EXCHANGE_DenomPublicKey
*/ */
struct TALER_DenomFeeSet fees; struct TALER_DenomFeeSet fees;
/**
* Set to true if the private denomination key has been
* lost by the exchange and thus the key cannot be
* used for withdrawing at this time.
*/
bool lost;
/** /**
* Set to true if this denomination key has been * Set to true if this denomination key has been
* revoked by the exchange. * revoked by the exchange.

View File

@ -246,6 +246,10 @@ parse_json_denomkey_partially (
&denom_key->valid_from), &denom_key->valid_from),
GNUNET_JSON_spec_timestamp ("stamp_expire_legal", GNUNET_JSON_spec_timestamp ("stamp_expire_legal",
&denom_key->expire_legal), &denom_key->expire_legal),
GNUNET_JSON_spec_mark_optional (
GNUNET_JSON_spec_bool ("lost",
&denom_key->lost),
NULL),
TALER_JSON_spec_denom_pub_cipher (NULL, TALER_JSON_spec_denom_pub_cipher (NULL,
cipher, cipher,
&denom_key->key), &denom_key->key),