diff options
author | Christian Grothoff <christian@grothoff.org> | 2021-11-25 09:54:23 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2021-11-25 09:54:23 +0100 |
commit | 414237c335dd0f960ee07de92ff20c92b5c7afd5 (patch) | |
tree | 7f085f13c340f0a0e3c606eaf9493d4c0d807ebe /src | |
parent | bab213e7945b03bf595bf7c36ef61421cf202ff3 (diff) |
handle double-revoke gracefully
Diffstat (limited to 'src')
-rw-r--r-- | src/util/taler-exchange-secmod-eddsa.c | 9 | ||||
-rw-r--r-- | src/util/taler-exchange-secmod-rsa.c | 12 | ||||
-rw-r--r-- | src/util/test_helper_eddsa.c | 5 |
3 files changed, 21 insertions, 5 deletions
diff --git a/src/util/taler-exchange-secmod-eddsa.c b/src/util/taler-exchange-secmod-eddsa.c index f49b9865e..3fe9b284e 100644 --- a/src/util/taler-exchange-secmod-eddsa.c +++ b/src/util/taler-exchange-secmod-eddsa.c @@ -454,7 +454,14 @@ handle_revoke_request (struct TES_Client *client, "Revocation request ignored, key unknown\n"); return GNUNET_OK; } - + if (key->purge) + { + GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock)); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Revocation request ignored, key %s already revoked\n", + TALER_B2S (&key->exchange_pub)); + return GNUNET_OK; + } key_gen++; GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Revoking key %s, bumping generation to %llu\n", diff --git a/src/util/taler-exchange-secmod-rsa.c b/src/util/taler-exchange-secmod-rsa.c index a2bbaf055..b384be138 100644 --- a/src/util/taler-exchange-secmod-rsa.c +++ b/src/util/taler-exchange-secmod-rsa.c @@ -573,11 +573,19 @@ handle_revoke_request (struct TES_Client *client, GNUNET_h2s (&rr->h_rsa.hash)); return GNUNET_OK; } + if (dk->purge) + { + GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock)); + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, + "Revocation request ignored, denomination key %s already revoked\n", + GNUNET_h2s (&rr->h_rsa.hash)); + return GNUNET_OK; + } key_gen++; GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Revoking key %p, bumping generation to %llu\n", - dk, + "Revoking key %s, bumping generation to %llu\n", + GNUNET_h2s (&rr->h_rsa.hash), (unsigned long long) key_gen); purge_key (dk); diff --git a/src/util/test_helper_eddsa.c b/src/util/test_helper_eddsa.c index 97800e2ca..d0d3d433d 100644 --- a/src/util/test_helper_eddsa.c +++ b/src/util/test_helper_eddsa.c @@ -197,8 +197,9 @@ test_revocation (struct TALER_CRYPTO_ExchangeSignHelper *esh) } keys[j].revoked = true; fprintf (stderr, - "Revoking key %s ...", - TALER_B2S (&keys[j].exchange_pub)); + "Revoking key %s (%u) ...", + TALER_B2S (&keys[j].exchange_pub), + j); TALER_CRYPTO_helper_esign_revoke (esh, &keys[j].exchange_pub); for (unsigned int k = 0; k<1000; k++) |