diff options
author | Christian Grothoff <christian@grothoff.org> | 2023-07-11 20:36:52 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2023-07-11 20:36:52 +0200 |
commit | a5451527cb26d876388567dc26113a83e0b79e15 (patch) | |
tree | e034247b14e29f19e9c515561fc0f24d1a833671 | |
parent | e984dbd8f48b6f4588d39e4c30ef8bceaad7e55d (diff) |
implement 'lost' field for #7883
m--------- | doc/prebuilt | 0 | ||||
-rw-r--r-- | src/exchange/taler-exchange-httpd_keys.c | 18 | ||||
-rw-r--r-- | src/include/taler_exchange_service.h | 7 | ||||
-rw-r--r-- | src/lib/exchange_api_handle.c | 4 |
4 files changed, 28 insertions, 1 deletions
diff --git a/doc/prebuilt b/doc/prebuilt -Subproject fa4729db5637c82d5fc6f5bb7021f6c350c8c5a +Subproject 66e99d09d4351bb6e6c5fd442f14ec7cf1363a8 diff --git a/src/exchange/taler-exchange-httpd_keys.c b/src/exchange/taler-exchange-httpd_keys.c index d1d8edc26..2c705829f 100644 --- a/src/exchange/taler-exchange-httpd_keys.c +++ b/src/exchange/taler-exchange-httpd_keys.c @@ -2960,8 +2960,18 @@ finish_keys_response (struct TEH_KeyStateHandle *ksh) /* Now that we have found/created the right group, add the denomination to the list */ { + struct HelperDenomination *hd; 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) { case TALER_DENOMINATION_RSA: @@ -2984,6 +2994,12 @@ finish_keys_response (struct TEH_KeyStateHandle *ksh) entry = GNUNET_JSON_PACK ( GNUNET_JSON_pack_data_auto ("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", dk->meta.start), GNUNET_JSON_pack_timestamp ("stamp_expire_withdraw", diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h index ac4bc6c3c..befe97192 100644 --- a/src/include/taler_exchange_service.h +++ b/src/include/taler_exchange_service.h @@ -121,6 +121,13 @@ struct TALER_EXCHANGE_DenomPublicKey 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 * revoked by the exchange. */ diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c index 996e62734..6d1e7b692 100644 --- a/src/lib/exchange_api_handle.c +++ b/src/lib/exchange_api_handle.c @@ -246,6 +246,10 @@ parse_json_denomkey_partially ( &denom_key->valid_from), GNUNET_JSON_spec_timestamp ("stamp_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, cipher, &denom_key->key), |