address #3708: melt_hash => session_hash, use session_hash for DB access, not session_pub
This commit is contained in:
parent
73c9949fc5
commit
55959bd01d
@ -44,6 +44,13 @@ Naming conventions:
|
|||||||
MUST match the subdirectory of src/ in which the symbol is defined
|
MUST match the subdirectory of src/ in which the symbol is defined
|
||||||
+ from libtalerutil start just with TALER_, without subsystemname
|
+ from libtalerutil start just with TALER_, without subsystemname
|
||||||
|
|
||||||
|
* structs:
|
||||||
|
+ structs that are 'packed' and do not contain pointers and are
|
||||||
|
thus suitable for hashing or similar operations are distinguished
|
||||||
|
by adding a "P" at the end of the name. (NEW) Note that this
|
||||||
|
convention does not hold for the GNUnet-structs (yet).
|
||||||
|
|
||||||
|
|
||||||
* private (library-internal) symbols (including structs and macros)
|
* private (library-internal) symbols (including structs and macros)
|
||||||
+ must not start with TALER_ or any other prefix
|
+ must not start with TALER_ or any other prefix
|
||||||
|
|
||||||
|
@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
/* ****************** Coin crypto primitives ************* */
|
/* ****************** Coin crypto primitives ************* */
|
||||||
|
|
||||||
|
GNUNET_NETWORK_STRUCT_BEGIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type of public keys for Taler reserves.
|
* Type of public keys for Taler reserves.
|
||||||
*/
|
*/
|
||||||
@ -269,6 +271,10 @@ struct TALER_CoinSpendSignature
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
GNUNET_NETWORK_STRUCT_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type of blinding keys for Taler.
|
* Type of blinding keys for Taler.
|
||||||
*/
|
*/
|
||||||
@ -358,6 +364,9 @@ TALER_test_coin_valid (const struct TALER_CoinPublicInfo *coin_public_info);
|
|||||||
|
|
||||||
/* ****************** Refresh crypto primitives ************* */
|
/* ****************** Refresh crypto primitives ************* */
|
||||||
|
|
||||||
|
|
||||||
|
GNUNET_NETWORK_STRUCT_BEGIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Secret used to decrypt the key to decrypt link secrets.
|
* Secret used to decrypt the key to decrypt link secrets.
|
||||||
*/
|
*/
|
||||||
@ -396,6 +405,28 @@ struct TALER_EncryptedLinkSecret
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Representation of an refresh link in cleartext.
|
||||||
|
*/
|
||||||
|
struct TALER_RefreshLinkDecrypted
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private key of the coin.
|
||||||
|
*/
|
||||||
|
struct TALER_CoinSpendPrivateKey coin_priv;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Blinding key.
|
||||||
|
*/
|
||||||
|
struct TALER_DenominationBlindingKey blinding_key;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
GNUNET_NETWORK_STRUCT_END
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Representation of an encrypted refresh link.
|
* Representation of an encrypted refresh link.
|
||||||
*/
|
*/
|
||||||
@ -421,25 +452,6 @@ struct TALER_RefreshLinkEncrypted
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Representation of an refresh link in cleartext.
|
|
||||||
*/
|
|
||||||
struct TALER_RefreshLinkDecrypted
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Private key of the coin.
|
|
||||||
*/
|
|
||||||
struct TALER_CoinSpendPrivateKey coin_priv;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Blinding key.
|
|
||||||
*/
|
|
||||||
struct TALER_DenominationBlindingKey blinding_key;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use the @a trans_sec (from ECDHE) to decrypt the @a secret_enc
|
* Use the @a trans_sec (from ECDHE) to decrypt the @a secret_enc
|
||||||
* to obtain the @a secret to decrypt the linkage data.
|
* to obtain the @a secret to decrypt the linkage data.
|
||||||
|
@ -253,9 +253,9 @@ struct RefreshMeltCoinSignature
|
|||||||
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
struct GNUNET_CRYPTO_EccSignaturePurpose purpose;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Which melting operation should the coin become a part of.
|
* Which melting session should the coin become a part of.
|
||||||
*/
|
*/
|
||||||
struct GNUNET_HashCode melt_hash;
|
struct GNUNET_HashCode session_hash;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How much of the value of the coin should be melted? This amount
|
* How much of the value of the coin should be melted? This amount
|
||||||
|
@ -220,11 +220,11 @@ postgres_create_tables (void *cls,
|
|||||||
",expended_value INT4 NOT NULL"
|
",expended_value INT4 NOT NULL"
|
||||||
",expended_fraction INT4 NOT NULL"
|
",expended_fraction INT4 NOT NULL"
|
||||||
",expended_currency VARCHAR(4) NOT NULL"
|
",expended_currency VARCHAR(4) NOT NULL"
|
||||||
",refresh_session_pub BYTEA"
|
",refresh_session_hash BYTEA"
|
||||||
")");
|
")");
|
||||||
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_sessions "
|
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_sessions "
|
||||||
"("
|
"("
|
||||||
" session_pub BYTEA PRIMARY KEY CHECK (length(session_pub) = 32)"
|
" session_hash BYTEA PRIMARY KEY CHECK (length(session_hash) = 32)"
|
||||||
",session_melt_sig BYTEA"
|
",session_melt_sig BYTEA"
|
||||||
",session_commit_sig BYTEA"
|
",session_commit_sig BYTEA"
|
||||||
",noreveal_index INT2 NOT NULL"
|
",noreveal_index INT2 NOT NULL"
|
||||||
@ -234,14 +234,14 @@ postgres_create_tables (void *cls,
|
|||||||
") ");
|
") ");
|
||||||
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_order "
|
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_order "
|
||||||
"( "
|
"( "
|
||||||
" session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub)"
|
" session_hash BYTEA NOT NULL REFERENCES refresh_sessions (session_hash)"
|
||||||
",newcoin_index INT2 NOT NULL "
|
",newcoin_index INT2 NOT NULL "
|
||||||
",denom_pub BYTEA NOT NULL "
|
",denom_pub BYTEA NOT NULL "
|
||||||
",PRIMARY KEY (session_pub, newcoin_index)"
|
",PRIMARY KEY (session_hash, newcoin_index)"
|
||||||
") ");
|
") ");
|
||||||
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_commit_link"
|
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_commit_link"
|
||||||
"("
|
"("
|
||||||
" session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub)"
|
" session_hash BYTEA NOT NULL REFERENCES refresh_sessions (session_hash)"
|
||||||
",transfer_pub BYTEA NOT NULL"
|
",transfer_pub BYTEA NOT NULL"
|
||||||
",link_secret_enc BYTEA NOT NULL"
|
",link_secret_enc BYTEA NOT NULL"
|
||||||
// index of the old coin in the customer's request
|
// index of the old coin in the customer's request
|
||||||
@ -252,7 +252,7 @@ postgres_create_tables (void *cls,
|
|||||||
")");
|
")");
|
||||||
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_commit_coin"
|
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_commit_coin"
|
||||||
"("
|
"("
|
||||||
" session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub) "
|
" session_hash BYTEA NOT NULL REFERENCES refresh_sessions (session_hash) "
|
||||||
",link_vector_enc BYTEA NOT NULL"
|
",link_vector_enc BYTEA NOT NULL"
|
||||||
// index of the new coin in the customer's request
|
// index of the new coin in the customer's request
|
||||||
",newcoin_index INT2 NOT NULL"
|
",newcoin_index INT2 NOT NULL"
|
||||||
@ -262,14 +262,14 @@ postgres_create_tables (void *cls,
|
|||||||
")");
|
")");
|
||||||
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_melt"
|
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_melt"
|
||||||
"("
|
"("
|
||||||
" session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub) "
|
" session_hash BYTEA NOT NULL REFERENCES refresh_sessions (session_hash) "
|
||||||
",coin_pub BYTEA NOT NULL REFERENCES known_coins (coin_pub) "
|
",coin_pub BYTEA NOT NULL REFERENCES known_coins (coin_pub) "
|
||||||
",denom_pub BYTEA NOT NULL "
|
",denom_pub BYTEA NOT NULL "
|
||||||
",oldcoin_index INT2 NOT NULL"
|
",oldcoin_index INT2 NOT NULL"
|
||||||
")");
|
")");
|
||||||
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_collectable"
|
SQLEXEC("CREATE TABLE IF NOT EXISTS refresh_collectable"
|
||||||
"("
|
"("
|
||||||
" session_pub BYTEA NOT NULL REFERENCES refresh_sessions (session_pub) "
|
" session_hash BYTEA NOT NULL REFERENCES refresh_sessions (session_hash) "
|
||||||
",ev_sig BYTEA NOT NULL"
|
",ev_sig BYTEA NOT NULL"
|
||||||
",newcoin_index INT2 NOT NULL"
|
",newcoin_index INT2 NOT NULL"
|
||||||
")");
|
")");
|
||||||
@ -393,16 +393,16 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
#if 0
|
#if 0
|
||||||
PREPARE ("get_refresh_session",
|
PREPARE ("get_refresh_session",
|
||||||
"SELECT "
|
"SELECT "
|
||||||
" (SELECT count(*) FROM refresh_melt WHERE session_pub = $1)::INT2 as num_oldcoins "
|
" (SELECT count(*) FROM refresh_melt WHERE session_hash = $1)::INT2 as num_oldcoins "
|
||||||
",(SELECT count(*) FROM refresh_blind_session_keys "
|
",(SELECT count(*) FROM refresh_blind_session_keys "
|
||||||
" WHERE session_pub = $1 and cnc_index = 0)::INT2 as num_newcoins "
|
" WHERE session_hash = $1 and cnc_index = 0)::INT2 as num_newcoins "
|
||||||
",(SELECT count(*) FROM refresh_blind_session_keys "
|
",(SELECT count(*) FROM refresh_blind_session_keys "
|
||||||
" WHERE session_pub = $1 and newcoin_index = 0)::INT2 as kappa "
|
" WHERE session_hash = $1 and newcoin_index = 0)::INT2 as kappa "
|
||||||
",noreveal_index"
|
",noreveal_index"
|
||||||
",session_commit_sig "
|
",session_commit_sig "
|
||||||
",reveal_ok "
|
",reveal_ok "
|
||||||
"FROM refresh_sessions "
|
"FROM refresh_sessions "
|
||||||
"WHERE session_pub = $1",
|
"WHERE session_hash = $1",
|
||||||
1, NULL);
|
1, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -410,7 +410,7 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
"SELECT "
|
"SELECT "
|
||||||
" coin_pub, denom_pub, denom_sig "
|
" coin_pub, denom_pub, denom_sig "
|
||||||
",expended_value, expended_fraction, expended_currency "
|
",expended_value, expended_fraction, expended_currency "
|
||||||
",refresh_session_pub "
|
",refresh_session_hash "
|
||||||
"FROM known_coins "
|
"FROM known_coins "
|
||||||
"WHERE coin_pub = $1",
|
"WHERE coin_pub = $1",
|
||||||
1, NULL);
|
1, NULL);
|
||||||
@ -422,7 +422,7 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
",expended_value = $4 "
|
",expended_value = $4 "
|
||||||
",expended_fraction = $5 "
|
",expended_fraction = $5 "
|
||||||
",expended_currency = $6 "
|
",expended_currency = $6 "
|
||||||
",refresh_session_pub = $7 "
|
",refresh_session_hash = $7 "
|
||||||
"WHERE "
|
"WHERE "
|
||||||
" coin_pub = $1 ",
|
" coin_pub = $1 ",
|
||||||
7, NULL);
|
7, NULL);
|
||||||
@ -434,7 +434,7 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
",expended_value"
|
",expended_value"
|
||||||
",expended_fraction"
|
",expended_fraction"
|
||||||
",expended_currency"
|
",expended_currency"
|
||||||
",refresh_session_pub"
|
",refresh_session_hash"
|
||||||
")"
|
")"
|
||||||
"VALUES ($1,$2,$3,$4,$5,$6,$7)",
|
"VALUES ($1,$2,$3,$4,$5,$6,$7)",
|
||||||
7, NULL);
|
7, NULL);
|
||||||
@ -443,26 +443,26 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
" transfer_pub "
|
" transfer_pub "
|
||||||
",link_secret_enc "
|
",link_secret_enc "
|
||||||
"FROM refresh_commit_link "
|
"FROM refresh_commit_link "
|
||||||
"WHERE session_pub = $1 AND cnc_index = $2 AND oldcoin_index = $3",
|
"WHERE session_hash = $1 AND cnc_index = $2 AND oldcoin_index = $3",
|
||||||
3, NULL);
|
3, NULL);
|
||||||
PREPARE ("get_refresh_commit_coin",
|
PREPARE ("get_refresh_commit_coin",
|
||||||
"SELECT "
|
"SELECT "
|
||||||
" link_vector_enc "
|
" link_vector_enc "
|
||||||
",coin_ev "
|
",coin_ev "
|
||||||
"FROM refresh_commit_coin "
|
"FROM refresh_commit_coin "
|
||||||
"WHERE session_pub = $1 AND cnc_index = $2 AND newcoin_index = $3",
|
"WHERE session_hash = $1 AND cnc_index = $2 AND newcoin_index = $3",
|
||||||
3, NULL);
|
3, NULL);
|
||||||
PREPARE ("insert_refresh_order",
|
PREPARE ("insert_refresh_order",
|
||||||
"INSERT INTO refresh_order ( "
|
"INSERT INTO refresh_order ( "
|
||||||
" newcoin_index "
|
" newcoin_index "
|
||||||
",session_pub "
|
",session_hash "
|
||||||
",denom_pub "
|
",denom_pub "
|
||||||
") "
|
") "
|
||||||
"VALUES ($1, $2, $3) ",
|
"VALUES ($1, $2, $3) ",
|
||||||
3, NULL);
|
3, NULL);
|
||||||
PREPARE ("insert_refresh_melt",
|
PREPARE ("insert_refresh_melt",
|
||||||
"INSERT INTO refresh_melt ( "
|
"INSERT INTO refresh_melt ( "
|
||||||
" session_pub "
|
" session_hash "
|
||||||
",oldcoin_index "
|
",oldcoin_index "
|
||||||
",coin_pub "
|
",coin_pub "
|
||||||
",denom_pub "
|
",denom_pub "
|
||||||
@ -472,28 +472,28 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
PREPARE ("get_refresh_order",
|
PREPARE ("get_refresh_order",
|
||||||
"SELECT denom_pub "
|
"SELECT denom_pub "
|
||||||
"FROM refresh_order "
|
"FROM refresh_order "
|
||||||
"WHERE session_pub = $1 AND newcoin_index = $2",
|
"WHERE session_hash = $1 AND newcoin_index = $2",
|
||||||
2, NULL);
|
2, NULL);
|
||||||
PREPARE ("get_refresh_collectable",
|
PREPARE ("get_refresh_collectable",
|
||||||
"SELECT ev_sig "
|
"SELECT ev_sig "
|
||||||
"FROM refresh_collectable "
|
"FROM refresh_collectable "
|
||||||
"WHERE session_pub = $1 AND newcoin_index = $2",
|
"WHERE session_hash = $1 AND newcoin_index = $2",
|
||||||
2, NULL);
|
2, NULL);
|
||||||
PREPARE ("get_refresh_melt",
|
PREPARE ("get_refresh_melt",
|
||||||
"SELECT coin_pub "
|
"SELECT coin_pub "
|
||||||
"FROM refresh_melt "
|
"FROM refresh_melt "
|
||||||
"WHERE session_pub = $1 AND oldcoin_index = $2",
|
"WHERE session_hash = $1 AND oldcoin_index = $2",
|
||||||
2, NULL);
|
2, NULL);
|
||||||
PREPARE ("insert_refresh_session",
|
PREPARE ("insert_refresh_session",
|
||||||
"INSERT INTO refresh_sessions ( "
|
"INSERT INTO refresh_sessions ( "
|
||||||
" session_pub "
|
" session_hash "
|
||||||
",noreveal_index "
|
",noreveal_index "
|
||||||
") "
|
") "
|
||||||
"VALUES ($1, $2) ",
|
"VALUES ($1, $2) ",
|
||||||
2, NULL);
|
2, NULL);
|
||||||
PREPARE ("insert_refresh_commit_link",
|
PREPARE ("insert_refresh_commit_link",
|
||||||
"INSERT INTO refresh_commit_link ( "
|
"INSERT INTO refresh_commit_link ( "
|
||||||
" session_pub "
|
" session_hash "
|
||||||
",transfer_pub "
|
",transfer_pub "
|
||||||
",cnc_index "
|
",cnc_index "
|
||||||
",oldcoin_index "
|
",oldcoin_index "
|
||||||
@ -503,7 +503,7 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
5, NULL);
|
5, NULL);
|
||||||
PREPARE ("insert_refresh_commit_coin",
|
PREPARE ("insert_refresh_commit_coin",
|
||||||
"INSERT INTO refresh_commit_coin ( "
|
"INSERT INTO refresh_commit_coin ( "
|
||||||
" session_pub "
|
" session_hash "
|
||||||
",coin_ev "
|
",coin_ev "
|
||||||
",cnc_index "
|
",cnc_index "
|
||||||
",newcoin_index "
|
",newcoin_index "
|
||||||
@ -513,7 +513,7 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
5, NULL);
|
5, NULL);
|
||||||
PREPARE ("insert_refresh_collectable",
|
PREPARE ("insert_refresh_collectable",
|
||||||
"INSERT INTO refresh_collectable ( "
|
"INSERT INTO refresh_collectable ( "
|
||||||
" session_pub "
|
" session_hash "
|
||||||
",newcoin_index "
|
",newcoin_index "
|
||||||
",ev_sig "
|
",ev_sig "
|
||||||
") "
|
") "
|
||||||
@ -522,33 +522,33 @@ postgres_prepare (PGconn *db_conn)
|
|||||||
PREPARE ("set_reveal_ok",
|
PREPARE ("set_reveal_ok",
|
||||||
"UPDATE refresh_sessions "
|
"UPDATE refresh_sessions "
|
||||||
"SET reveal_ok = TRUE "
|
"SET reveal_ok = TRUE "
|
||||||
"WHERE session_pub = $1 ",
|
"WHERE session_hash = $1 ",
|
||||||
1, NULL);
|
1, NULL);
|
||||||
PREPARE ("get_link",
|
PREPARE ("get_link",
|
||||||
"SELECT link_vector_enc, ro.denom_pub, ev_sig "
|
"SELECT link_vector_enc, ro.denom_pub, ev_sig "
|
||||||
"FROM refresh_melt rm "
|
"FROM refresh_melt rm "
|
||||||
" JOIN refresh_order ro USING (session_pub) "
|
" JOIN refresh_order ro USING (session_hash) "
|
||||||
" JOIN refresh_commit_coin rcc USING (session_pub) "
|
" JOIN refresh_commit_coin rcc USING (session_hash) "
|
||||||
" JOIN refresh_sessions rs USING (session_pub) "
|
" JOIN refresh_sessions rs USING (session_hash) "
|
||||||
" JOIN refresh_collectable rc USING (session_pub) "
|
" JOIN refresh_collectable rc USING (session_hash) "
|
||||||
"WHERE rm.coin_pub = $1 "
|
"WHERE rm.coin_pub = $1 "
|
||||||
"AND ro.newcoin_index = rcc.newcoin_index "
|
"AND ro.newcoin_index = rcc.newcoin_index "
|
||||||
"AND ro.newcoin_index = rc.newcoin_index "
|
"AND ro.newcoin_index = rc.newcoin_index "
|
||||||
"AND rcc.cnc_index = rs.noreveal_index % ( "
|
"AND rcc.cnc_index = rs.noreveal_index % ( "
|
||||||
" SELECT count(*) FROM refresh_commit_coin rcc2 "
|
" SELECT count(*) FROM refresh_commit_coin rcc2 "
|
||||||
" WHERE rcc2.newcoin_index = 0 AND rcc2.session_pub = rs.session_pub "
|
" WHERE rcc2.newcoin_index = 0 AND rcc2.session_hash = rs.session_hash "
|
||||||
" ) ",
|
" ) ",
|
||||||
1, NULL);
|
1, NULL);
|
||||||
PREPARE ("get_transfer",
|
PREPARE ("get_transfer",
|
||||||
"SELECT transfer_pub, link_secret_enc "
|
"SELECT transfer_pub, link_secret_enc "
|
||||||
"FROM refresh_melt rm "
|
"FROM refresh_melt rm "
|
||||||
" JOIN refresh_commit_link rcl USING (session_pub) "
|
" JOIN refresh_commit_link rcl USING (session_hash) "
|
||||||
" JOIN refresh_sessions rs USING (session_pub) "
|
" JOIN refresh_sessions rs USING (session_hash) "
|
||||||
"WHERE rm.coin_pub = $1 "
|
"WHERE rm.coin_pub = $1 "
|
||||||
"AND rm.oldcoin_index = rcl.oldcoin_index "
|
"AND rm.oldcoin_index = rcl.oldcoin_index "
|
||||||
"AND rcl.cnc_index = rs.noreveal_index % ( "
|
"AND rcl.cnc_index = rs.noreveal_index % ( "
|
||||||
" SELECT count(*) FROM refresh_commit_coin rcc2 "
|
" SELECT count(*) FROM refresh_commit_coin rcc2 "
|
||||||
" WHERE newcoin_index = 0 AND rcc2.session_pub = rm.session_pub "
|
" WHERE newcoin_index = 0 AND rcc2.session_hash = rm.session_hash "
|
||||||
" ) ",
|
" ) ",
|
||||||
1, NULL);
|
1, NULL);
|
||||||
PREPARE ("insert_deposit",
|
PREPARE ("insert_deposit",
|
||||||
@ -1434,11 +1434,11 @@ postgres_insert_deposit (void *cls,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lookup refresh session data under the given public key.
|
* Lookup refresh session data under the given @a session_hash.
|
||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database handle to use
|
* @param session database handle to use
|
||||||
* @param refresh_session_pub public key to use for the lookup
|
* @param session_hash hash over the melt to use to locate the session
|
||||||
* @param refresh_session[OUT] where to store the result
|
* @param refresh_session[OUT] where to store the result
|
||||||
* @return #GNUNET_YES on success,
|
* @return #GNUNET_YES on success,
|
||||||
* #GNUNET_NO if not found,
|
* #GNUNET_NO if not found,
|
||||||
@ -1447,13 +1447,13 @@ postgres_insert_deposit (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_get_refresh_session (void *cls,
|
postgres_get_refresh_session (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
struct RefreshSession *refresh_session)
|
struct RefreshSession *refresh_session)
|
||||||
{
|
{
|
||||||
// FIXME: check logic!
|
// FIXME: check logic!
|
||||||
int res;
|
int res;
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(refresh_session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1511,11 +1511,11 @@ postgres_get_refresh_session (void *cls,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store new refresh session data under the given public key.
|
* Store new refresh session data under the given @a session_hash.
|
||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database handle to use
|
* @param session database handle to use
|
||||||
* @param refresh_session_pub public key to use to locate the session
|
* @param session_hash hash over the melt to use to locate the session
|
||||||
* @param refresh_session session data to store
|
* @param refresh_session session data to store
|
||||||
* @return #GNUNET_YES on success,
|
* @return #GNUNET_YES on success,
|
||||||
* #GNUNET_SYSERR on DB failure
|
* #GNUNET_SYSERR on DB failure
|
||||||
@ -1523,13 +1523,13 @@ postgres_get_refresh_session (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_create_refresh_session (void *cls,
|
postgres_create_refresh_session (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
const struct RefreshSession *refresh_session)
|
const struct RefreshSession *refresh_session)
|
||||||
{
|
{
|
||||||
// FIXME: actually store session data!
|
// FIXME: actually store session data!
|
||||||
uint16_t noreveal_index;
|
uint16_t noreveal_index;
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&noreveal_index),
|
TALER_DB_QUERY_PARAM_PTR(&noreveal_index),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
};
|
};
|
||||||
@ -1558,16 +1558,15 @@ postgres_create_refresh_session (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection
|
* @param session database connection
|
||||||
* @param refresh_session session key of the melt operation
|
|
||||||
* @param oldcoin_index index of the coin to store
|
* @param oldcoin_index index of the coin to store
|
||||||
* @param melt melt operation
|
* @param melt melt operation details to store; includes
|
||||||
|
* the session hash of the melt
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
* #GNUNET_SYSERR on internal error
|
* #GNUNET_SYSERR on internal error
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
postgres_insert_refresh_melt (void *cls,
|
postgres_insert_refresh_melt (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session,
|
|
||||||
uint16_t oldcoin_index,
|
uint16_t oldcoin_index,
|
||||||
const struct RefreshMelt *melt)
|
const struct RefreshMelt *melt)
|
||||||
{
|
{
|
||||||
@ -1581,7 +1580,7 @@ postgres_insert_refresh_melt (void *cls,
|
|||||||
&buf);
|
&buf);
|
||||||
{
|
{
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(refresh_session),
|
TALER_DB_QUERY_PARAM_PTR(&melt->session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&oldcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&oldcoin_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&melt->coin.coin_pub),
|
TALER_DB_QUERY_PARAM_PTR(&melt->coin.coin_pub),
|
||||||
TALER_DB_QUERY_PARAM_PTR_SIZED(buf, buf_size),
|
TALER_DB_QUERY_PARAM_PTR_SIZED(buf, buf_size),
|
||||||
@ -1617,7 +1616,7 @@ postgres_insert_refresh_melt (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_get_refresh_melt (void *cls,
|
postgres_get_refresh_melt (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t oldcoin_index,
|
uint16_t oldcoin_index,
|
||||||
struct RefreshMelt *melt)
|
struct RefreshMelt *melt)
|
||||||
{
|
{
|
||||||
@ -1633,7 +1632,7 @@ postgres_get_refresh_melt (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection
|
* @param session database connection
|
||||||
* @param session_pub refresh session key
|
* @param session_hash hash to identify refresh session
|
||||||
* @param num_newcoins number of coins to generate, size of the @a denom_pubs array
|
* @param num_newcoins number of coins to generate, size of the @a denom_pubs array
|
||||||
* @param denom_pubs array denominations of the coins to create
|
* @param denom_pubs array denominations of the coins to create
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -1642,7 +1641,7 @@ postgres_get_refresh_melt (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_insert_refresh_order (void *cls,
|
postgres_insert_refresh_order (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t num_newcoins,
|
uint16_t num_newcoins,
|
||||||
const struct TALER_DenominationPublicKey *denom_pubs)
|
const struct TALER_DenominationPublicKey *denom_pubs)
|
||||||
{
|
{
|
||||||
@ -1658,7 +1657,7 @@ postgres_insert_refresh_order (void *cls,
|
|||||||
{
|
{
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR (&newcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR (&newcoin_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR (session_pub),
|
TALER_DB_QUERY_PARAM_PTR (session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR_SIZED (buf, buf_size),
|
TALER_DB_QUERY_PARAM_PTR_SIZED (buf, buf_size),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
};
|
};
|
||||||
@ -1689,7 +1688,7 @@ postgres_insert_refresh_order (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection
|
* @param session database connection
|
||||||
* @param session_pub refresh session key
|
* @param session_hash hash to identify refresh session
|
||||||
* @param newcoin_index array of the @a denom_pubs array
|
* @param newcoin_index array of the @a denom_pubs array
|
||||||
* @param denom_pubs where to store the deomination keys
|
* @param denom_pubs where to store the deomination keys
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -1698,7 +1697,7 @@ postgres_insert_refresh_order (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_get_refresh_order (void *cls,
|
postgres_get_refresh_order (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t num_newcoins,
|
uint16_t num_newcoins,
|
||||||
struct TALER_DenominationPublicKey *denom_pubs)
|
struct TALER_DenominationPublicKey *denom_pubs)
|
||||||
{
|
{
|
||||||
@ -1708,7 +1707,7 @@ postgres_get_refresh_order (void *cls,
|
|||||||
uint16_t newcoin_index_nbo = htons (num_newcoins);
|
uint16_t newcoin_index_nbo = htons (num_newcoins);
|
||||||
|
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
};
|
};
|
||||||
@ -1756,7 +1755,7 @@ postgres_get_refresh_order (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection to use
|
* @param session database connection to use
|
||||||
* @param refresh_session_pub refresh session this commitment belongs to
|
* @param session_hash hash to identify refresh session
|
||||||
* @param i set index (1st dimension)
|
* @param i set index (1st dimension)
|
||||||
* @param num_newcoins coin index size of the @a commit_coins array
|
* @param num_newcoins coin index size of the @a commit_coins array
|
||||||
* @param commit_coins array of coin commitments to store
|
* @param commit_coins array of coin commitments to store
|
||||||
@ -1766,7 +1765,7 @@ postgres_get_refresh_order (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_insert_refresh_commit_coins (void *cls,
|
postgres_insert_refresh_commit_coins (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int num_newcoins,
|
unsigned int num_newcoins,
|
||||||
const struct RefreshCommitCoin *commit_coins)
|
const struct RefreshCommitCoin *commit_coins)
|
||||||
@ -1775,7 +1774,7 @@ postgres_insert_refresh_commit_coins (void *cls,
|
|||||||
uint16_t cnc_index_nbo = htons (i);
|
uint16_t cnc_index_nbo = htons (i);
|
||||||
uint16_t newcoin_index_nbo = htons (num_newcoins);
|
uint16_t newcoin_index_nbo = htons (num_newcoins);
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(refresh_session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR_SIZED(commit_coins->coin_ev, commit_coins->coin_ev_size),
|
TALER_DB_QUERY_PARAM_PTR_SIZED(commit_coins->coin_ev, commit_coins->coin_ev_size),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
||||||
@ -1813,7 +1812,7 @@ postgres_insert_refresh_commit_coins (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection to use
|
* @param session database connection to use
|
||||||
* @param refresh_session_pub refresh session the commitment belongs to
|
* @param session_hash hash to identify refresh session
|
||||||
* @param i set index (1st dimension)
|
* @param i set index (1st dimension)
|
||||||
* @param j coin index (2nd dimension), corresponds to refreshed (new) coins
|
* @param j coin index (2nd dimension), corresponds to refreshed (new) coins
|
||||||
* @param commit_coin[OUT] coin commitment to return
|
* @param commit_coin[OUT] coin commitment to return
|
||||||
@ -1824,7 +1823,7 @@ postgres_insert_refresh_commit_coins (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_get_refresh_commit_coins (void *cls,
|
postgres_get_refresh_commit_coins (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int cnc_index,
|
unsigned int cnc_index,
|
||||||
unsigned int newcoin_index,
|
unsigned int newcoin_index,
|
||||||
struct RefreshCommitCoin *cc)
|
struct RefreshCommitCoin *cc)
|
||||||
@ -1833,7 +1832,7 @@ postgres_get_refresh_commit_coins (void *cls,
|
|||||||
uint16_t cnc_index_nbo = htons (cnc_index);
|
uint16_t cnc_index_nbo = htons (cnc_index);
|
||||||
uint16_t newcoin_index_nbo = htons (newcoin_index);
|
uint16_t newcoin_index_nbo = htons (newcoin_index);
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(refresh_session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
@ -1894,8 +1893,7 @@ postgres_get_refresh_commit_coins (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection to use
|
* @param session database connection to use
|
||||||
* @param refresh_session_pub public key of the refresh session this
|
* @param session_hash hash to identify refresh session
|
||||||
* commitment belongs with -- FIXME: should not be needed!
|
|
||||||
* @param i set index (1st dimension)
|
* @param i set index (1st dimension)
|
||||||
* @param j coin index (2nd dimension), corresponds to melted (old) coins
|
* @param j coin index (2nd dimension), corresponds to melted (old) coins
|
||||||
* @param commit_link link information to store
|
* @param commit_link link information to store
|
||||||
@ -1904,7 +1902,7 @@ postgres_get_refresh_commit_coins (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_insert_refresh_commit_links (void *cls,
|
postgres_insert_refresh_commit_links (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int j,
|
unsigned int j,
|
||||||
const struct RefreshCommitLink *commit_link)
|
const struct RefreshCommitLink *commit_link)
|
||||||
@ -1913,7 +1911,7 @@ postgres_insert_refresh_commit_links (void *cls,
|
|||||||
uint16_t cnc_index_nbo = htons (i);
|
uint16_t cnc_index_nbo = htons (i);
|
||||||
uint16_t oldcoin_index_nbo = htons (j);
|
uint16_t oldcoin_index_nbo = htons (j);
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(refresh_session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&commit_link->transfer_pub),
|
TALER_DB_QUERY_PARAM_PTR(&commit_link->transfer_pub),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&oldcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&oldcoin_index_nbo),
|
||||||
@ -1948,8 +1946,7 @@ postgres_insert_refresh_commit_links (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection to use
|
* @param session database connection to use
|
||||||
* @param refresh_session_pub public key of the refresh session this
|
* @param session_hash hash to identify refresh session
|
||||||
* commitment belongs with -- FIXME: should not be needed!
|
|
||||||
* @param i set index (1st dimension)
|
* @param i set index (1st dimension)
|
||||||
* @param num_links size of the @a commit_link array
|
* @param num_links size of the @a commit_link array
|
||||||
* @param links[OUT] array of link information to return
|
* @param links[OUT] array of link information to return
|
||||||
@ -1960,7 +1957,7 @@ postgres_insert_refresh_commit_links (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_get_refresh_commit_links (void *cls,
|
postgres_get_refresh_commit_links (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int num_links,
|
unsigned int num_links,
|
||||||
struct RefreshCommitLink *links)
|
struct RefreshCommitLink *links)
|
||||||
@ -1970,7 +1967,7 @@ postgres_get_refresh_commit_links (void *cls,
|
|||||||
uint16_t oldcoin_index_nbo = htons (num_links);
|
uint16_t oldcoin_index_nbo = htons (num_links);
|
||||||
|
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(refresh_session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&cnc_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&oldcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&oldcoin_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
@ -2017,7 +2014,7 @@ postgres_get_refresh_commit_links (void *cls,
|
|||||||
*
|
*
|
||||||
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
* @param cls the `struct PostgresClosure` with the plugin-specific state
|
||||||
* @param session database connection
|
* @param session database connection
|
||||||
* @param session_pub refresh session
|
* @param session_hash hash to identify refresh session
|
||||||
* @param newcoin_index coin index
|
* @param newcoin_index coin index
|
||||||
* @param ev_sig coin signature
|
* @param ev_sig coin signature
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -2025,7 +2022,7 @@ postgres_get_refresh_commit_links (void *cls,
|
|||||||
static int
|
static int
|
||||||
postgres_insert_refresh_collectable (void *cls,
|
postgres_insert_refresh_collectable (void *cls,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t newcoin_index,
|
uint16_t newcoin_index,
|
||||||
const struct TALER_DenominationSignature *ev_sig)
|
const struct TALER_DenominationSignature *ev_sig)
|
||||||
{
|
{
|
||||||
@ -2039,7 +2036,7 @@ postgres_insert_refresh_collectable (void *cls,
|
|||||||
&buf);
|
&buf);
|
||||||
{
|
{
|
||||||
struct TALER_DB_QueryParam params[] = {
|
struct TALER_DB_QueryParam params[] = {
|
||||||
TALER_DB_QUERY_PARAM_PTR(session_pub),
|
TALER_DB_QUERY_PARAM_PTR(session_hash),
|
||||||
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
TALER_DB_QUERY_PARAM_PTR(&newcoin_index_nbo),
|
||||||
TALER_DB_QUERY_PARAM_PTR_SIZED(buf, buf_size),
|
TALER_DB_QUERY_PARAM_PTR_SIZED(buf, buf_size),
|
||||||
TALER_DB_QUERY_PARAM_END
|
TALER_DB_QUERY_PARAM_END
|
||||||
|
@ -481,7 +481,7 @@ TALER_MINT_db_execute_withdraw_sign (struct MHD_Connection *connection,
|
|||||||
* @param connection the connection to send errors to
|
* @param connection the connection to send errors to
|
||||||
* @param session the database connection
|
* @param session the database connection
|
||||||
* @param key_state the mint's key state
|
* @param key_state the mint's key state
|
||||||
* @param session_pub the refresh session's public key
|
* @param session_hash hash identifying the refresh session
|
||||||
* @param coin_public_info the coin to melt
|
* @param coin_public_info the coin to melt
|
||||||
* @param coin_details details about the coin being melted
|
* @param coin_details details about the coin being melted
|
||||||
* @param oldcoin_index what is the number assigned to this coin
|
* @param oldcoin_index what is the number assigned to this coin
|
||||||
@ -493,7 +493,7 @@ static int
|
|||||||
refresh_accept_melts (struct MHD_Connection *connection,
|
refresh_accept_melts (struct MHD_Connection *connection,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct MintKeyState *key_state,
|
const struct MintKeyState *key_state,
|
||||||
const struct GNUNET_HashCode *melt_hash,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct TALER_SessionPublicKey *session_pub,
|
||||||
const struct TALER_CoinPublicInfo *coin_public_info,
|
const struct TALER_CoinPublicInfo *coin_public_info,
|
||||||
const struct MeltDetails *coin_details,
|
const struct MeltDetails *coin_details,
|
||||||
@ -563,12 +563,11 @@ refresh_accept_melts (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
melt.coin = *coin_public_info;
|
melt.coin = *coin_public_info;
|
||||||
melt.coin_sig = coin_details->melt_sig;
|
melt.coin_sig = coin_details->melt_sig;
|
||||||
melt.melt_hash = *melt_hash;
|
melt.session_hash = *session_hash;
|
||||||
melt.amount_with_fee = coin_details->melt_amount_with_fee;
|
melt.amount_with_fee = coin_details->melt_amount_with_fee;
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->insert_refresh_melt (plugin->cls,
|
plugin->insert_refresh_melt (plugin->cls,
|
||||||
session,
|
session,
|
||||||
session_pub,
|
|
||||||
oldcoin_index,
|
oldcoin_index,
|
||||||
&melt))
|
&melt))
|
||||||
{
|
{
|
||||||
@ -587,7 +586,7 @@ refresh_accept_melts (struct MHD_Connection *connection,
|
|||||||
* melted and confirm the melting operation to the client.
|
* melted and confirm the melting operation to the client.
|
||||||
*
|
*
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param melt_hash hash code of the session the coins are melted into
|
* @param session_hash hash code of the session the coins are melted into
|
||||||
* @param refresh_session_pub public key of the refresh session
|
* @param refresh_session_pub public key of the refresh session
|
||||||
* @param client_signature signature of the client (matching @a refresh_session_pub)
|
* @param client_signature signature of the client (matching @a refresh_session_pub)
|
||||||
* over the melting request
|
* over the melting request
|
||||||
@ -606,7 +605,7 @@ refresh_accept_melts (struct MHD_Connection *connection,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
||||||
const struct GNUNET_HashCode *melt_hash,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct TALER_SessionPublicKey *refresh_session_pub,
|
||||||
const struct TALER_SessionSignature *client_signature,
|
const struct TALER_SessionSignature *client_signature,
|
||||||
unsigned int num_new_denoms,
|
unsigned int num_new_denoms,
|
||||||
@ -639,14 +638,14 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
}
|
}
|
||||||
res = plugin->get_refresh_session (plugin->cls,
|
res = plugin->get_refresh_session (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
&refresh_session);
|
&refresh_session);
|
||||||
if (GNUNET_YES == res)
|
if (GNUNET_YES == res)
|
||||||
{
|
{
|
||||||
plugin->rollback (plugin->cls,
|
plugin->rollback (plugin->cls,
|
||||||
session);
|
session);
|
||||||
res = TALER_MINT_reply_refresh_melt_success (connection,
|
res = TALER_MINT_reply_refresh_melt_success (connection,
|
||||||
&refresh_session.session_hash,
|
session_hash,
|
||||||
refresh_session.noreveal_index);
|
refresh_session.noreveal_index);
|
||||||
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
||||||
}
|
}
|
||||||
@ -665,7 +664,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
(res = refresh_accept_melts (connection,
|
(res = refresh_accept_melts (connection,
|
||||||
session,
|
session,
|
||||||
key_state,
|
key_state,
|
||||||
melt_hash,
|
session_hash,
|
||||||
refresh_session_pub,
|
refresh_session_pub,
|
||||||
&coin_public_infos[i],
|
&coin_public_infos[i],
|
||||||
&coin_melt_details[i],
|
&coin_melt_details[i],
|
||||||
@ -683,7 +682,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->insert_refresh_order (plugin->cls,
|
plugin->insert_refresh_order (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
num_new_denoms,
|
num_new_denoms,
|
||||||
denom_pubs))
|
denom_pubs))
|
||||||
{
|
{
|
||||||
@ -697,7 +696,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->insert_refresh_commit_coins (plugin->cls,
|
plugin->insert_refresh_commit_coins (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
i,
|
i,
|
||||||
num_new_denoms,
|
num_new_denoms,
|
||||||
commit_coin[i]))
|
commit_coin[i]))
|
||||||
@ -712,7 +711,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->insert_refresh_commit_links (plugin->cls,
|
plugin->insert_refresh_commit_links (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
i,
|
i,
|
||||||
coin_count,
|
coin_count,
|
||||||
commit_link[i]))
|
commit_link[i]))
|
||||||
@ -726,7 +725,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
/* store 'global' session data */
|
/* store 'global' session data */
|
||||||
refresh_session.melt_sig = *client_signature;
|
refresh_session.melt_sig = *client_signature;
|
||||||
refresh_session.session_hash = *melt_hash;
|
refresh_session.refresh_session_pub = *refresh_session_pub;
|
||||||
refresh_session.num_oldcoins = coin_count;
|
refresh_session.num_oldcoins = coin_count;
|
||||||
refresh_session.num_newcoins = num_new_denoms;
|
refresh_session.num_newcoins = num_new_denoms;
|
||||||
refresh_session.kappa = KAPPA; // FIXME... (#3711)
|
refresh_session.kappa = KAPPA; // FIXME... (#3711)
|
||||||
@ -736,7 +735,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
(res = plugin->create_refresh_session (plugin->cls,
|
(res = plugin->create_refresh_session (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
&refresh_session)))
|
&refresh_session)))
|
||||||
{
|
{
|
||||||
plugin->rollback (plugin->cls,
|
plugin->rollback (plugin->cls,
|
||||||
@ -754,7 +753,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
return TALER_MINT_reply_commit_error (connection);
|
return TALER_MINT_reply_commit_error (connection);
|
||||||
}
|
}
|
||||||
return TALER_MINT_reply_refresh_melt_success (connection,
|
return TALER_MINT_reply_refresh_melt_success (connection,
|
||||||
&refresh_session.session_hash,
|
session_hash,
|
||||||
refresh_session.noreveal_index);
|
refresh_session.noreveal_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -767,7 +766,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
*
|
*
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param session database connection to use
|
* @param session database connection to use
|
||||||
* @param refresh_session session to query
|
* @param session_hash hash of session to query
|
||||||
* @param off commitment offset to check
|
* @param off commitment offset to check
|
||||||
* @param num_oldcoins size of the @a transfer_privs and @a melts arrays
|
* @param num_oldcoins size of the @a transfer_privs and @a melts arrays
|
||||||
* @param transfer_privs private transfer keys
|
* @param transfer_privs private transfer keys
|
||||||
@ -781,7 +780,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
static int
|
static int
|
||||||
check_commitment (struct MHD_Connection *connection,
|
check_commitment (struct MHD_Connection *connection,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int off,
|
unsigned int off,
|
||||||
unsigned int num_oldcoins,
|
unsigned int num_oldcoins,
|
||||||
const struct TALER_TransferPrivateKey *transfer_privs,
|
const struct TALER_TransferPrivateKey *transfer_privs,
|
||||||
@ -802,7 +801,7 @@ check_commitment (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->get_refresh_commit_links (plugin->cls,
|
plugin->get_refresh_commit_links (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session,
|
session_hash,
|
||||||
off,
|
off,
|
||||||
num_oldcoins,
|
num_oldcoins,
|
||||||
commit_links))
|
commit_links))
|
||||||
@ -901,7 +900,7 @@ check_commitment (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->get_refresh_commit_coins (plugin->cls,
|
plugin->get_refresh_commit_coins (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session,
|
session_hash,
|
||||||
off,
|
off,
|
||||||
num_newcoins,
|
num_newcoins,
|
||||||
commit_coins))
|
commit_coins))
|
||||||
@ -982,7 +981,7 @@ check_commitment (struct MHD_Connection *connection,
|
|||||||
*
|
*
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param session database connection to use
|
* @param session database connection to use
|
||||||
* @param refresh_session session to query
|
* @param session_hash hash of session to query
|
||||||
* @param key_state key state to lookup denomination pubs
|
* @param key_state key state to lookup denomination pubs
|
||||||
* @param denom_pub denomination key for the coin to create
|
* @param denom_pub denomination key for the coin to create
|
||||||
* @param commit_coin the coin that was committed
|
* @param commit_coin the coin that was committed
|
||||||
@ -992,7 +991,7 @@ check_commitment (struct MHD_Connection *connection,
|
|||||||
static struct TALER_DenominationSignature
|
static struct TALER_DenominationSignature
|
||||||
refresh_mint_coin (struct MHD_Connection *connection,
|
refresh_mint_coin (struct MHD_Connection *connection,
|
||||||
struct TALER_MINTDB_Session *session,
|
struct TALER_MINTDB_Session *session,
|
||||||
const struct TALER_SessionPublicKey *refresh_session,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
struct MintKeyState *key_state,
|
struct MintKeyState *key_state,
|
||||||
const struct TALER_DenominationPublicKey *denom_pub,
|
const struct TALER_DenominationPublicKey *denom_pub,
|
||||||
const struct RefreshCommitCoin *commit_coin,
|
const struct RefreshCommitCoin *commit_coin,
|
||||||
@ -1021,7 +1020,7 @@ refresh_mint_coin (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->insert_refresh_collectable (plugin->cls,
|
plugin->insert_refresh_collectable (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session,
|
session_hash,
|
||||||
coin_off,
|
coin_off,
|
||||||
&ev_sig))
|
&ev_sig))
|
||||||
{
|
{
|
||||||
@ -1041,7 +1040,7 @@ refresh_mint_coin (struct MHD_Connection *connection,
|
|||||||
* coins that was not chosen.
|
* coins that was not chosen.
|
||||||
*
|
*
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param refresh_session_pub public key of the refresh session
|
* @param session_hash hash identifying the refresh session
|
||||||
* @param kappa size of x-dimension of @transfer_privs array plus one (!)
|
* @param kappa size of x-dimension of @transfer_privs array plus one (!)
|
||||||
* @param num_oldcoins size of y-dimension of @transfer_privs array
|
* @param num_oldcoins size of y-dimension of @transfer_privs array
|
||||||
* @param transfer_pubs array with the revealed transfer keys
|
* @param transfer_pubs array with the revealed transfer keys
|
||||||
@ -1049,7 +1048,7 @@ refresh_mint_coin (struct MHD_Connection *connection,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int kappa,
|
unsigned int kappa,
|
||||||
unsigned int num_oldcoins,
|
unsigned int num_oldcoins,
|
||||||
struct TALER_TransferPrivateKey **transfer_privs)
|
struct TALER_TransferPrivateKey **transfer_privs)
|
||||||
@ -1075,11 +1074,11 @@ TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
res = plugin->get_refresh_session (plugin->cls,
|
res = plugin->get_refresh_session (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
&refresh_session);
|
&refresh_session);
|
||||||
if (GNUNET_NO == res)
|
if (GNUNET_NO == res)
|
||||||
return TALER_MINT_reply_arg_invalid (connection,
|
return TALER_MINT_reply_arg_invalid (connection,
|
||||||
"session_pub");
|
"session_hash");
|
||||||
if (GNUNET_SYSERR == res)
|
if (GNUNET_SYSERR == res)
|
||||||
return TALER_MINT_reply_internal_db_error (connection);
|
return TALER_MINT_reply_internal_db_error (connection);
|
||||||
if (0 == refresh_session.num_oldcoins)
|
if (0 == refresh_session.num_oldcoins)
|
||||||
@ -1095,7 +1094,7 @@ TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->get_refresh_melt (plugin->cls,
|
plugin->get_refresh_melt (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
j,
|
j,
|
||||||
&melts[j]))
|
&melts[j]))
|
||||||
{
|
{
|
||||||
@ -1109,7 +1108,7 @@ TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->get_refresh_order (plugin->cls,
|
plugin->get_refresh_order (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
refresh_session.num_newcoins,
|
refresh_session.num_newcoins,
|
||||||
denom_pubs))
|
denom_pubs))
|
||||||
{
|
{
|
||||||
@ -1129,7 +1128,7 @@ TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
(res = check_commitment (connection,
|
(res = check_commitment (connection,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
i + off,
|
i + off,
|
||||||
refresh_session.num_oldcoins,
|
refresh_session.num_oldcoins,
|
||||||
transfer_privs[i + off],
|
transfer_privs[i + off],
|
||||||
@ -1163,7 +1162,7 @@ TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
plugin->get_refresh_commit_coins (plugin->cls,
|
plugin->get_refresh_commit_coins (plugin->cls,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
refresh_session.noreveal_index,
|
refresh_session.noreveal_index,
|
||||||
refresh_session.num_newcoins,
|
refresh_session.num_newcoins,
|
||||||
commit_coins))
|
commit_coins))
|
||||||
@ -1182,7 +1181,7 @@ TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
|||||||
{
|
{
|
||||||
ev_sigs[j] = refresh_mint_coin (connection,
|
ev_sigs[j] = refresh_mint_coin (connection,
|
||||||
session,
|
session,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
key_state,
|
key_state,
|
||||||
&denom_pubs[j],
|
&denom_pubs[j],
|
||||||
&commit_coins[j],
|
&commit_coins[j],
|
||||||
|
@ -106,11 +106,8 @@ struct MeltDetails
|
|||||||
* required value left and if so, store that they have been
|
* required value left and if so, store that they have been
|
||||||
* melted and confirm the melting operation to the client.
|
* melted and confirm the melting operation to the client.
|
||||||
*
|
*
|
||||||
* FIXME: some arguments are redundant here...
|
|
||||||
*
|
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param melt_hash hash code of the session the coins are melted into
|
* @param session_hash hash code of the session the coins are melted into
|
||||||
* @param refresh_session_pub public key of the refresh session
|
|
||||||
* @param client_signature signature of the client (matching @a refresh_session_pub)
|
* @param client_signature signature of the client (matching @a refresh_session_pub)
|
||||||
* over the melting request
|
* over the melting request
|
||||||
* @param num_new_denoms number of entries in @a denom_pubs, size of y-dimension of @commit_coin array
|
* @param num_new_denoms number of entries in @a denom_pubs, size of y-dimension of @commit_coin array
|
||||||
@ -128,7 +125,7 @@ struct MeltDetails
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
||||||
const struct GNUNET_HashCode *melt_hash,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct TALER_SessionPublicKey *refresh_session_pub,
|
||||||
const struct TALER_SessionSignature *client_signature,
|
const struct TALER_SessionSignature *client_signature,
|
||||||
unsigned int num_new_denoms,
|
unsigned int num_new_denoms,
|
||||||
@ -149,7 +146,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
* coins that was not chosen.
|
* coins that was not chosen.
|
||||||
*
|
*
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param refresh_session_pub public key of the refresh session
|
* @param session_hash hash over the refresh session
|
||||||
* @param kappa size of x-dimension of @transfer_privs array plus one (!)
|
* @param kappa size of x-dimension of @transfer_privs array plus one (!)
|
||||||
* @param num_oldcoins size of y-dimension of @transfer_privs array
|
* @param num_oldcoins size of y-dimension of @transfer_privs array
|
||||||
* @param transfer_pubs array with the revealed transfer keys
|
* @param transfer_pubs array with the revealed transfer keys
|
||||||
@ -157,7 +154,7 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,
|
|||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
TALER_MINT_db_execute_refresh_reveal (struct MHD_Connection *connection,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int kappa,
|
unsigned int kappa,
|
||||||
unsigned int num_oldcoins,
|
unsigned int num_oldcoins,
|
||||||
struct TALER_TransferPrivateKey **transfer_privs);
|
struct TALER_TransferPrivateKey **transfer_privs);
|
||||||
|
@ -131,7 +131,7 @@ static int
|
|||||||
parse_and_handle_deposit_request (struct MHD_Connection *connection,
|
parse_and_handle_deposit_request (struct MHD_Connection *connection,
|
||||||
const json_t *root,
|
const json_t *root,
|
||||||
const struct TALER_Amount *amount,
|
const struct TALER_Amount *amount,
|
||||||
const json_t *wire)
|
json_t *wire)
|
||||||
{
|
{
|
||||||
int res;
|
int res;
|
||||||
struct Deposit deposit;
|
struct Deposit deposit;
|
||||||
|
@ -72,11 +72,7 @@ handle_refresh_melt_binary (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
struct GNUNET_HashContext *hash_context;
|
|
||||||
struct GNUNET_HashCode melt_hash;
|
|
||||||
struct RefreshMeltSessionSignature body;
|
struct RefreshMeltSessionSignature body;
|
||||||
char *buf;
|
|
||||||
size_t buf_size;
|
|
||||||
struct MintKeyState *key_state;
|
struct MintKeyState *key_state;
|
||||||
struct TALER_MINT_DenomKeyIssue *dki;
|
struct TALER_MINT_DenomKeyIssue *dki;
|
||||||
struct TALER_Amount cost;
|
struct TALER_Amount cost;
|
||||||
@ -88,28 +84,9 @@ handle_refresh_melt_binary (struct MHD_Connection *connection,
|
|||||||
struct TALER_Amount total_melt;
|
struct TALER_Amount total_melt;
|
||||||
|
|
||||||
/* check that signature from the session public key is ok */
|
/* check that signature from the session public key is ok */
|
||||||
hash_context = GNUNET_CRYPTO_hash_context_start ();
|
|
||||||
/* FIXME: also hash session public key here!? #3708 */
|
|
||||||
for (i = 0; i < num_new_denoms; i++)
|
|
||||||
{
|
|
||||||
buf_size = GNUNET_CRYPTO_rsa_public_key_encode (denom_pubs[i].rsa_public_key,
|
|
||||||
&buf);
|
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
|
||||||
buf,
|
|
||||||
buf_size);
|
|
||||||
GNUNET_free (buf);
|
|
||||||
}
|
|
||||||
for (i = 0; i < coin_count; i++)
|
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
|
||||||
&coin_public_infos[i].coin_pub,
|
|
||||||
sizeof (struct GNUNET_CRYPTO_EddsaPublicKey));
|
|
||||||
GNUNET_CRYPTO_hash_context_finish (hash_context,
|
|
||||||
&melt_hash);
|
|
||||||
/* FIXME: what about the `commit_hash`? #3708 */
|
|
||||||
|
|
||||||
body.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_SESSION);
|
body.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_SESSION);
|
||||||
body.purpose.size = htonl (sizeof (struct RefreshMeltSessionSignature));
|
body.purpose.size = htonl (sizeof (struct RefreshMeltSessionSignature));
|
||||||
body.melt_hash = melt_hash;
|
body.melt_hash = *commit_hash;
|
||||||
TALER_amount_hton (&body.amount_with_fee,
|
TALER_amount_hton (&body.amount_with_fee,
|
||||||
&coin_melt_details->melt_amount_with_fee);
|
&coin_melt_details->melt_amount_with_fee);
|
||||||
|
|
||||||
@ -197,7 +174,7 @@ handle_refresh_melt_binary (struct MHD_Connection *connection,
|
|||||||
"error", "value mismatch");
|
"error", "value mismatch");
|
||||||
}
|
}
|
||||||
return TALER_MINT_db_execute_refresh_melt (connection,
|
return TALER_MINT_db_execute_refresh_melt (connection,
|
||||||
&melt_hash,
|
commit_hash,
|
||||||
refresh_session_pub,
|
refresh_session_pub,
|
||||||
commit_client_sig,
|
commit_client_sig,
|
||||||
num_new_denoms,
|
num_new_denoms,
|
||||||
@ -278,7 +255,7 @@ get_coin_public_info (struct MHD_Connection *connection,
|
|||||||
* be done before the transaction starts.
|
* be done before the transaction starts.
|
||||||
*
|
*
|
||||||
* @param connection the connection to send error responses to
|
* @param connection the connection to send error responses to
|
||||||
* @param melt_hash hash over refresh session the coin is melted into
|
* @param session_hash hash over refresh session the coin is melted into
|
||||||
* @param r_public_info the coin's public information
|
* @param r_public_info the coin's public information
|
||||||
* @param r_melt_detail details about the coin's melting permission (if valid)
|
* @param r_melt_detail details about the coin's melting permission (if valid)
|
||||||
* @return #GNUNET_YES if coin public info in JSON was valid
|
* @return #GNUNET_YES if coin public info in JSON was valid
|
||||||
@ -287,7 +264,7 @@ get_coin_public_info (struct MHD_Connection *connection,
|
|||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
verify_coin_public_info (struct MHD_Connection *connection,
|
verify_coin_public_info (struct MHD_Connection *connection,
|
||||||
const struct GNUNET_HashCode *melt_hash,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
const struct TALER_CoinPublicInfo *r_public_info,
|
const struct TALER_CoinPublicInfo *r_public_info,
|
||||||
const struct MeltDetails *r_melt_detail)
|
const struct MeltDetails *r_melt_detail)
|
||||||
{
|
{
|
||||||
@ -298,7 +275,7 @@ verify_coin_public_info (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
body.purpose.size = htonl (sizeof (struct RefreshMeltCoinSignature));
|
body.purpose.size = htonl (sizeof (struct RefreshMeltCoinSignature));
|
||||||
body.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_COIN);
|
body.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_COIN);
|
||||||
body.melt_hash = *melt_hash;
|
body.session_hash = *session_hash;
|
||||||
TALER_amount_hton (&body.amount_with_fee,
|
TALER_amount_hton (&body.amount_with_fee,
|
||||||
&r_melt_detail->melt_amount_with_fee);
|
&r_melt_detail->melt_amount_with_fee);
|
||||||
body.coin_pub = r_public_info->coin_pub;
|
body.coin_pub = r_public_info->coin_pub;
|
||||||
@ -449,11 +426,21 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
struct RefreshCommitLink *commit_link[kappa];
|
struct RefreshCommitLink *commit_link[kappa];
|
||||||
const struct TALER_SessionSignature commit_client_sig;
|
const struct TALER_SessionSignature commit_client_sig;
|
||||||
|
|
||||||
|
/* For the signature check, we hash most of the inputs together
|
||||||
|
(except for the signatures on the coins). */
|
||||||
|
hash_context = GNUNET_CRYPTO_hash_context_start ();
|
||||||
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
|
refresh_session_pub,
|
||||||
|
sizeof (struct TALER_SessionPublicKey));
|
||||||
|
|
||||||
num_new_denoms = json_array_size (new_denoms);
|
num_new_denoms = json_array_size (new_denoms);
|
||||||
denom_pubs = GNUNET_malloc (num_new_denoms *
|
denom_pubs = GNUNET_malloc (num_new_denoms *
|
||||||
sizeof (struct TALER_DenominationPublicKey));
|
sizeof (struct TALER_DenominationPublicKey));
|
||||||
for (i=0;i<num_new_denoms;i++)
|
for (i=0;i<num_new_denoms;i++)
|
||||||
{
|
{
|
||||||
|
char *buf;
|
||||||
|
size_t buf_size;
|
||||||
|
|
||||||
res = GNUNET_MINT_parse_navigate_json (connection,
|
res = GNUNET_MINT_parse_navigate_json (connection,
|
||||||
new_denoms,
|
new_denoms,
|
||||||
JNAV_INDEX, (int) i,
|
JNAV_INDEX, (int) i,
|
||||||
@ -466,7 +453,13 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
GNUNET_free (denom_pubs);
|
GNUNET_free (denom_pubs);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
buf_size = GNUNET_CRYPTO_rsa_public_key_encode (denom_pubs[i].rsa_public_key,
|
||||||
|
&buf);
|
||||||
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
|
buf,
|
||||||
|
buf_size);
|
||||||
|
GNUNET_free (buf);
|
||||||
|
}
|
||||||
|
|
||||||
coin_count = json_array_size (melt_coins);
|
coin_count = json_array_size (melt_coins);
|
||||||
/* FIXME: make 'struct TALER_CoinPublicInfo' part of `struct MeltDetails`
|
/* FIXME: make 'struct TALER_CoinPublicInfo' part of `struct MeltDetails`
|
||||||
@ -478,6 +471,8 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
for (i=0;i<coin_count;i++)
|
for (i=0;i<coin_count;i++)
|
||||||
{
|
{
|
||||||
/* decode JSON data on coin to melt */
|
/* decode JSON data on coin to melt */
|
||||||
|
struct TALER_AmountNBO melt_amount;
|
||||||
|
|
||||||
res = get_coin_public_info (connection,
|
res = get_coin_public_info (connection,
|
||||||
json_array_get (melt_coins, i),
|
json_array_get (melt_coins, i),
|
||||||
&coin_public_infos[i],
|
&coin_public_infos[i],
|
||||||
@ -518,14 +513,21 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
"melting same coin twice in same session is not allowed");
|
"melting same coin twice in same session is not allowed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
TALER_amount_hton (&melt_amount,
|
||||||
|
&coin_melt_details[i].melt_amount_with_fee);
|
||||||
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
|
&coin_public_infos[i].coin_pub,
|
||||||
|
sizeof (struct TALER_CoinSpendPublicKey));
|
||||||
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
|
&melt_amount,
|
||||||
|
sizeof (struct TALER_AmountNBO));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* parse JSON arrays into 2d binary arrays and hash everything
|
/* parse JSON arrays into 2d binary arrays and hash everything
|
||||||
together for the signature check */
|
together for the signature check */
|
||||||
memset (commit_coin, 0, sizeof (commit_coin));
|
memset (commit_coin, 0, sizeof (commit_coin));
|
||||||
memset (commit_link, 0, sizeof (commit_link));
|
memset (commit_link, 0, sizeof (commit_link));
|
||||||
hash_context = GNUNET_CRYPTO_hash_context_start ();
|
|
||||||
for (i = 0; i < kappa; i++)
|
for (i = 0; i < kappa; i++)
|
||||||
{
|
{
|
||||||
commit_coin[i] = GNUNET_malloc (num_newcoins *
|
commit_coin[i] = GNUNET_malloc (num_newcoins *
|
||||||
@ -534,14 +536,15 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
{
|
{
|
||||||
char *link_enc;
|
char *link_enc;
|
||||||
size_t link_enc_size;
|
size_t link_enc_size;
|
||||||
|
struct RefreshCommitCoin *rcc = &commit_coin[i][j];
|
||||||
|
|
||||||
res = GNUNET_MINT_parse_navigate_json (connection,
|
res = GNUNET_MINT_parse_navigate_json (connection,
|
||||||
coin_evs,
|
coin_evs,
|
||||||
JNAV_INDEX, (int) i,
|
JNAV_INDEX, (int) i,
|
||||||
JNAV_INDEX, (int) j,
|
JNAV_INDEX, (int) j,
|
||||||
JNAV_RET_DATA_VAR,
|
JNAV_RET_DATA_VAR,
|
||||||
&commit_coin[i][j].coin_ev,
|
&rcc->coin_ev,
|
||||||
&commit_coin[i][j].coin_ev_size);
|
&rcc->coin_ev_size);
|
||||||
|
|
||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
{
|
{
|
||||||
@ -550,8 +553,8 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
||||||
}
|
}
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
commit_coin[i][j].coin_ev,
|
rcc->coin_ev,
|
||||||
commit_coin[i][j].coin_ev_size);
|
rcc->coin_ev_size);
|
||||||
res = GNUNET_MINT_parse_navigate_json (connection,
|
res = GNUNET_MINT_parse_navigate_json (connection,
|
||||||
link_encs,
|
link_encs,
|
||||||
JNAV_INDEX, (int) i,
|
JNAV_INDEX, (int) i,
|
||||||
@ -565,9 +568,9 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
free_commit_coins (commit_coin, kappa, num_newcoins);
|
free_commit_coins (commit_coin, kappa, num_newcoins);
|
||||||
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
||||||
}
|
}
|
||||||
commit_coin[i][j].refresh_link = TALER_refresh_link_encrypted_decode (link_enc,
|
rcc->refresh_link
|
||||||
link_enc_size);
|
= TALER_refresh_link_encrypted_decode (link_enc,
|
||||||
|
link_enc_size);
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
link_enc,
|
link_enc,
|
||||||
link_enc_size);
|
link_enc_size);
|
||||||
@ -580,12 +583,14 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
sizeof (struct RefreshCommitLink));
|
sizeof (struct RefreshCommitLink));
|
||||||
for (j = 0; j < num_oldcoins; j++)
|
for (j = 0; j < num_oldcoins; j++)
|
||||||
{
|
{
|
||||||
|
struct RefreshCommitLink *rcl = &commit_link[i][j];
|
||||||
|
|
||||||
res = GNUNET_MINT_parse_navigate_json (connection,
|
res = GNUNET_MINT_parse_navigate_json (connection,
|
||||||
transfer_pubs,
|
transfer_pubs,
|
||||||
JNAV_INDEX, (int) i,
|
JNAV_INDEX, (int) i,
|
||||||
JNAV_INDEX, (int) j,
|
JNAV_INDEX, (int) j,
|
||||||
JNAV_RET_DATA,
|
JNAV_RET_DATA,
|
||||||
&commit_link[i][j].transfer_pub,
|
&rcl->transfer_pub,
|
||||||
sizeof (struct TALER_TransferPublicKey));
|
sizeof (struct TALER_TransferPublicKey));
|
||||||
|
|
||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
@ -596,17 +601,12 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
free_commit_links (commit_link, kappa, num_oldcoins);
|
free_commit_links (commit_link, kappa, num_oldcoins);
|
||||||
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
|
||||||
&commit_link[i][j].transfer_pub,
|
|
||||||
sizeof (struct TALER_TransferPublicKey));
|
|
||||||
|
|
||||||
res = GNUNET_MINT_parse_navigate_json (connection,
|
res = GNUNET_MINT_parse_navigate_json (connection,
|
||||||
secret_encs,
|
secret_encs,
|
||||||
JNAV_INDEX, (int) i,
|
JNAV_INDEX, (int) i,
|
||||||
JNAV_INDEX, (int) j,
|
JNAV_INDEX, (int) j,
|
||||||
JNAV_RET_DATA,
|
JNAV_RET_DATA,
|
||||||
&commit_link[i][j].shared_secret_enc,
|
&rcl->shared_secret_enc,
|
||||||
sizeof (struct GNUNET_HashCode));
|
sizeof (struct GNUNET_HashCode));
|
||||||
|
|
||||||
if (GNUNET_OK != res)
|
if (GNUNET_OK != res)
|
||||||
@ -619,12 +619,13 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
}
|
}
|
||||||
|
|
||||||
GNUNET_CRYPTO_hash_context_read (hash_context,
|
GNUNET_CRYPTO_hash_context_read (hash_context,
|
||||||
&commit_link[i][j].shared_secret_enc,
|
rcl,
|
||||||
sizeof (struct GNUNET_HashCode));
|
sizeof (struct RefreshCommitLink));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
GNUNET_CRYPTO_hash_context_finish (hash_context, &commit_hash);
|
|
||||||
|
|
||||||
|
}
|
||||||
|
GNUNET_CRYPTO_hash_context_finish (hash_context,
|
||||||
|
&commit_hash);
|
||||||
|
|
||||||
res = GNUNET_MINT_parse_navigate_json (connection,
|
res = GNUNET_MINT_parse_navigate_json (connection,
|
||||||
commit_signature,
|
commit_signature,
|
||||||
@ -640,7 +641,7 @@ handle_refresh_melt_json (struct MHD_Connection *connection,
|
|||||||
|
|
||||||
for (i=0;i<coin_count;i++)
|
for (i=0;i<coin_count;i++)
|
||||||
{
|
{
|
||||||
/* verify signatures ons coin to melt */
|
/* verify signatures on coins to melt */
|
||||||
res = verify_coin_public_info (connection,
|
res = verify_coin_public_info (connection,
|
||||||
&commit_hash,
|
&commit_hash,
|
||||||
&coin_public_infos[i],
|
&coin_public_infos[i],
|
||||||
@ -812,7 +813,7 @@ TALER_MINT_handler_refresh_melt (struct RequestHandler *rh,
|
|||||||
* coins.
|
* coins.
|
||||||
*
|
*
|
||||||
* @param connection the MHD connection to handle
|
* @param connection the MHD connection to handle
|
||||||
* @param refresh_session_pub public key of the session
|
* @param session_hash hash identifying the melting session
|
||||||
* @param kappa length of the 1st dimension of @a transfer_privs array PLUS ONE
|
* @param kappa length of the 1st dimension of @a transfer_privs array PLUS ONE
|
||||||
* @param num_oldcoins length of the 2nd dimension of @a transfer_privs array
|
* @param num_oldcoins length of the 2nd dimension of @a transfer_privs array
|
||||||
* @param tp_json private transfer keys in JSON format
|
* @param tp_json private transfer keys in JSON format
|
||||||
@ -820,7 +821,7 @@ TALER_MINT_handler_refresh_melt (struct RequestHandler *rh,
|
|||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
handle_refresh_reveal_json (struct MHD_Connection *connection,
|
handle_refresh_reveal_json (struct MHD_Connection *connection,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int kappa,
|
unsigned int kappa,
|
||||||
unsigned int num_oldcoins,
|
unsigned int num_oldcoins,
|
||||||
const json_t *tp_json)
|
const json_t *tp_json)
|
||||||
@ -855,7 +856,7 @@ handle_refresh_reveal_json (struct MHD_Connection *connection,
|
|||||||
res = (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
res = (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;
|
||||||
else
|
else
|
||||||
res = TALER_MINT_db_execute_refresh_reveal (connection,
|
res = TALER_MINT_db_execute_refresh_reveal (connection,
|
||||||
refresh_session_pub,
|
session_hash,
|
||||||
kappa,
|
kappa,
|
||||||
num_oldcoins,
|
num_oldcoins,
|
||||||
transfer_privs);
|
transfer_privs);
|
||||||
@ -888,7 +889,7 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
const char *upload_data,
|
const char *upload_data,
|
||||||
size_t *upload_data_size)
|
size_t *upload_data_size)
|
||||||
{
|
{
|
||||||
struct TALER_SessionPublicKey refresh_session_pub;
|
struct GNUNET_HashCode session_hash;
|
||||||
int res;
|
int res;
|
||||||
unsigned int kappa;
|
unsigned int kappa;
|
||||||
unsigned int num_oldcoins;
|
unsigned int num_oldcoins;
|
||||||
@ -896,7 +897,7 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
json_t *root;
|
json_t *root;
|
||||||
json_t *transfer_privs;
|
json_t *transfer_privs;
|
||||||
struct GNUNET_MINT_ParseFieldSpec spec[] = {
|
struct GNUNET_MINT_ParseFieldSpec spec[] = {
|
||||||
TALER_MINT_PARSE_FIXED ("session_pub", &refresh_session_pub),
|
TALER_MINT_PARSE_FIXED ("session_hash", &session_hash),
|
||||||
TALER_MINT_PARSE_ARRAY ("transfer_privs", &transfer_privs),
|
TALER_MINT_PARSE_ARRAY ("transfer_privs", &transfer_privs),
|
||||||
TALER_MINT_PARSE_END
|
TALER_MINT_PARSE_END
|
||||||
};
|
};
|
||||||
@ -941,7 +942,7 @@ TALER_MINT_handler_refresh_reveal (struct RequestHandler *rh,
|
|||||||
}
|
}
|
||||||
num_oldcoins = json_array_size (reveal_detail);
|
num_oldcoins = json_array_size (reveal_detail);
|
||||||
res = handle_refresh_reveal_json (connection,
|
res = handle_refresh_reveal_json (connection,
|
||||||
&refresh_session_pub,
|
&session_hash,
|
||||||
kappa,
|
kappa,
|
||||||
num_oldcoins,
|
num_oldcoins,
|
||||||
transfer_privs);
|
transfer_privs);
|
||||||
|
@ -364,7 +364,7 @@ compile_transaction_history (const struct TALER_MINT_DB_TransactionList *tl)
|
|||||||
value = melt->amount_with_fee;
|
value = melt->amount_with_fee;
|
||||||
ms.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_COIN);
|
ms.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_COIN);
|
||||||
ms.purpose.size = htonl (sizeof (struct RefreshMeltCoinSignature));
|
ms.purpose.size = htonl (sizeof (struct RefreshMeltCoinSignature));
|
||||||
ms.melt_hash = melt->melt_hash;
|
ms.session_hash = melt->session_hash;
|
||||||
TALER_amount_hton (&ms.amount_with_fee,
|
TALER_amount_hton (&ms.amount_with_fee,
|
||||||
&melt->amount_with_fee);
|
&melt->amount_with_fee);
|
||||||
ms.coin_pub = melt->coin.coin_pub;
|
ms.coin_pub = melt->coin.coin_pub;
|
||||||
|
@ -236,18 +236,15 @@ struct Deposit
|
|||||||
struct RefreshSession
|
struct RefreshSession
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Signature over the commitments by the client,
|
* Signature over the commitments by the client.
|
||||||
* only valid if @e has_commit_sig is set.
|
|
||||||
*
|
|
||||||
* FIXME: The above comment is clearly confused.
|
|
||||||
*/
|
*/
|
||||||
struct TALER_SessionSignature commit_sig;
|
struct TALER_SessionSignature commit_sig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hash over coins to melt and coins to create of the
|
* Public key the client uses to sign messages in
|
||||||
* refresh session.
|
* this exchange.
|
||||||
*/
|
*/
|
||||||
struct GNUNET_HashCode session_hash;
|
struct TALER_SessionPublicKey refresh_session_pub;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Signature over the melt by the client.
|
* Signature over the melt by the client.
|
||||||
@ -296,9 +293,9 @@ struct RefreshMelt
|
|||||||
struct TALER_CoinSpendSignature coin_sig;
|
struct TALER_CoinSpendSignature coin_sig;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Which melting operation should the coin become a part of.
|
* Hash of the refresh session this coin is melted into.
|
||||||
*/
|
*/
|
||||||
struct GNUNET_HashCode melt_hash;
|
struct GNUNET_HashCode session_hash;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How much value is being melted? This amount includes the fees,
|
* How much value is being melted? This amount includes the fees,
|
||||||
@ -341,6 +338,8 @@ struct RefreshCommitCoin
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
GNUNET_NETWORK_STRUCT_BEGIN
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* For each (old) coin being melted, we have a `struct
|
* For each (old) coin being melted, we have a `struct
|
||||||
* RefreshCommitLink` that allows the user to find the shared secret
|
* RefreshCommitLink` that allows the user to find the shared secret
|
||||||
@ -350,7 +349,9 @@ struct RefreshCommitCoin
|
|||||||
struct RefreshCommitLink
|
struct RefreshCommitLink
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Transfer public key (FIXME: explain!)
|
* Transfer public key, used to decrypt the @e shared_secret_enc
|
||||||
|
* in combintation with the corresponding private key of the
|
||||||
|
* coin.
|
||||||
*/
|
*/
|
||||||
struct TALER_TransferPublicKey transfer_pub;
|
struct TALER_TransferPublicKey transfer_pub;
|
||||||
|
|
||||||
@ -360,6 +361,9 @@ struct RefreshCommitLink
|
|||||||
struct TALER_EncryptedLinkSecret shared_secret_enc;
|
struct TALER_EncryptedLinkSecret shared_secret_enc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GNUNET_NETWORK_STRUCT_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Linked list of refresh information linked to a coin.
|
* Linked list of refresh information linked to a coin.
|
||||||
@ -709,11 +713,11 @@ struct TALER_MINTDB_Plugin
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lookup refresh session data under the given public key.
|
* Lookup refresh session data under the given @a session_hash.
|
||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database handle to use
|
* @param sesssion database handle to use
|
||||||
* @param refresh_session_pub public key to use for the lookup
|
* @param session_hash hash over the melt to use for the lookup
|
||||||
* @param refresh_session[OUT] where to store the result
|
* @param refresh_session[OUT] where to store the result
|
||||||
* @return #GNUNET_YES on success,
|
* @return #GNUNET_YES on success,
|
||||||
* #GNUNET_NO if not found,
|
* #GNUNET_NO if not found,
|
||||||
@ -722,16 +726,16 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*get_refresh_session) (void *cls,
|
(*get_refresh_session) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
struct RefreshSession *refresh_session);
|
struct RefreshSession *refresh_session);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store new refresh session data under the given public key.
|
* Store new refresh session data under the given @a session_hash.
|
||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database handle to use
|
* @param sesssion database handle to use
|
||||||
* @param refresh_session_pub public key to use to locate the session
|
* @param session_hash hash over the melt to use to locate the session
|
||||||
* @param refresh_session session data to store
|
* @param refresh_session session data to store
|
||||||
* @return #GNUNET_YES on success,
|
* @return #GNUNET_YES on success,
|
||||||
* #GNUNET_SYSERR on DB failure
|
* #GNUNET_SYSERR on DB failure
|
||||||
@ -739,26 +743,24 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*create_refresh_session) (void *cls,
|
(*create_refresh_session) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
const struct RefreshSession *refresh_session);
|
const struct RefreshSession *refresh_session);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store the given /refresh/melt request in the database.
|
* Store the given /refresh/melt request in the database.
|
||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection
|
* @param sesssion database connection
|
||||||
* @param refresh_session session key of the melt operation
|
|
||||||
* @param oldcoin_index index of the coin to store
|
* @param oldcoin_index index of the coin to store
|
||||||
* @param melt coin melt operation details to store
|
* @param melt coin melt operation details to store; includes
|
||||||
|
* the session hash of the melt
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
* #GNUNET_SYSERR on internal error
|
* #GNUNET_SYSERR on internal error
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
(*insert_refresh_melt) (void *cls,
|
(*insert_refresh_melt) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session,
|
|
||||||
uint16_t oldcoin_index,
|
uint16_t oldcoin_index,
|
||||||
const struct RefreshMelt *melt);
|
const struct RefreshMelt *melt);
|
||||||
|
|
||||||
@ -768,7 +770,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection
|
* @param sesssion database connection
|
||||||
* @param refresh_session session key of the melt operation
|
* @param session_hash hash to identify refresh session
|
||||||
* @param oldcoin_index index of the coin to retrieve
|
* @param oldcoin_index index of the coin to retrieve
|
||||||
* @param melt melt data to fill in
|
* @param melt melt data to fill in
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -777,7 +779,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*get_refresh_melt) (void *cls,
|
(*get_refresh_melt) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t oldcoin_index,
|
uint16_t oldcoin_index,
|
||||||
struct RefreshMelt *melt);
|
struct RefreshMelt *melt);
|
||||||
|
|
||||||
@ -788,7 +790,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection
|
* @param sesssion database connection
|
||||||
* @param session_pub refresh session key
|
* @param session_hash hash to identify refresh session
|
||||||
* @param num_newcoins number of coins to generate, size of the @a denom_pubs array
|
* @param num_newcoins number of coins to generate, size of the @a denom_pubs array
|
||||||
* @param denom_pubs array denominations of the coins to create
|
* @param denom_pubs array denominations of the coins to create
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -797,7 +799,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*insert_refresh_order) (void *cls,
|
(*insert_refresh_order) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t num_newcoins,
|
uint16_t num_newcoins,
|
||||||
const struct TALER_DenominationPublicKey *denom_pubs);
|
const struct TALER_DenominationPublicKey *denom_pubs);
|
||||||
|
|
||||||
@ -808,7 +810,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection
|
* @param sesssion database connection
|
||||||
* @param session_pub refresh session key
|
* @param session_hash hash to identify refresh session
|
||||||
* @param num_newcoins size of the @a denom_pubs array
|
* @param num_newcoins size of the @a denom_pubs array
|
||||||
* @param denom_pubs[OUT] where to write @a num_newcoins denomination keys
|
* @param denom_pubs[OUT] where to write @a num_newcoins denomination keys
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -817,7 +819,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*get_refresh_order) (void *cls,
|
(*get_refresh_order) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t num_newcoins,
|
uint16_t num_newcoins,
|
||||||
struct TALER_DenominationPublicKey *denom_pubs);
|
struct TALER_DenominationPublicKey *denom_pubs);
|
||||||
|
|
||||||
@ -828,7 +830,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection to use
|
* @param sesssion database connection to use
|
||||||
* @param refresh_session_pub refresh session this commitment belongs to
|
* @param session_hash hash to identify refresh session
|
||||||
* @param i set index (1st dimension), relating to kappa
|
* @param i set index (1st dimension), relating to kappa
|
||||||
* @param num_newcoins coin index size of the @a commit_coins array
|
* @param num_newcoins coin index size of the @a commit_coins array
|
||||||
* @param commit_coin array of coin commitments to store
|
* @param commit_coin array of coin commitments to store
|
||||||
@ -838,7 +840,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*insert_refresh_commit_coins) (void *cls,
|
(*insert_refresh_commit_coins) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int num_newcoins,
|
unsigned int num_newcoins,
|
||||||
const struct RefreshCommitCoin *commit_coins);
|
const struct RefreshCommitCoin *commit_coins);
|
||||||
@ -850,7 +852,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection to use
|
* @param sesssion database connection to use
|
||||||
* @param refresh_session_pub refresh session the commitment belongs to
|
* @param session_hash hash to identify refresh session
|
||||||
* @param i set index (1st dimension)
|
* @param i set index (1st dimension)
|
||||||
* @param num_coins size of the @a commit_coins array
|
* @param num_coins size of the @a commit_coins array
|
||||||
* @param commit_coin[OUT] array of coin commitments to return
|
* @param commit_coin[OUT] array of coin commitments to return
|
||||||
@ -861,7 +863,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*get_refresh_commit_coins) (void *cls,
|
(*get_refresh_commit_coins) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int num_coins,
|
unsigned int num_coins,
|
||||||
struct RefreshCommitCoin *commit_coins);
|
struct RefreshCommitCoin *commit_coins);
|
||||||
@ -873,8 +875,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection to use
|
* @param sesssion database connection to use
|
||||||
* @param refresh_session_pub public key of the refresh session this
|
* @param session_hash hash to identify refresh session
|
||||||
* commitment belongs with
|
|
||||||
* @param i set index (1st dimension), relating to kappa
|
* @param i set index (1st dimension), relating to kappa
|
||||||
* @param num_links size of the @a commit_link array
|
* @param num_links size of the @a commit_link array
|
||||||
* @param commit_links array of link information to store
|
* @param commit_links array of link information to store
|
||||||
@ -883,7 +884,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*insert_refresh_commit_links) (void *cls,
|
(*insert_refresh_commit_links) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int num_links,
|
unsigned int num_links,
|
||||||
const struct RefreshCommitLink *commit_links);
|
const struct RefreshCommitLink *commit_links);
|
||||||
@ -894,8 +895,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection to use
|
* @param sesssion database connection to use
|
||||||
* @param refresh_session_pub public key of the refresh session this
|
* @param session_hash hash to identify refresh session
|
||||||
* commitment belongs with
|
|
||||||
* @param i set index (1st dimension)
|
* @param i set index (1st dimension)
|
||||||
* @param num_links size of the @links array to return
|
* @param num_links size of the @links array to return
|
||||||
* @param links[OUT] array link information to return
|
* @param links[OUT] array link information to return
|
||||||
@ -906,7 +906,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*get_refresh_commit_links) (void *cls,
|
(*get_refresh_commit_links) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *refresh_session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
unsigned int i,
|
unsigned int i,
|
||||||
unsigned int num_links,
|
unsigned int num_links,
|
||||||
struct RefreshCommitLink *links);
|
struct RefreshCommitLink *links);
|
||||||
@ -920,7 +920,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls the @e cls of this struct with the plugin-specific state
|
* @param cls the @e cls of this struct with the plugin-specific state
|
||||||
* @param sesssion database connection
|
* @param sesssion database connection
|
||||||
* @param session_pub refresh session
|
* @param session_hash hash to identify refresh session
|
||||||
* @param newcoin_index coin index
|
* @param newcoin_index coin index
|
||||||
* @param ev_sig coin signature
|
* @param ev_sig coin signature
|
||||||
* @return #GNUNET_OK on success
|
* @return #GNUNET_OK on success
|
||||||
@ -928,7 +928,7 @@ struct TALER_MINTDB_Plugin
|
|||||||
int
|
int
|
||||||
(*insert_refresh_collectable) (void *cls,
|
(*insert_refresh_collectable) (void *cls,
|
||||||
struct TALER_MINTDB_Session *sesssion,
|
struct TALER_MINTDB_Session *sesssion,
|
||||||
const struct TALER_SessionPublicKey *session_pub,
|
const struct GNUNET_HashCode *session_hash,
|
||||||
uint16_t newcoin_index,
|
uint16_t newcoin_index,
|
||||||
const struct TALER_DenominationSignature *ev_sig);
|
const struct TALER_DenominationSignature *ev_sig);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user