commit 04849cb64430b4c05f0628e3045e81749f4a37a6
parent c7bbc121a50da91ca5603fbecfaab47319da88b0
Author: Christian Grothoff <christian@grothoff.org>
Date: Thu, 13 Aug 2026 20:01:12 +0200
do not use revoked keys (defense-in-depth)
Diffstat:
2 files changed, 27 insertions(+), 0 deletions(-)
diff --git a/src/util/secmod_cs.c b/src/util/secmod_cs.c
@@ -459,6 +459,15 @@ do_sign (const struct TALER_CsPubHashP *h_cs,
GNUNET_h2s (&h_cs->hash));
return TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN;
}
+ if (dk->purge)
+ {
+ /* key was revoked, it must not be used for signing anymore */
+ GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock));
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Signing request failed, denomination key %s was revoked\n",
+ GNUNET_h2s (&h_cs->hash));
+ return TALER_EC_EXCHANGE_GENERIC_DENOMINATION_REVOKED;
+ }
if (GNUNET_TIME_absolute_is_future (dk->anchor_start.abs_time))
{
GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock));
@@ -634,6 +643,15 @@ do_derive (const struct TALER_CsPubHashP *h_cs,
GNUNET_h2s (&h_cs->hash));
return TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN;
}
+ if (dk->purge)
+ {
+ /* key was revoked, it must not be used for deriving anymore */
+ GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock));
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "R Derive request failed, denomination key %s was revoked\n",
+ GNUNET_h2s (&h_cs->hash));
+ return TALER_EC_EXCHANGE_GENERIC_DENOMINATION_REVOKED;
+ }
if (GNUNET_TIME_absolute_is_future (dk->anchor_start.abs_time))
{
GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock));
diff --git a/src/util/secmod_rsa.c b/src/util/secmod_rsa.c
@@ -438,6 +438,15 @@ do_sign (const struct TALER_RsaPubHashP *h_rsa,
GNUNET_h2s (&h_rsa->hash));
return TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN;
}
+ if (dk->purge)
+ {
+ /* key was revoked, it must not be used for signing anymore */
+ GNUNET_assert (0 == pthread_mutex_unlock (&keys_lock));
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Signing request failed, denomination key %s was revoked\n",
+ GNUNET_h2s (&h_rsa->hash));
+ return TALER_EC_EXCHANGE_GENERIC_DENOMINATION_REVOKED;
+ }
if (GNUNET_TIME_absolute_is_future (dk->anchor_start.abs_time))
{
/* it is too early */