summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-11-17 23:02:05 +0100
committerChristian Grothoff <christian@grothoff.org>2021-11-17 23:02:05 +0100
commitb61f601028f38a6c56aa00f171fa20605ca8c663 (patch)
treed433a1e721677b1445151ad41acd0ca29914adc0 /src/lib
parent2078dd1bfbf942d36923d24836a29e40ff24989a (diff)
downloadexchange-b61f601028f38a6c56aa00f171fa20605ca8c663.tar.gz
exchange-b61f601028f38a6c56aa00f171fa20605ca8c663.tar.bz2
exchange-b61f601028f38a6c56aa00f171fa20605ca8c663.zip
-use different hash for RSA vs. Denomination hashing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/exchange_api_management_get_keys.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/src/lib/exchange_api_management_get_keys.c b/src/lib/exchange_api_management_get_keys.c
index 980836792..5e6024f27 100644
--- a/src/lib/exchange_api_management_get_keys.c
+++ b/src/lib/exchange_api_management_get_keys.c
@@ -219,20 +219,37 @@ handle_ok (struct TALER_EXCHANGE_ManagementGetKeysHandle *gh,
TALER_denom_pub_hash (&denom_key->key,
&h_denom_pub);
- if (GNUNET_OK !=
- TALER_exchange_secmod_denom_verify (&h_denom_pub,
- section_name,
- denom_key->valid_from,
- duration,
- &fk.denom_secmod_public_key,
- &denom_key->denom_secmod_sig))
+ switch (denom_key->key.cipher)
{
+ case TALER_DENOMINATION_RSA:
+ {
+ struct TALER_RsaPubHashP h_rsa;
+
+ TALER_rsa_pub_hash (denom_key->key.details.rsa_public_key,
+ &h_rsa);
+ if (GNUNET_OK !=
+ TALER_exchange_secmod_rsa_verify (&h_rsa,
+ section_name,
+ denom_key->valid_from,
+ duration,
+ &fk.denom_secmod_public_key,
+ &denom_key->denom_secmod_sig))
+ {
+ GNUNET_break_op (0);
+ ok = false;
+ break;
+ }
+ }
+ break;
+ default:
GNUNET_break_op (0);
ok = false;
break;
}
}
GNUNET_JSON_parse_free (spec);
+ if (! ok)
+ break;
}
if (ok)
{