summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-11-05 22:48:11 +0100
committerChristian Grothoff <christian@grothoff.org>2021-11-05 22:48:11 +0100
commiteaf9d728f54681be4e9ed3467ff9d10e71ad2b04 (patch)
tree3fc06dfc4a1dca958f3b810b740f915215503d1d
parentba627bf84c89ea93a117bce8563b30a3d460e633 (diff)
downloadexchange-eaf9d728f54681be4e9ed3467ff9d10e71ad2b04.tar.gz
exchange-eaf9d728f54681be4e9ed3467ff9d10e71ad2b04.tar.bz2
exchange-eaf9d728f54681be4e9ed3467ff9d10e71ad2b04.zip
more crypto refactoring
-rw-r--r--src/include/taler_crypto_lib.h15
-rw-r--r--src/lib/exchange_api_link.c16
-rw-r--r--src/util/crypto.c37
-rw-r--r--src/util/denom.c2
4 files changed, 22 insertions, 48 deletions
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h
index 961c36695..0a0be0cb7 100644
--- a/src/include/taler_crypto_lib.h
+++ b/src/include/taler_crypto_lib.h
@@ -2165,19 +2165,4 @@ TALER_rsa_blind (const struct TALER_CoinPubHash *hash,
size_t *buf_size);
-/**
- * Unblind a blind-signed signature. The signature should have been generated
- * with GNUNET_CRYPTO_rsa_sign() using a hash that was blinded with
- * GNUNET_CRYPTO_rsa_blind().
- *
- * @param sig the signature made on the blinded signature purpose
- * @param bks the blinding key secret used to blind the signature purpose
- * @param pkey the public key of the signer
- * @return unblinded signature on success, NULL if RSA key is bad or malicious.
- */
-struct GNUNET_CRYPTO_RsaSignature *
-TALER_rsa_unblind (const struct GNUNET_CRYPTO_RsaSignature *sig,
- const struct GNUNET_CRYPTO_RsaBlindingKeySecret *bks,
- struct GNUNET_CRYPTO_RsaPublicKey *pkey);
-
#endif
diff --git a/src/lib/exchange_api_link.c b/src/lib/exchange_api_link.c
index f544e71e3..a9dc8852f 100644
--- a/src/lib/exchange_api_link.c
+++ b/src/lib/exchange_api_link.c
@@ -123,14 +123,16 @@ parse_link_coin (const struct TALER_EXCHANGE_LinkHandle *lh,
&fc);
/* extract coin and signature */
+ if (GNUNET_OK !=
+ TALER_denom_sig_unblind (sig,
+ &bsig,
+ &fc.blinding_key,
+ &rpub))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
*coin_priv = fc.coin_priv;
- // FIXME: use more generlized unblinding API!
- GNUNET_assert (TALER_DENOMINATION_RSA == bsig.cipher);
- sig->cipher = TALER_DENOMINATION_RSA;
- sig->details.rsa_signature
- = TALER_rsa_unblind (bsig.details.blinded_rsa_signature,
- &fc.blinding_key.rsa_bks,
- rpub.details.rsa_public_key);
/* verify link_sig */
{
struct TALER_PlanchetDetail pd;
diff --git a/src/util/crypto.c b/src/util/crypto.c
index 668a91adf..7d4a431c6 100644
--- a/src/util/crypto.c
+++ b/src/util/crypto.c
@@ -188,9 +188,8 @@ TALER_planchet_prepare (const struct TALER_DenominationPublicKey *dk,
// FIXME-Oec: replace with function that
// also hashes the age vector if we have
// one!
- GNUNET_CRYPTO_hash (&coin_pub.eddsa_pub,
- sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
- &c_hash->hash);
+ TALER_coin_pub_hash (&coin_pub,
+ c_hash);
// FIXME-Gian/Lucien: this will be the bigger
// change, as you have the extra round trip
// => to be discussed!
@@ -221,23 +220,22 @@ TALER_planchet_to_coin (
{
struct TALER_DenominationSignature sig;
- // FIXME-Gian/Lucien: this may need a bigger
- // change, as you have the extra round trip
- // => to be discussed!
- GNUNET_assert (TALER_DENOMINATION_RSA == dk->cipher);
- GNUNET_assert (TALER_DENOMINATION_RSA == blind_sig->cipher);
- sig.cipher = TALER_DENOMINATION_RSA;
- sig.details.rsa_signature
- = TALER_rsa_unblind (blind_sig->details.blinded_rsa_signature,
- &ps->blinding_key.rsa_bks,
- dk->details.rsa_public_key);
+ if (GNUNET_OK !=
+ TALER_denom_sig_unblind (&sig,
+ blind_sig,
+ &ps->blinding_key,
+ dk))
+ {
+ GNUNET_break_op (0);
+ return GNUNET_SYSERR;
+ }
if (GNUNET_OK !=
TALER_denom_pub_verify (dk,
&sig,
c_hash))
{
GNUNET_break_op (0);
- GNUNET_CRYPTO_rsa_signature_free (sig.details.rsa_signature);
+ TALER_denom_sig_free (&sig);
return GNUNET_SYSERR;
}
coin->sig = sig;
@@ -330,17 +328,6 @@ TALER_rsa_blind (const struct TALER_CoinPubHash *hash,
}
-struct GNUNET_CRYPTO_RsaSignature *
-TALER_rsa_unblind (const struct GNUNET_CRYPTO_RsaSignature *sig,
- const struct GNUNET_CRYPTO_RsaBlindingKeySecret *bks,
- struct GNUNET_CRYPTO_RsaPublicKey *pkey)
-{
- return GNUNET_CRYPTO_rsa_unblind (sig,
- bks,
- pkey);
-}
-
-
void
TALER_coin_ev_hash (const void *coin_ev,
size_t coin_ev_size,
diff --git a/src/util/denom.c b/src/util/denom.c
index a1f511fe6..4a47c66d4 100644
--- a/src/util/denom.c
+++ b/src/util/denom.c
@@ -128,7 +128,7 @@ TALER_denom_sig_unblind (
return GNUNET_SYSERR;
case TALER_DENOMINATION_RSA:
denom_sig->details.rsa_signature
- = TALER_rsa_unblind (
+ = GNUNET_CRYPTO_rsa_unblind (
bdenom_sig->details.blinded_rsa_signature,
&bks->rsa_bks,
denom_pub->details.rsa_public_key);