consistently distinguish blinded/unblinded denomination sigs
This commit is contained in:
parent
b1197c16a4
commit
783d07b476
@ -84,7 +84,7 @@ handle_link_data (void *cls,
|
||||
obj = GNUNET_JSON_PACK (
|
||||
TALER_JSON_pack_denom_pub ("denom_pub",
|
||||
&pos->denom_pub),
|
||||
TALER_JSON_pack_denom_sig ("ev_sig",
|
||||
TALER_JSON_pack_blinded_denom_sig ("ev_sig",
|
||||
&pos->ev_sig),
|
||||
GNUNET_JSON_pack_data_auto ("link_sig",
|
||||
&pos->orig_coin_link_sig));
|
||||
|
@ -230,7 +230,7 @@ irbt_cb_table_reserves_out (struct PostgresClosure *pg,
|
||||
&td->details.reserves_out.h_blind_ev),
|
||||
GNUNET_PQ_query_param_uint64 (
|
||||
&td->details.reserves_out.denominations_serial),
|
||||
TALER_PQ_query_param_denom_sig (
|
||||
TALER_PQ_query_param_blinded_denom_sig (
|
||||
&td->details.reserves_out.denom_sig),
|
||||
GNUNET_PQ_query_param_uint64 (
|
||||
&td->details.reserves_out.reserve_uuid),
|
||||
@ -437,7 +437,7 @@ irbt_cb_table_refresh_revealed_coins (
|
||||
td->details.refresh_revealed_coins.
|
||||
coin_ev_size),
|
||||
GNUNET_PQ_query_param_auto_from_type (&h_coin_ev),
|
||||
TALER_PQ_query_param_denom_sig (
|
||||
TALER_PQ_query_param_blinded_denom_sig (
|
||||
&td->details.refresh_revealed_coins.ev_sig),
|
||||
GNUNET_PQ_query_param_uint64 (
|
||||
&td->details.refresh_revealed_coins.denominations_serial),
|
||||
|
@ -405,7 +405,7 @@ lrbt_cb_table_reserves_out (void *cls,
|
||||
GNUNET_PQ_result_spec_uint64 (
|
||||
"denominations_serial",
|
||||
&td.details.reserves_out.denominations_serial),
|
||||
TALER_PQ_result_spec_denom_sig (
|
||||
TALER_PQ_result_spec_blinded_denom_sig (
|
||||
"denom_sig",
|
||||
&td.details.reserves_out.denom_sig),
|
||||
GNUNET_PQ_result_spec_uint64 (
|
||||
@ -787,7 +787,7 @@ lrbt_cb_table_refresh_revealed_coins (void *cls,
|
||||
"coin_ev",
|
||||
(void **) &td.details.refresh_revealed_coins.coin_ev,
|
||||
&td.details.refresh_revealed_coins.coin_ev_size),
|
||||
TALER_PQ_result_spec_denom_sig (
|
||||
TALER_PQ_result_spec_blinded_denom_sig (
|
||||
"ev_sig",
|
||||
&td.details.refresh_revealed_coins.ev_sig),
|
||||
GNUNET_PQ_result_spec_uint64 (
|
||||
|
@ -6367,7 +6367,7 @@ free_link_data_list (void *cls,
|
||||
{
|
||||
next = ldl->next;
|
||||
TALER_denom_pub_free (&ldl->denom_pub);
|
||||
TALER_denom_sig_free (&ldl->ev_sig);
|
||||
TALER_blinded_denom_sig_free (&ldl->ev_sig);
|
||||
GNUNET_free (ldl);
|
||||
ldl = next;
|
||||
}
|
||||
@ -6401,7 +6401,7 @@ add_ldl (void *cls,
|
||||
&transfer_pub),
|
||||
GNUNET_PQ_result_spec_auto_from_type ("link_sig",
|
||||
&pos->orig_coin_link_sig),
|
||||
TALER_PQ_result_spec_denom_sig ("ev_sig",
|
||||
TALER_PQ_result_spec_blinded_denom_sig ("ev_sig",
|
||||
&pos->ev_sig),
|
||||
TALER_PQ_result_spec_denom_pub ("denom_pub",
|
||||
&pos->denom_pub),
|
||||
|
@ -262,8 +262,8 @@ create_denom_key_pair (unsigned int size,
|
||||
TALER_denom_pub_hash (&dkp->pub,
|
||||
&dki.issue.properties.denom_hash);
|
||||
|
||||
dki.issue.properties.purpose.size = htonl (sizeof (struct
|
||||
TALER_DenominationKeyValidityPS));
|
||||
dki.issue.properties.purpose.size
|
||||
= htonl (sizeof (struct TALER_DenominationKeyValidityPS));
|
||||
dki.issue.properties.purpose.purpose = htonl (
|
||||
TALER_SIGNATURE_MASTER_DENOMINATION_KEY_VALIDITY);
|
||||
if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
|
||||
@ -479,7 +479,7 @@ handle_link_data_cb (void *cls,
|
||||
TALER_denom_pub_cmp (&ldlp->denom_pub,
|
||||
&new_dkp[cnt]->pub)) &&
|
||||
(0 ==
|
||||
TALER_denom_sig_cmp (&ldlp->ev_sig,
|
||||
TALER_blinded_denom_sig_cmp (&ldlp->ev_sig,
|
||||
&revealed_coins[cnt].coin_sig)) )
|
||||
{
|
||||
found = GNUNET_YES;
|
||||
@ -623,7 +623,7 @@ test_melting (void)
|
||||
RND_BLK (&hc);
|
||||
ccoin->denom_pub = new_dkp[cnt]->pub;
|
||||
ccoin->coin_sig.cipher = TALER_DENOMINATION_RSA;
|
||||
ccoin->coin_sig.details.rsa_signature
|
||||
ccoin->coin_sig.details.blinded_rsa_signature
|
||||
= GNUNET_CRYPTO_rsa_sign_fdh (new_dkp[cnt]->priv.details.rsa_private_key,
|
||||
&hc.hash);
|
||||
}
|
||||
@ -675,7 +675,7 @@ drop:
|
||||
{
|
||||
for (unsigned int cnt = 0; cnt < MELT_NEW_COINS; cnt++)
|
||||
{
|
||||
TALER_denom_sig_free (&revealed_coins[cnt].coin_sig);
|
||||
TALER_blinded_denom_sig_free (&revealed_coins[cnt].coin_sig);
|
||||
GNUNET_free (revealed_coins[cnt].coin_ev);
|
||||
}
|
||||
GNUNET_free (revealed_coins);
|
||||
@ -1593,7 +1593,7 @@ run (void *cls)
|
||||
RND_BLK (&cbc.reserve_sig);
|
||||
cbc.denom_pub_hash = dkp_pub_hash;
|
||||
cbc.sig.cipher = TALER_DENOMINATION_RSA;
|
||||
cbc.sig.details.rsa_signature
|
||||
cbc.sig.details.blinded_rsa_signature
|
||||
= GNUNET_CRYPTO_rsa_sign_fdh (dkp->priv.details.rsa_private_key,
|
||||
&cbc.h_coin_envelope.hash);
|
||||
cbc.reserve_pub = reserve_pub;
|
||||
@ -1620,12 +1620,14 @@ run (void *cls)
|
||||
plugin->get_withdraw_info (plugin->cls,
|
||||
&cbc.h_coin_envelope,
|
||||
&cbc2));
|
||||
FAILIF (0 != GNUNET_memcmp (&cbc2.reserve_sig, &cbc.reserve_sig));
|
||||
FAILIF (0 != GNUNET_memcmp (&cbc2.reserve_pub, &cbc.reserve_pub));
|
||||
FAILIF (0 != GNUNET_memcmp (&cbc2.reserve_sig,
|
||||
&cbc.reserve_sig));
|
||||
FAILIF (0 != GNUNET_memcmp (&cbc2.reserve_pub,
|
||||
&cbc.reserve_pub));
|
||||
result = 6;
|
||||
FAILIF (GNUNET_OK !=
|
||||
GNUNET_CRYPTO_rsa_verify (&cbc.h_coin_envelope.hash,
|
||||
cbc2.sig.details.rsa_signature,
|
||||
cbc2.sig.details.blinded_rsa_signature,
|
||||
dkp->pub.details.rsa_public_key));
|
||||
|
||||
|
||||
@ -1634,7 +1636,9 @@ run (void *cls)
|
||||
RND_BLK (&deposit.coin.coin_pub);
|
||||
TALER_denom_pub_hash (&dkp->pub,
|
||||
&deposit.coin.denom_pub_hash);
|
||||
deposit.coin.denom_sig = cbc.sig;
|
||||
deposit.coin.denom_sig.cipher = TALER_DENOMINATION_RSA;
|
||||
deposit.coin.denom_sig.details.rsa_signature =
|
||||
cbc.sig.details.blinded_rsa_signature;
|
||||
deadline = GNUNET_TIME_absolute_get ();
|
||||
(void) GNUNET_TIME_round_abs (&deadline);
|
||||
FAILIF (TALER_EXCHANGEDB_CKS_ADDED !=
|
||||
@ -1792,7 +1796,9 @@ run (void *cls)
|
||||
RND_BLK (&deposit.coin.coin_pub);
|
||||
TALER_denom_pub_hash (&dkp->pub,
|
||||
&deposit.coin.denom_pub_hash);
|
||||
deposit.coin.denom_sig = cbc.sig;
|
||||
deposit.coin.denom_sig.cipher = TALER_DENOMINATION_RSA;
|
||||
deposit.coin.denom_sig.details.rsa_signature =
|
||||
cbc.sig.details.blinded_rsa_signature;
|
||||
RND_BLK (&deposit.csig);
|
||||
RND_BLK (&deposit.merchant_pub);
|
||||
RND_BLK (&deposit.h_contract_terms);
|
||||
@ -2126,8 +2132,8 @@ drop:
|
||||
plugin->drop_tables (plugin->cls));
|
||||
if (NULL != dkp)
|
||||
destroy_denom_key_pair (dkp);
|
||||
TALER_denom_sig_free (&cbc.sig);
|
||||
TALER_denom_sig_free (&cbc2.sig);
|
||||
TALER_blinded_denom_sig_free (&cbc.sig);
|
||||
TALER_blinded_denom_sig_free (&cbc2.sig);
|
||||
dkp = NULL;
|
||||
TALER_EXCHANGEDB_plugin_unload (plugin);
|
||||
plugin = NULL;
|
||||
|
@ -772,6 +772,19 @@ TALER_denom_sig_cmp (const struct TALER_DenominationSignature *sig1,
|
||||
const struct TALER_DenominationSignature *sig2);
|
||||
|
||||
|
||||
/**
|
||||
* Compare two blinded denomination signatures.
|
||||
*
|
||||
* @param sig1 first signature
|
||||
* @param sig2 second signature
|
||||
* @return 0 if the keys are equal, otherwise -1 or 1
|
||||
*/
|
||||
int
|
||||
TALER_blinded_denom_sig_cmp (
|
||||
const struct TALER_BlindedDenominationSignature *sig1,
|
||||
const struct TALER_BlindedDenominationSignature *sig2);
|
||||
|
||||
|
||||
/**
|
||||
* Obtain denomination public key from a denomination private key.
|
||||
*
|
||||
|
@ -239,7 +239,7 @@ struct TALER_EXCHANGEDB_TableData
|
||||
{
|
||||
struct TALER_BlindedCoinHash h_blind_ev;
|
||||
uint64_t denominations_serial;
|
||||
struct TALER_DenominationSignature denom_sig;
|
||||
struct TALER_BlindedDenominationSignature denom_sig;
|
||||
uint64_t reserve_uuid;
|
||||
struct TALER_ReserveSignatureP reserve_sig;
|
||||
struct GNUNET_TIME_Absolute execution_date;
|
||||
@ -301,7 +301,7 @@ struct TALER_EXCHANGEDB_TableData
|
||||
void *coin_ev;
|
||||
size_t coin_ev_size;
|
||||
// h_coin_ev omitted, to be recomputed!
|
||||
struct TALER_DenominationSignature ev_sig;
|
||||
struct TALER_BlindedDenominationSignature ev_sig;
|
||||
} refresh_revealed_coins;
|
||||
|
||||
struct
|
||||
@ -1334,7 +1334,7 @@ struct TALER_EXCHANGEDB_LinkList
|
||||
/**
|
||||
* Signature over the blinded envelope.
|
||||
*/
|
||||
struct TALER_DenominationSignature ev_sig;
|
||||
struct TALER_BlindedDenominationSignature ev_sig;
|
||||
|
||||
/**
|
||||
* Signature of the original coin being refreshed over the
|
||||
|
@ -295,4 +295,24 @@ TALER_denom_sig_cmp (const struct TALER_DenominationSignature *sig1,
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
TALER_blinded_denom_sig_cmp (
|
||||
const struct TALER_BlindedDenominationSignature *sig1,
|
||||
const struct TALER_BlindedDenominationSignature *sig2)
|
||||
{
|
||||
if (sig1->cipher != sig2->cipher)
|
||||
return (sig1->cipher > sig2->cipher) ? 1 : -1;
|
||||
switch (sig1->cipher)
|
||||
{
|
||||
case TALER_DENOMINATION_RSA:
|
||||
return GNUNET_CRYPTO_rsa_signature_cmp (sig1->details.blinded_rsa_signature,
|
||||
sig2->details.blinded_rsa_signature);
|
||||
// TODO: add case for Clause-Schnorr
|
||||
default:
|
||||
GNUNET_assert (0);
|
||||
}
|
||||
return -2;
|
||||
}
|
||||
|
||||
|
||||
/* end of denom.c */
|
||||
|
Loading…
Reference in New Issue
Block a user