-simplify: nonce no longer hashed
This commit is contained in:
parent
9f77398fe2
commit
3b1e742dde
@ -874,7 +874,6 @@ helper_rsa_cb (
|
|||||||
GNUNET_STRINGS_relative_time_to_string (validity_duration,
|
GNUNET_STRINGS_relative_time_to_string (validity_duration,
|
||||||
GNUNET_NO));
|
GNUNET_NO));
|
||||||
key_generation++;
|
key_generation++;
|
||||||
// FIXME: wait for sync?
|
|
||||||
TEH_resume_keys_requests (false);
|
TEH_resume_keys_requests (false);
|
||||||
hd = GNUNET_CONTAINER_multihashmap_get (hs->rsa_keys,
|
hd = GNUNET_CONTAINER_multihashmap_get (hs->rsa_keys,
|
||||||
&h_rsa->hash);
|
&h_rsa->hash);
|
||||||
@ -956,7 +955,6 @@ helper_cs_cb (
|
|||||||
GNUNET_STRINGS_relative_time_to_string (validity_duration,
|
GNUNET_STRINGS_relative_time_to_string (validity_duration,
|
||||||
GNUNET_NO));
|
GNUNET_NO));
|
||||||
key_generation++;
|
key_generation++;
|
||||||
// FIXME: wait for sync?
|
|
||||||
TEH_resume_keys_requests (false);
|
TEH_resume_keys_requests (false);
|
||||||
hd = GNUNET_CONTAINER_multihashmap_get (hs->cs_keys,
|
hd = GNUNET_CONTAINER_multihashmap_get (hs->cs_keys,
|
||||||
&h_cs->hash);
|
&h_cs->hash);
|
||||||
|
@ -174,7 +174,6 @@ verify_and_execute_recoup_refresh (
|
|||||||
const struct TALER_CoinPublicInfo *coin,
|
const struct TALER_CoinPublicInfo *coin,
|
||||||
const struct TALER_ExchangeWithdrawValues *exchange_vals,
|
const struct TALER_ExchangeWithdrawValues *exchange_vals,
|
||||||
const union TALER_DenominationBlindingKeyP *coin_bks,
|
const union TALER_DenominationBlindingKeyP *coin_bks,
|
||||||
const struct TALER_CsNonce *nonce,
|
|
||||||
const struct TALER_CoinSpendSignatureP *coin_sig)
|
const struct TALER_CoinSpendSignatureP *coin_sig)
|
||||||
{
|
{
|
||||||
struct RecoupContext pc;
|
struct RecoupContext pc;
|
||||||
@ -264,9 +263,6 @@ verify_and_execute_recoup_refresh (
|
|||||||
TALER_EC_EXCHANGE_RECOUP_REFRESH_BLINDING_FAILED,
|
TALER_EC_EXCHANGE_RECOUP_REFRESH_BLINDING_FAILED,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
if (TALER_DENOMINATION_CS == blinded_planchet.cipher)
|
|
||||||
blinded_planchet.details.cs_blinded_planchet.nonce
|
|
||||||
= *nonce;
|
|
||||||
TALER_coin_ev_hash (&blinded_planchet,
|
TALER_coin_ev_hash (&blinded_planchet,
|
||||||
&coin->denom_pub_hash,
|
&coin->denom_pub_hash,
|
||||||
&h_blind);
|
&h_blind);
|
||||||
@ -364,7 +360,6 @@ TEH_handler_recoup_refresh (struct MHD_Connection *connection,
|
|||||||
union TALER_DenominationBlindingKeyP coin_bks;
|
union TALER_DenominationBlindingKeyP coin_bks;
|
||||||
struct TALER_CoinSpendSignatureP coin_sig;
|
struct TALER_CoinSpendSignatureP coin_sig;
|
||||||
struct TALER_ExchangeWithdrawValues exchange_vals;
|
struct TALER_ExchangeWithdrawValues exchange_vals;
|
||||||
struct TALER_CsNonce nonce;
|
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto ("denom_pub_hash",
|
GNUNET_JSON_spec_fixed_auto ("denom_pub_hash",
|
||||||
&coin.denom_pub_hash),
|
&coin.denom_pub_hash),
|
||||||
@ -376,18 +371,12 @@ TEH_handler_recoup_refresh (struct MHD_Connection *connection,
|
|||||||
&coin_bks),
|
&coin_bks),
|
||||||
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
||||||
&coin_sig),
|
&coin_sig),
|
||||||
GNUNET_JSON_spec_mark_optional (
|
|
||||||
GNUNET_JSON_spec_fixed_auto ("cs-nonce",
|
|
||||||
&nonce)),
|
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
memset (&coin,
|
memset (&coin,
|
||||||
0,
|
0,
|
||||||
sizeof (coin));
|
sizeof (coin));
|
||||||
memset (&nonce,
|
|
||||||
0,
|
|
||||||
sizeof (nonce));
|
|
||||||
coin.coin_pub = *coin_pub;
|
coin.coin_pub = *coin_pub;
|
||||||
ret = TALER_MHD_parse_json_data (connection,
|
ret = TALER_MHD_parse_json_data (connection,
|
||||||
root,
|
root,
|
||||||
@ -403,7 +392,6 @@ TEH_handler_recoup_refresh (struct MHD_Connection *connection,
|
|||||||
&coin,
|
&coin,
|
||||||
&exchange_vals,
|
&exchange_vals,
|
||||||
&coin_bks,
|
&coin_bks,
|
||||||
&nonce,
|
|
||||||
&coin_sig);
|
&coin_sig);
|
||||||
GNUNET_JSON_parse_free (spec);
|
GNUNET_JSON_parse_free (spec);
|
||||||
return res;
|
return res;
|
||||||
|
@ -177,7 +177,6 @@ verify_and_execute_recoup (
|
|||||||
const struct TALER_CoinPublicInfo *coin,
|
const struct TALER_CoinPublicInfo *coin,
|
||||||
const struct TALER_ExchangeWithdrawValues *exchange_vals,
|
const struct TALER_ExchangeWithdrawValues *exchange_vals,
|
||||||
const union TALER_DenominationBlindingKeyP *coin_bks,
|
const union TALER_DenominationBlindingKeyP *coin_bks,
|
||||||
const struct TALER_CsNonce *nonce,
|
|
||||||
const struct TALER_CoinSpendSignatureP *coin_sig)
|
const struct TALER_CoinSpendSignatureP *coin_sig)
|
||||||
{
|
{
|
||||||
struct RecoupContext pc;
|
struct RecoupContext pc;
|
||||||
@ -269,9 +268,6 @@ verify_and_execute_recoup (
|
|||||||
TALER_EC_EXCHANGE_RECOUP_BLINDING_FAILED,
|
TALER_EC_EXCHANGE_RECOUP_BLINDING_FAILED,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
if (TALER_DENOMINATION_CS == blinded_planchet.cipher)
|
|
||||||
blinded_planchet.details.cs_blinded_planchet.nonce
|
|
||||||
= *nonce;
|
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_coin_ev_hash (&blinded_planchet,
|
TALER_coin_ev_hash (&blinded_planchet,
|
||||||
&coin->denom_pub_hash,
|
&coin->denom_pub_hash,
|
||||||
@ -377,7 +373,6 @@ TEH_handler_recoup (struct MHD_Connection *connection,
|
|||||||
union TALER_DenominationBlindingKeyP coin_bks;
|
union TALER_DenominationBlindingKeyP coin_bks;
|
||||||
struct TALER_CoinSpendSignatureP coin_sig;
|
struct TALER_CoinSpendSignatureP coin_sig;
|
||||||
struct TALER_ExchangeWithdrawValues exchange_vals;
|
struct TALER_ExchangeWithdrawValues exchange_vals;
|
||||||
struct TALER_CsNonce nonce;
|
|
||||||
struct GNUNET_JSON_Specification spec[] = {
|
struct GNUNET_JSON_Specification spec[] = {
|
||||||
GNUNET_JSON_spec_fixed_auto ("denom_pub_hash",
|
GNUNET_JSON_spec_fixed_auto ("denom_pub_hash",
|
||||||
&coin.denom_pub_hash),
|
&coin.denom_pub_hash),
|
||||||
@ -389,18 +384,12 @@ TEH_handler_recoup (struct MHD_Connection *connection,
|
|||||||
&coin_bks),
|
&coin_bks),
|
||||||
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
GNUNET_JSON_spec_fixed_auto ("coin_sig",
|
||||||
&coin_sig),
|
&coin_sig),
|
||||||
GNUNET_JSON_spec_mark_optional (
|
|
||||||
GNUNET_JSON_spec_fixed_auto ("cs-nonce",
|
|
||||||
&nonce)),
|
|
||||||
GNUNET_JSON_spec_end ()
|
GNUNET_JSON_spec_end ()
|
||||||
};
|
};
|
||||||
|
|
||||||
memset (&coin,
|
memset (&coin,
|
||||||
0,
|
0,
|
||||||
sizeof (coin));
|
sizeof (coin));
|
||||||
memset (&nonce,
|
|
||||||
0,
|
|
||||||
sizeof (nonce));
|
|
||||||
coin.coin_pub = *coin_pub;
|
coin.coin_pub = *coin_pub;
|
||||||
ret = TALER_MHD_parse_json_data (connection,
|
ret = TALER_MHD_parse_json_data (connection,
|
||||||
root,
|
root,
|
||||||
@ -419,7 +408,6 @@ TEH_handler_recoup (struct MHD_Connection *connection,
|
|||||||
&coin,
|
&coin,
|
||||||
&exchange_vals,
|
&exchange_vals,
|
||||||
&coin_bks,
|
&coin_bks,
|
||||||
&nonce,
|
|
||||||
&coin_sig);
|
&coin_sig);
|
||||||
GNUNET_JSON_parse_free (spec);
|
GNUNET_JSON_parse_free (spec);
|
||||||
return res;
|
return res;
|
||||||
|
@ -1352,7 +1352,7 @@ run (void *cls)
|
|||||||
struct TALER_DenominationPublicKey *new_denom_pubs = NULL;
|
struct TALER_DenominationPublicKey *new_denom_pubs = NULL;
|
||||||
uint64_t reserve_out_serial_id;
|
uint64_t reserve_out_serial_id;
|
||||||
uint64_t melt_serial_id;
|
uint64_t melt_serial_id;
|
||||||
struct TALER_PlanchetSecretsP ps;
|
struct TALER_PlanchetMasterSecretP ps;
|
||||||
union TALER_DenominationBlindingKeyP bks;
|
union TALER_DenominationBlindingKeyP bks;
|
||||||
struct TALER_ExchangeWithdrawValues alg_values = {
|
struct TALER_ExchangeWithdrawValues alg_values = {
|
||||||
/* RSA is simpler, and for the DB there is no real difference between
|
/* RSA is simpler, and for the DB there is no real difference between
|
||||||
|
@ -169,21 +169,6 @@ parse_link_coin (const struct TALER_EXCHANGE_LinkHandle *lh,
|
|||||||
|
|
||||||
GNUNET_CRYPTO_eddsa_key_get_public (&lh->coin_priv.eddsa_priv,
|
GNUNET_CRYPTO_eddsa_key_get_public (&lh->coin_priv.eddsa_priv,
|
||||||
&old_coin_pub.eddsa_pub);
|
&old_coin_pub.eddsa_pub);
|
||||||
// FIXME-NEXT: this is probably the wrong 'ps'!
|
|
||||||
// However, the 'right' PS is not something the
|
|
||||||
// exchange could even give us. So probably we
|
|
||||||
// really need to change the derivation structure
|
|
||||||
// during refresh to derive the nonces differently
|
|
||||||
// and make /link possible!
|
|
||||||
/* FIXME: we cannot get the 'rms' here, and
|
|
||||||
if the TALER_coin_ev_hash() includes that 'nonce',
|
|
||||||
we are screwed on/link. */
|
|
||||||
#if FIXME_OMIT
|
|
||||||
TALER_cs_refresh_nonce_derive (
|
|
||||||
&ps,
|
|
||||||
coin_idx,
|
|
||||||
&pd.blinded_planchet.details.cs_blinded_planchet.nonce);
|
|
||||||
#endif
|
|
||||||
TALER_coin_ev_hash (&pd.blinded_planchet,
|
TALER_coin_ev_hash (&pd.blinded_planchet,
|
||||||
&pd.denom_pub_hash,
|
&pd.denom_pub_hash,
|
||||||
&coin_envelope_hash);
|
&coin_envelope_hash);
|
||||||
|
@ -329,25 +329,6 @@ TALER_EXCHANGE_recoup (struct TALER_EXCHANGE_Handle *exchange,
|
|||||||
&coin_sig),
|
&coin_sig),
|
||||||
GNUNET_JSON_pack_data_auto ("coin_blind_key_secret",
|
GNUNET_JSON_pack_data_auto ("coin_blind_key_secret",
|
||||||
&bks));
|
&bks));
|
||||||
if (TALER_DENOMINATION_CS == denom_sig->cipher)
|
|
||||||
{
|
|
||||||
struct TALER_CsNonce nonce;
|
|
||||||
|
|
||||||
// FIXME: add this to the spec!
|
|
||||||
/* NOTE: this is not elegant, and as per the note in TALER_coin_ev_hash()
|
|
||||||
it is not strictly clear that the nonce is needed. Best case would be
|
|
||||||
to find a way to include it more 'naturally' somehow, for example with
|
|
||||||
the variant union version of bks! */
|
|
||||||
TALER_cs_withdraw_nonce_derive (ps,
|
|
||||||
&nonce);
|
|
||||||
GNUNET_assert (
|
|
||||||
0 ==
|
|
||||||
json_object_set_new (recoup_obj,
|
|
||||||
"cs-nonce",
|
|
||||||
GNUNET_JSON_from_data_auto (
|
|
||||||
&nonce)));
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||||
char *end;
|
char *end;
|
||||||
|
@ -333,27 +333,6 @@ TALER_EXCHANGE_recoup_refresh (
|
|||||||
&coin_sig),
|
&coin_sig),
|
||||||
GNUNET_JSON_pack_data_auto ("coin_blind_key_secret",
|
GNUNET_JSON_pack_data_auto ("coin_blind_key_secret",
|
||||||
&bks));
|
&bks));
|
||||||
|
|
||||||
if (TALER_DENOMINATION_CS == denom_sig->cipher)
|
|
||||||
{
|
|
||||||
struct TALER_CsNonce nonce;
|
|
||||||
|
|
||||||
// FIXME: add this to the spec!
|
|
||||||
/* NOTE: this is not elegant, and as per the note in TALER_coin_ev_hash()
|
|
||||||
it is not strictly clear that the nonce is needed. Best case would be
|
|
||||||
to find a way to include it more 'naturally' somehow, for example with
|
|
||||||
the variant union version of bks! */
|
|
||||||
TALER_cs_refresh_nonce_derive (rms,
|
|
||||||
idx,
|
|
||||||
&nonce);
|
|
||||||
GNUNET_assert (
|
|
||||||
0 ==
|
|
||||||
json_object_set_new (recoup_obj,
|
|
||||||
"cs-nonce",
|
|
||||||
GNUNET_JSON_from_data_auto (
|
|
||||||
&nonce)));
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
char pub_str[sizeof (struct TALER_CoinSpendPublicKeyP) * 2];
|
||||||
char *end;
|
char *end;
|
||||||
|
@ -518,26 +518,8 @@ TALER_coin_ev_hash (const struct TALER_BlindedPlanchet *blinded_planchet,
|
|||||||
blinded_planchet->details.rsa_blinded_planchet.blinded_msg_size);
|
blinded_planchet->details.rsa_blinded_planchet.blinded_msg_size);
|
||||||
break;
|
break;
|
||||||
case TALER_DENOMINATION_CS:
|
case TALER_DENOMINATION_CS:
|
||||||
/* NOTE: it is not obvious that we need to hash the
|
// FIXME: simplifies once 'nonce' is removed
|
||||||
nonce here; if we omit this, we could skip sending
|
// from TALER_BlindedCsPlanchet!
|
||||||
the nonce in the /recoup protocol. OTOH, there is
|
|
||||||
certainly no further harm (beyond the extra
|
|
||||||
bytes send on /recoup) from including it.
|
|
||||||
****
|
|
||||||
UPDATE: hashing 'nonce' here kills link, as
|
|
||||||
link does not HAVE the 'rms' to derive the nonce
|
|
||||||
from! (see FIXME_OMIT in exchange_api_link.c)
|
|
||||||
***
|
|
||||||
=> either figure elegant way to resolve this,
|
|
||||||
or omit hashing nonce and ALSO skip sending
|
|
||||||
nonce in /recoup!
|
|
||||||
*/
|
|
||||||
#if FIXME_OMIT
|
|
||||||
GNUNET_CRYPTO_hash_context_read (
|
|
||||||
hash_context,
|
|
||||||
&blinded_planchet->details.cs_blinded_planchet.nonce,
|
|
||||||
sizeof (blinded_planchet->details.cs_blinded_planchet.nonce));
|
|
||||||
#endif
|
|
||||||
GNUNET_CRYPTO_hash_context_read (
|
GNUNET_CRYPTO_hash_context_read (
|
||||||
hash_context,
|
hash_context,
|
||||||
&blinded_planchet->details.cs_blinded_planchet.c[0],
|
&blinded_planchet->details.cs_blinded_planchet.c[0],
|
||||||
|
Loading…
Reference in New Issue
Block a user