diff options
author | Christian Grothoff <christian@grothoff.org> | 2019-07-21 12:20:45 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2019-07-21 12:20:45 +0200 |
commit | ad343059427a20ad091d384fc430b631feae70cc (patch) | |
tree | c27451562e9809ffe35e8c956d211e62b8c7231f | |
parent | c94309ee6ecfc58dd852e0d61b7aa0a0c16c7db0 (diff) |
expose blinding key in refresh-reveal API in preparation for #5777
-rw-r--r-- | src/include/taler_crypto_lib.h | 21 | ||||
-rw-r--r-- | src/include/taler_exchange_service.h | 4 | ||||
-rw-r--r-- | src/include/taler_testing_lib.h | 8 | ||||
-rw-r--r-- | src/lib/exchange_api_refresh.c | 19 | ||||
-rw-r--r-- | src/lib/testing_api_cmd_refresh.c | 5 |
5 files changed, 17 insertions, 40 deletions
diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index 4024123bf..7b9d932d5 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -435,27 +435,6 @@ struct TALER_PlanchetSecretsP }; -/** - * Header for serializations of coin-specific information about the fresh - * coins we generate from refresh. These are the secrets that arise during - * planchet generation, which is the first stage of creating a new coin from - * refresh. - */ -struct TALER_RefreshPlanchetSecretsP -{ - - /** - * Private key of the coin. - */ - struct TALER_CoinSpendPrivateKeyP coin_priv; - - /** - * XXX. See #5777~0014690 - need a solution for this first! - */ - struct TALER_TransferPrivateKeyP transfer_priv; - -}; - GNUNET_NETWORK_STRUCT_END diff --git a/src/include/taler_exchange_service.h b/src/include/taler_exchange_service.h index eebbf6c51..7fc7a5690 100644 --- a/src/include/taler_exchange_service.h +++ b/src/include/taler_exchange_service.h @@ -1356,9 +1356,7 @@ typedef void unsigned int http_status, enum TALER_ErrorCode ec, unsigned int num_coins, - /* TODO (#5777): possibly replace - by a `struct TALER_RefreshPlanchetSecretsP` */ - const struct TALER_CoinSpendPrivateKeyP *coin_privs, + const struct TALER_PlanchetSecretsP *coin_privs, const struct TALER_DenominationSignature *sigs, const json_t *full_response); diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h index a421cf43c..beb28f7a0 100644 --- a/src/include/taler_testing_lib.h +++ b/src/include/taler_testing_lib.h @@ -1950,8 +1950,6 @@ TALER_TESTING_get_trait_uint /** * Information about a fresh coin generated by the refresh * operation. FIXME: should go away from here! - * - * FIXME: should be renamed, easily confused with `struct TALER_FreshCoin`! */ struct TALER_TESTING_FreshCoinData { @@ -1973,6 +1971,12 @@ struct TALER_TESTING_FreshCoinData * Set (by the interpreter) to the coin's private key. */ struct TALER_CoinSpendPrivateKeyP coin_priv; + + /** + * The blinding key (needed for payback operations). + */ + struct TALER_DenominationBlindingKeyP blinding_key; + }; diff --git a/src/lib/exchange_api_refresh.c b/src/lib/exchange_api_refresh.c index 853c702e3..c12fd32db 100644 --- a/src/lib/exchange_api_refresh.c +++ b/src/lib/exchange_api_refresh.c @@ -1318,14 +1318,12 @@ struct TALER_EXCHANGE_RefreshRevealHandle * * @param rrh operation handle * @param json reply from the exchange - * @param[out] coin_privs array of length `num_fresh_coins`, initialized to contain private keys * @param[out] sigs array of length `num_fresh_coins`, initialized to cointain RSA signatures * @return #GNUNET_OK on success, #GNUNET_SYSERR on errors */ static int refresh_reveal_ok (struct TALER_EXCHANGE_RefreshRevealHandle *rrh, const json_t *json, - struct TALER_CoinSpendPrivateKeyP *coin_privs, struct TALER_DenominationSignature *sigs) { json_t *jsona; @@ -1405,7 +1403,6 @@ refresh_reveal_ok (struct TALER_EXCHANGE_RefreshRevealHandle *rrh, return GNUNET_SYSERR; } GNUNET_CRYPTO_rsa_signature_free (blind_sig); - coin_privs[i] = coin.coin_priv; sigs[i] = coin.sig; } GNUNET_JSON_parse_free (outer_spec); @@ -1436,14 +1433,12 @@ handle_refresh_reveal_finished (void *cls, break; case MHD_HTTP_OK: { - struct TALER_CoinSpendPrivateKeyP coin_privs[rrh->md->num_fresh_coins]; struct TALER_DenominationSignature sigs[rrh->md->num_fresh_coins]; int ret; memset (sigs, 0, sizeof (sigs)); ret = refresh_reveal_ok (rrh, j, - coin_privs, sigs); if (GNUNET_OK != ret) { @@ -1453,9 +1448,9 @@ handle_refresh_reveal_finished (void *cls, { rrh->reveal_cb (rrh->reveal_cb_cls, MHD_HTTP_OK, - TALER_EC_NONE, + TALER_EC_NONE, rrh->md->num_fresh_coins, - coin_privs, + rrh->md->fresh_coins[rrh->noreveal_index], sigs, j); rrh->reveal_cb = NULL; @@ -1490,10 +1485,10 @@ handle_refresh_reveal_finished (void *cls, if (NULL != rrh->reveal_cb) rrh->reveal_cb (rrh->reveal_cb_cls, response_code, - TALER_JSON_get_error_code (j), - 0, - NULL, - NULL, + TALER_JSON_get_error_code (j), + 0, + NULL, + NULL, j); TALER_EXCHANGE_refresh_reveal_cancel (rrh); } @@ -1616,7 +1611,7 @@ TALER_EXCHANGE_refresh_reveal (struct TALER_EXCHANGE_Handle *exchange, json_array_append_new (link_sigs, GNUNET_JSON_from_data_auto (&link_sig))); } - + GNUNET_free (pd.coin_ev); } diff --git a/src/lib/testing_api_cmd_refresh.c b/src/lib/testing_api_cmd_refresh.c index 155d30cee..71f3833fa 100644 --- a/src/lib/testing_api_cmd_refresh.c +++ b/src/lib/testing_api_cmd_refresh.c @@ -289,7 +289,7 @@ reveal_cb (void *cls, unsigned int http_status, enum TALER_ErrorCode ec, unsigned int num_coins, - const struct TALER_CoinSpendPrivateKeyP *coin_privs, + const struct TALER_PlanchetSecretsP *coin_privs, const struct TALER_DenominationSignature *sigs, const json_t *full_response) { @@ -358,7 +358,8 @@ reveal_cb (void *cls, TALER_TESTING_interpreter_fail (rrs->is); return; } - fc->coin_priv = coin_privs[i]; + fc->coin_priv = coin_privs[i].coin_priv; + fc->blinding_key = coin_privs[i].blinding_key; fc->sig.rsa_signature = GNUNET_CRYPTO_rsa_signature_dup (sigs[i].rsa_signature); } |