summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-06-09 14:52:00 +0200
committerChristian Grothoff <christian@grothoff.org>2016-06-09 14:52:00 +0200
commitc179734ccfc8a9dc9571d4a39ca2d37513c409a6 (patch)
tree993301a08f12db403e3bce4329adede0ac48ae35 /src
parent3b9248e9c6d0abb3311dd7db25b5a227609b9bd1 (diff)
downloadexchange-c179734ccfc8a9dc9571d4a39ca2d37513c409a6.tar.gz
exchange-c179734ccfc8a9dc9571d4a39ca2d37513c409a6.tar.bz2
exchange-c179734ccfc8a9dc9571d4a39ca2d37513c409a6.zip
make code build against revised GNUnet blind signing API
Diffstat (limited to 'src')
-rw-r--r--src/exchange-lib/exchange_api_refresh.c38
-rw-r--r--src/exchange-lib/exchange_api_reserve.c17
-rw-r--r--src/exchange/Makefile.am2
-rw-r--r--src/exchange/taler-exchange-httpd_db.c13
4 files changed, 50 insertions, 20 deletions
diff --git a/src/exchange-lib/exchange_api_refresh.c b/src/exchange-lib/exchange_api_refresh.c
index b86e58362..8331f5e78 100644
--- a/src/exchange-lib/exchange_api_refresh.c
+++ b/src/exchange-lib/exchange_api_refresh.c
@@ -851,10 +851,18 @@ TALER_EXCHANGE_refresh_prepare (const struct TALER_CoinSpendPrivateKeyP *melt_pr
GNUNET_CRYPTO_hash (&coin_pub.eddsa_pub,
sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
&coin_hash);
- coin_ev_size = GNUNET_CRYPTO_rsa_blind (&coin_hash,
- &fc->blinding_key.bks,
- md.fresh_pks[j].rsa_public_key,
- &coin_ev);
+ if (GNUNET_YES !=
+ GNUNET_CRYPTO_rsa_blind (&coin_hash,
+ &fc->blinding_key.bks,
+ md.fresh_pks[j].rsa_public_key,
+ &coin_ev,
+ &coin_ev_size))
+ {
+ GNUNET_break_op (0);
+ GNUNET_CRYPTO_hash_context_abort (hash_context);
+ free_melt_data (&md);
+ return NULL;
+ }
GNUNET_CRYPTO_hash_context_read (hash_context,
coin_ev,
coin_ev_size);
@@ -1378,10 +1386,24 @@ TALER_EXCHANGE_refresh_melt (struct TALER_EXCHANGE_Handle *exchange,
GNUNET_CRYPTO_hash (&coin_pub.eddsa_pub,
sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
&coin_hash);
- coin_ev_size = GNUNET_CRYPTO_rsa_blind (&coin_hash,
- &fc->blinding_key.bks,
- md->fresh_pks[i].rsa_public_key,
- &coin_ev);
+ if (GNUNET_YES !=
+ GNUNET_CRYPTO_rsa_blind (&coin_hash,
+ &fc->blinding_key.bks,
+ md->fresh_pks[i].rsa_public_key,
+ &coin_ev,
+ &coin_ev_size))
+ {
+ /* This should have been noticed during the preparation stage. */
+ GNUNET_break (0);
+ json_decref (new_denoms);
+ json_decref (tmp);
+ json_decref (coin_evs);
+ json_decref (melt_coin);
+ json_decref (transfer_pubs);
+ json_decref (secret_encs);
+ json_decref (link_encs);
+ return NULL;
+ }
json_array_append (tmp,
GNUNET_JSON_from_data (coin_ev,
coin_ev_size));
diff --git a/src/exchange-lib/exchange_api_reserve.c b/src/exchange-lib/exchange_api_reserve.c
index 82e602a46..2b07223af 100644
--- a/src/exchange-lib/exchange_api_reserve.c
+++ b/src/exchange-lib/exchange_api_reserve.c
@@ -784,7 +784,7 @@ handle_reserve_withdraw_finished (void *cls,
* caller must have committed this value to disk before the call (with @a pk)
* @param res_cb the callback to call when the final result for this request is available
* @param res_cb_cls closure for the above callback
- * @return #GNUNET_OK on success, #GNUNET_SYSERR
+ * @return handle for the operation on success, NULL on error, i.e.
* if the inputs are invalid (i.e. denomination key not with this exchange).
* In this case, the callback is not called.
*/
@@ -819,10 +819,17 @@ TALER_EXCHANGE_reserve_withdraw (struct TALER_EXCHANGE_Handle *exchange,
GNUNET_CRYPTO_hash (&coin_pub.eddsa_pub,
sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
&wsh->c_hash);
- coin_ev_size = GNUNET_CRYPTO_rsa_blind (&wsh->c_hash,
- &blinding_key->bks,
- pk->key.rsa_public_key,
- &coin_ev);
+ if (GNUNET_YES !=
+ GNUNET_CRYPTO_rsa_blind (&wsh->c_hash,
+ &blinding_key->bks,
+ pk->key.rsa_public_key,
+ &coin_ev,
+ &coin_ev_size))
+ {
+ GNUNET_break_op (0);
+ GNUNET_free (wsh);
+ return NULL;
+ }
GNUNET_CRYPTO_eddsa_key_get_public (&reserve_priv->eddsa_priv,
&wsh->reserve_pub.eddsa_pub);
req.purpose.size = htonl (sizeof (struct TALER_WithdrawRequestPS));
diff --git a/src/exchange/Makefile.am b/src/exchange/Makefile.am
index ff4fe91dc..42fe82523 100644
--- a/src/exchange/Makefile.am
+++ b/src/exchange/Makefile.am
@@ -74,7 +74,7 @@ test_taler_exchange_aggregator_postgres_SOURCES = \
test_taler_exchange_aggregator_postgres_LDADD = \
$(LIBGCRYPT_LIBS) \
$(top_builddir)/src/exchangedb/libtalerexchangedb.la \
- $(top_builddir)/src/bank-lib/libfakebank.la \
+ $(top_builddir)/src/bank-lib/libtalerfakebank.la \
$(top_builddir)/src/json/libtalerjson.la \
$(top_builddir)/src/util/libtalerutil.la \
-lmicrohttpd \
diff --git a/src/exchange/taler-exchange-httpd_db.c b/src/exchange/taler-exchange-httpd_db.c
index 43de27e9c..73e264e0c 100644
--- a/src/exchange/taler-exchange-httpd_db.c
+++ b/src/exchange/taler-exchange-httpd_db.c
@@ -1262,14 +1262,15 @@ check_commitment (struct MHD_Connection *connection,
GNUNET_CRYPTO_hash (&coin_pub,
sizeof (struct TALER_CoinSpendPublicKeyP),
&h_msg);
- if (0 == (buf_len =
- GNUNET_CRYPTO_rsa_blind (&h_msg,
- &link_data.blinding_key.bks,
- denom_pubs[j].rsa_public_key,
- &buf)))
+ if (GNUNET_YES !=
+ GNUNET_CRYPTO_rsa_blind (&h_msg,
+ &link_data.blinding_key.bks,
+ denom_pubs[j].rsa_public_key,
+ &buf,
+ &buf_len))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "blind failed\n");
+ "Blind failed (bad denomination key!?)\n");
GNUNET_free (commit_coins);
return (MHD_YES == TMH_RESPONSE_reply_internal_error (connection,
"Blinding error"))