aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-11-25 09:54:23 +0100
committerChristian Grothoff <christian@grothoff.org>2021-11-25 09:54:23 +0100
commit414237c335dd0f960ee07de92ff20c92b5c7afd5 (patch)
tree7f085f13c340f0a0e3c606eaf9493d4c0d807ebe /src
parentbab213e7945b03bf595bf7c36ef61421cf202ff3 (diff)
handle double-revoke gracefully
Diffstat (limited to 'src')
-rw-r--r--src/util/taler-exchange-secmod-eddsa.c9
-rw-r--r--src/util/taler-exchange-secmod-rsa.c12
-rw-r--r--src/util/test_helper_eddsa.c5
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++)