use 32 byte hash for hpayto, use that for joins on queries to better align queries with partitions
This commit is contained in:
parent
f951cdef8c
commit
1643b745af
@ -81,6 +81,11 @@ struct AggregationUnit
|
|||||||
/**
|
/**
|
||||||
* Selected wire target for the aggregation.
|
* Selected wire target for the aggregation.
|
||||||
*/
|
*/
|
||||||
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Serial number of the wire target.
|
||||||
|
*/
|
||||||
uint64_t wire_target;
|
uint64_t wire_target;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -426,6 +431,8 @@ deposit_cb (void *cls,
|
|||||||
|
|
||||||
GNUNET_assert (NULL == au->payto_uri);
|
GNUNET_assert (NULL == au->payto_uri);
|
||||||
au->payto_uri = GNUNET_strdup (payto_uri);
|
au->payto_uri = GNUNET_strdup (payto_uri);
|
||||||
|
TALER_payto_hash (payto_uri,
|
||||||
|
&au->h_payto);
|
||||||
au->wire_target = wire_target;
|
au->wire_target = wire_target;
|
||||||
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
|
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
|
||||||
&au->wtid,
|
&au->wtid,
|
||||||
@ -775,7 +782,7 @@ run_aggregation (void *cls)
|
|||||||
TALER_B2S (&au_active.merchant_pub),
|
TALER_B2S (&au_active.merchant_pub),
|
||||||
(unsigned long long) au_active.wire_target);
|
(unsigned long long) au_active.wire_target);
|
||||||
qs = db_plugin->iterate_matching_deposits (db_plugin->cls,
|
qs = db_plugin->iterate_matching_deposits (db_plugin->cls,
|
||||||
au_active.wire_target,
|
&au_active.h_payto,
|
||||||
&au_active.merchant_pub,
|
&au_active.merchant_pub,
|
||||||
&aggregate_cb,
|
&aggregate_cb,
|
||||||
&au_active,
|
&au_active,
|
||||||
@ -918,7 +925,7 @@ run_aggregation (void *cls)
|
|||||||
qs = db_plugin->store_wire_transfer_out (db_plugin->cls,
|
qs = db_plugin->store_wire_transfer_out (db_plugin->cls,
|
||||||
au_active.execution_time,
|
au_active.execution_time,
|
||||||
&au_active.wtid,
|
&au_active.wtid,
|
||||||
au_active.wire_target,
|
&au_active.h_payto,
|
||||||
au_active.wa->section_name,
|
au_active.wa->section_name,
|
||||||
&au_active.final_amount);
|
&au_active.final_amount);
|
||||||
cleanup_au (&au_active);
|
cleanup_au (&au_active);
|
||||||
|
@ -60,10 +60,15 @@ struct KycPoller
|
|||||||
struct GNUNET_DB_EventHandler *eh;
|
struct GNUNET_DB_EventHandler *eh;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UUID being checked.
|
* UUID found based on @e h_payto.
|
||||||
*/
|
*/
|
||||||
uint64_t payment_target_uuid;
|
uint64_t payment_target_uuid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UUID being checked.
|
||||||
|
*/
|
||||||
|
uint64_t auth_payment_target_uuid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Current KYC status.
|
* Current KYC status.
|
||||||
*/
|
*/
|
||||||
@ -75,11 +80,6 @@ struct KycPoller
|
|||||||
*/
|
*/
|
||||||
struct TALER_PaytoHashP h_payto;
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
/**
|
|
||||||
* Hash of the payto:// URI that was given to us for auth.
|
|
||||||
*/
|
|
||||||
struct TALER_PaytoHashP auth_h_payto;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When will this request time out?
|
* When will this request time out?
|
||||||
*/
|
*/
|
||||||
@ -170,7 +170,6 @@ kyc_check (void *cls,
|
|||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
|
||||||
qs = TEH_plugin->select_kyc_status (TEH_plugin->cls,
|
qs = TEH_plugin->select_kyc_status (TEH_plugin->cls,
|
||||||
kyp->payment_target_uuid,
|
|
||||||
&kyp->h_payto,
|
&kyp->h_payto,
|
||||||
&kyp->kyc);
|
&kyp->kyc);
|
||||||
if (qs < 0)
|
if (qs < 0)
|
||||||
@ -184,6 +183,9 @@ kyc_check (void *cls,
|
|||||||
"inselect_wallet_status");
|
"inselect_wallet_status");
|
||||||
return qs;
|
return qs;
|
||||||
}
|
}
|
||||||
|
// FIXME: avoid duplicating this...
|
||||||
|
kyp->payment_target_uuid = kyp->kyc.payment_target_uuid;
|
||||||
|
|
||||||
return qs;
|
return qs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,7 +263,7 @@ TEH_handler_kyc_check (
|
|||||||
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
||||||
"payment_target_uuid");
|
"payment_target_uuid");
|
||||||
}
|
}
|
||||||
kyp->payment_target_uuid = (uint64_t) payment_target_uuid;
|
kyp->auth_payment_target_uuid = (uint64_t) payment_target_uuid;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
const char *ts;
|
const char *ts;
|
||||||
@ -308,8 +310,8 @@ TEH_handler_kyc_check (
|
|||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
GNUNET_STRINGS_string_to_data (hps,
|
GNUNET_STRINGS_string_to_data (hps,
|
||||||
strlen (hps),
|
strlen (hps),
|
||||||
&kyp->auth_h_payto,
|
&kyp->h_payto,
|
||||||
sizeof (kyp->auth_h_payto)))
|
sizeof (kyp->h_payto)))
|
||||||
{
|
{
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
return TALER_MHD_reply_with_error (rc->connection,
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
@ -334,7 +336,7 @@ TEH_handler_kyc_check (
|
|||||||
struct TALER_KycCompletedEventP rep = {
|
struct TALER_KycCompletedEventP rep = {
|
||||||
.header.size = htons (sizeof (rep)),
|
.header.size = htons (sizeof (rep)),
|
||||||
.header.type = htons (TALER_DBEVENT_EXCHANGE_KYC_COMPLETED),
|
.header.type = htons (TALER_DBEVENT_EXCHANGE_KYC_COMPLETED),
|
||||||
.h_payto = kyp->auth_h_payto
|
.h_payto = kyp->h_payto
|
||||||
};
|
};
|
||||||
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
@ -356,9 +358,9 @@ TEH_handler_kyc_check (
|
|||||||
kyp);
|
kyp);
|
||||||
if (GNUNET_SYSERR == ret)
|
if (GNUNET_SYSERR == ret)
|
||||||
return res;
|
return res;
|
||||||
if (0 !=
|
|
||||||
GNUNET_memcmp (&kyp->h_payto,
|
if (kyp->auth_payment_target_uuid !=
|
||||||
&kyp->auth_h_payto))
|
kyp->payment_target_uuid)
|
||||||
{
|
{
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
return TALER_MHD_reply_with_error (rc->connection,
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
|
@ -78,9 +78,9 @@ struct KycProofContext
|
|||||||
char *id;
|
char *id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Payment target this is about.
|
* Hash of payment target URI this is about.
|
||||||
*/
|
*/
|
||||||
unsigned long long payment_target_uuid;
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HTTP response to return.
|
* HTTP response to return.
|
||||||
@ -171,7 +171,7 @@ persist_kyc_ok (void *cls,
|
|||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
|
||||||
qs = TEH_plugin->set_kyc_ok (TEH_plugin->cls,
|
qs = TEH_plugin->set_kyc_ok (TEH_plugin->cls,
|
||||||
kpc->payment_target_uuid,
|
&kpc->h_payto,
|
||||||
kpc->id);
|
kpc->id);
|
||||||
if (GNUNET_DB_STATUS_HARD_ERROR == qs)
|
if (GNUNET_DB_STATUS_HARD_ERROR == qs)
|
||||||
{
|
{
|
||||||
@ -530,24 +530,21 @@ TEH_handler_kyc_proof (
|
|||||||
|
|
||||||
if (NULL == kpc)
|
if (NULL == kpc)
|
||||||
{ /* first time */
|
{ /* first time */
|
||||||
char dummy;
|
|
||||||
|
|
||||||
kpc = GNUNET_new (struct KycProofContext);
|
kpc = GNUNET_new (struct KycProofContext);
|
||||||
kpc->rc = rc;
|
kpc->rc = rc;
|
||||||
rc->rh_ctx = kpc;
|
rc->rh_ctx = kpc;
|
||||||
rc->rh_cleaner = &clean_kpc;
|
rc->rh_cleaner = &clean_kpc;
|
||||||
|
if (GNUNET_OK !=
|
||||||
if (1 !=
|
GNUNET_STRINGS_string_to_data (args[0],
|
||||||
sscanf (args[0],
|
strlen (args[0]),
|
||||||
"%llu%c",
|
&kpc->h_payto,
|
||||||
&kpc->payment_target_uuid,
|
sizeof (kpc->h_payto)))
|
||||||
&dummy))
|
|
||||||
{
|
{
|
||||||
GNUNET_break_op (0);
|
GNUNET_break_op (0);
|
||||||
return TALER_MHD_reply_with_error (rc->connection,
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
MHD_HTTP_BAD_REQUEST,
|
MHD_HTTP_BAD_REQUEST,
|
||||||
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
TALER_EC_GENERIC_PARAMETER_MALFORMED,
|
||||||
"payment_target_uuid");
|
"h_payto");
|
||||||
}
|
}
|
||||||
kpc->authorization_code
|
kpc->authorization_code
|
||||||
= MHD_lookup_connection_value (rc->connection,
|
= MHD_lookup_connection_value (rc->connection,
|
||||||
|
@ -68,17 +68,17 @@ COMMENT ON TABLE denomination_revocations
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS wire_targets
|
CREATE TABLE IF NOT EXISTS wire_targets
|
||||||
(wire_target_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY -- UNIQUE
|
(wire_target_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY -- UNIQUE
|
||||||
,h_payto BYTEA PRIMARY KEY CHECK (LENGTH(h_payto)=64)
|
,wire_target_h_payto BYTEA PRIMARY KEY CHECK (LENGTH(wire_target_h_payto)=32)
|
||||||
,payto_uri VARCHAR NOT NULL
|
,payto_uri VARCHAR NOT NULL
|
||||||
,kyc_ok BOOLEAN NOT NULL DEFAULT (FALSE)
|
,kyc_ok BOOLEAN NOT NULL DEFAULT (FALSE)
|
||||||
,external_id VARCHAR
|
,external_id VARCHAR
|
||||||
)
|
)
|
||||||
PARTITION BY HASH (h_payto);
|
PARTITION BY HASH (wire_target_h_payto);
|
||||||
COMMENT ON TABLE wire_targets
|
COMMENT ON TABLE wire_targets
|
||||||
IS 'All senders and recipients of money via the exchange';
|
IS 'All senders and recipients of money via the exchange';
|
||||||
COMMENT ON COLUMN wire_targets.payto_uri
|
COMMENT ON COLUMN wire_targets.payto_uri
|
||||||
IS 'Can be a regular bank account, or also be a URI identifying a reserve-account (for P2P payments)';
|
IS 'Can be a regular bank account, or also be a URI identifying a reserve-account (for P2P payments)';
|
||||||
COMMENT ON COLUMN wire_targets.h_payto
|
COMMENT ON COLUMN wire_targets.wire_target_h_payto
|
||||||
IS 'Unsalted hash of payto_uri';
|
IS 'Unsalted hash of payto_uri';
|
||||||
COMMENT ON COLUMN wire_targets.kyc_ok
|
COMMENT ON COLUMN wire_targets.kyc_ok
|
||||||
IS 'true if the KYC check was passed successfully';
|
IS 'true if the KYC check was passed successfully';
|
||||||
@ -160,14 +160,14 @@ CREATE TABLE IF NOT EXISTS reserves_in
|
|||||||
,wire_reference INT8 NOT NULL
|
,wire_reference INT8 NOT NULL
|
||||||
,credit_val INT8 NOT NULL
|
,credit_val INT8 NOT NULL
|
||||||
,credit_frac INT4 NOT NULL
|
,credit_frac INT4 NOT NULL
|
||||||
,wire_source_serial_id INT8 NOT NULL -- REFERENCES wire_targets (wire_target_serial_id)
|
,wire_source_h_payto BYTEA CHECK (LENGTH(wire_source_h_payto)=32)
|
||||||
,exchange_account_section TEXT NOT NULL
|
,exchange_account_section TEXT NOT NULL
|
||||||
,execution_date INT8 NOT NULL
|
,execution_date INT8 NOT NULL
|
||||||
)
|
)
|
||||||
PARTITION BY HASH (reserve_pub);
|
PARTITION BY HASH (reserve_pub);
|
||||||
COMMENT ON TABLE reserves_in
|
COMMENT ON TABLE reserves_in
|
||||||
IS 'list of transfers of funds into the reserves, one per incoming wire transfer';
|
IS 'list of transfers of funds into the reserves, one per incoming wire transfer';
|
||||||
COMMENT ON COLUMN reserves_in.wire_source_serial_id
|
COMMENT ON COLUMN reserves_in.wire_source_h_payto
|
||||||
IS 'Identifies the debited bank account and KYC status';
|
IS 'Identifies the debited bank account and KYC status';
|
||||||
COMMENT ON COLUMN reserves_in.reserve_pub
|
COMMENT ON COLUMN reserves_in.reserve_pub
|
||||||
IS 'Public key of the reserve. Private key signifies ownership of the remaining balance.';
|
IS 'Public key of the reserve. Private key signifies ownership of the remaining balance.';
|
||||||
@ -215,7 +215,7 @@ CREATE TABLE IF NOT EXISTS reserves_close
|
|||||||
,reserve_pub BYTEA NOT NULL REFERENCES reserves (reserve_pub) ON DELETE CASCADE
|
,reserve_pub BYTEA NOT NULL REFERENCES reserves (reserve_pub) ON DELETE CASCADE
|
||||||
,execution_date INT8 NOT NULL
|
,execution_date INT8 NOT NULL
|
||||||
,wtid BYTEA NOT NULL CHECK (LENGTH(wtid)=32)
|
,wtid BYTEA NOT NULL CHECK (LENGTH(wtid)=32)
|
||||||
,wire_target_serial_id INT8 NOT NULL -- REFERENCES wire_targets (wire_target_serial_id)
|
,wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)
|
||||||
,amount_val INT8 NOT NULL
|
,amount_val INT8 NOT NULL
|
||||||
,amount_frac INT4 NOT NULL
|
,amount_frac INT4 NOT NULL
|
||||||
,closing_fee_val INT8 NOT NULL
|
,closing_fee_val INT8 NOT NULL
|
||||||
@ -223,7 +223,7 @@ CREATE TABLE IF NOT EXISTS reserves_close
|
|||||||
PARTITION BY HASH (reserve_pub);
|
PARTITION BY HASH (reserve_pub);
|
||||||
COMMENT ON TABLE reserves_close
|
COMMENT ON TABLE reserves_close
|
||||||
IS 'wire transfers executed by the reserve to close reserves';
|
IS 'wire transfers executed by the reserve to close reserves';
|
||||||
COMMENT ON COLUMN reserves_close.wire_target_serial_id
|
COMMENT ON COLUMN reserves_close.wire_target_h_payto
|
||||||
IS 'Identifies the credited bank account (and KYC status). Note that closing does not depend on KYC.';
|
IS 'Identifies the credited bank account (and KYC status). Note that closing does not depend on KYC.';
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS reserves_close_default
|
CREATE TABLE IF NOT EXISTS reserves_close_default
|
||||||
@ -618,7 +618,7 @@ CREATE TABLE IF NOT EXISTS deposits
|
|||||||
,h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)
|
,h_contract_terms BYTEA NOT NULL CHECK (LENGTH(h_contract_terms)=64)
|
||||||
,coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)
|
,coin_sig BYTEA NOT NULL CHECK (LENGTH(coin_sig)=64)
|
||||||
,wire_salt BYTEA NOT NULL CHECK (LENGTH(wire_salt)=16)
|
,wire_salt BYTEA NOT NULL CHECK (LENGTH(wire_salt)=16)
|
||||||
,wire_target_serial_id INT8 NOT NULL -- REFERENCES wire_targets (wire_target_serial_id)
|
,wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)
|
||||||
,tiny BOOLEAN NOT NULL DEFAULT FALSE
|
,tiny BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
,done BOOLEAN NOT NULL DEFAULT FALSE
|
,done BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
,extension_blocked BOOLEAN NOT NULL DEFAULT FALSE
|
,extension_blocked BOOLEAN NOT NULL DEFAULT FALSE
|
||||||
@ -652,7 +652,7 @@ COMMENT ON TABLE deposits
|
|||||||
IS 'Deposits we have received and for which we need to make (aggregate) wire transfers (and manage refunds).';
|
IS 'Deposits we have received and for which we need to make (aggregate) wire transfers (and manage refunds).';
|
||||||
COMMENT ON COLUMN deposits.shard
|
COMMENT ON COLUMN deposits.shard
|
||||||
IS 'Used for load sharding. Should be set based on h_payto and merchant_pub. 64-bit value because we need an *unsigned* 32-bit value.';
|
IS 'Used for load sharding. Should be set based on h_payto and merchant_pub. 64-bit value because we need an *unsigned* 32-bit value.';
|
||||||
COMMENT ON COLUMN deposits.wire_target_serial_id
|
COMMENT ON COLUMN deposits.wire_target_h_payto
|
||||||
IS 'Identifies the target bank account and KYC status';
|
IS 'Identifies the target bank account and KYC status';
|
||||||
COMMENT ON COLUMN deposits.wire_salt
|
COMMENT ON COLUMN deposits.wire_salt
|
||||||
IS 'Salt used when hashing the payto://-URI to get the h_wire';
|
IS 'Salt used when hashing the payto://-URI to get the h_wire';
|
||||||
@ -685,7 +685,7 @@ COMMENT ON INDEX deposits_for_get_ready_index
|
|||||||
CREATE INDEX IF NOT EXISTS deposits_for_iterate_matching_index
|
CREATE INDEX IF NOT EXISTS deposits_for_iterate_matching_index
|
||||||
ON deposits
|
ON deposits
|
||||||
(merchant_pub
|
(merchant_pub
|
||||||
,wire_target_serial_id
|
,wire_target_h_payto
|
||||||
,done
|
,done
|
||||||
,extension_blocked
|
,extension_blocked
|
||||||
,refund_deadline ASC
|
,refund_deadline ASC
|
||||||
@ -742,7 +742,7 @@ CREATE TABLE IF NOT EXISTS wire_out
|
|||||||
(wireout_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY -- PRIMARY KEY
|
(wireout_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY -- PRIMARY KEY
|
||||||
,execution_date INT8 NOT NULL
|
,execution_date INT8 NOT NULL
|
||||||
,wtid_raw BYTEA UNIQUE NOT NULL CHECK (LENGTH(wtid_raw)=32)
|
,wtid_raw BYTEA UNIQUE NOT NULL CHECK (LENGTH(wtid_raw)=32)
|
||||||
,wire_target_serial_id INT8 NOT NULL -- REFERENCES wire_targets (wire_target_serial_id)
|
,wire_target_h_payto BYTEA CHECK (LENGTH(wire_target_h_payto)=32)
|
||||||
,exchange_account_section TEXT NOT NULL
|
,exchange_account_section TEXT NOT NULL
|
||||||
,amount_val INT8 NOT NULL
|
,amount_val INT8 NOT NULL
|
||||||
,amount_frac INT4 NOT NULL
|
,amount_frac INT4 NOT NULL
|
||||||
@ -752,7 +752,7 @@ COMMENT ON TABLE wire_out
|
|||||||
IS 'wire transfers the exchange has executed';
|
IS 'wire transfers the exchange has executed';
|
||||||
COMMENT ON COLUMN wire_out.exchange_account_section
|
COMMENT ON COLUMN wire_out.exchange_account_section
|
||||||
IS 'identifies the configuration section with the debit account of this payment';
|
IS 'identifies the configuration section with the debit account of this payment';
|
||||||
COMMENT ON COLUMN wire_out.wire_target_serial_id
|
COMMENT ON COLUMN wire_out.wire_target_h_payto
|
||||||
IS 'Identifies the credited bank account and KYC status';
|
IS 'Identifies the credited bank account and KYC status';
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS wire_out_default
|
CREATE TABLE IF NOT EXISTS wire_out_default
|
||||||
@ -779,9 +779,9 @@ SELECT add_constraints_to_wire_out_partition('default');
|
|||||||
CREATE INDEX IF NOT EXISTS wire_out_by_wireout_uuid_index
|
CREATE INDEX IF NOT EXISTS wire_out_by_wireout_uuid_index
|
||||||
ON wire_out
|
ON wire_out
|
||||||
(wireout_uuid);
|
(wireout_uuid);
|
||||||
CREATE INDEX IF NOT EXISTS wire_out_by_wire_target_serial_id_index
|
CREATE INDEX IF NOT EXISTS wire_out_by_wire_target_h_payto_index
|
||||||
ON wire_out
|
ON wire_out
|
||||||
(wire_target_serial_id);
|
(wire_target_h_payto);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS aggregation_tracking
|
CREATE TABLE IF NOT EXISTS aggregation_tracking
|
||||||
@ -1143,7 +1143,7 @@ BEGIN
|
|||||||
-- reserves_out (INSERT, with CONFLICT detection) by wih
|
-- reserves_out (INSERT, with CONFLICT detection) by wih
|
||||||
-- reserves by reserve_pub (UPDATE)
|
-- reserves by reserve_pub (UPDATE)
|
||||||
-- reserves_in by reserve_pub (SELECT)
|
-- reserves_in by reserve_pub (SELECT)
|
||||||
-- wire_targets by wire_target_serial_id
|
-- wire_targets by wire_target_h_payto
|
||||||
|
|
||||||
SELECT denominations_serial
|
SELECT denominations_serial
|
||||||
INTO denom_serial
|
INTO denom_serial
|
||||||
@ -1300,12 +1300,12 @@ END IF;
|
|||||||
-- this reserve. FIXME: likely not adequate for reserves that got P2P transfers!
|
-- this reserve. FIXME: likely not adequate for reserves that got P2P transfers!
|
||||||
SELECT
|
SELECT
|
||||||
kyc_ok
|
kyc_ok
|
||||||
,wire_source_serial_id
|
,wire_target_serial_id
|
||||||
INTO
|
INTO
|
||||||
kycok
|
kycok
|
||||||
,account_uuid
|
,account_uuid
|
||||||
FROM reserves_in
|
FROM reserves_in
|
||||||
JOIN wire_targets ON (wire_source_serial_id = wire_target_serial_id)
|
JOIN wire_targets ON (wire_source_h_payto = wire_target_h_payto)
|
||||||
WHERE reserve_pub=rpub
|
WHERE reserve_pub=rpub
|
||||||
LIMIT 1; -- limit 1 should not be required (without p2p transfers)
|
LIMIT 1; -- limit 1 should not be required (without p2p transfers)
|
||||||
|
|
||||||
@ -1424,12 +1424,12 @@ END IF;
|
|||||||
|
|
||||||
|
|
||||||
INSERT INTO wire_targets
|
INSERT INTO wire_targets
|
||||||
(h_payto
|
(wire_target_h_payto
|
||||||
,payto_uri)
|
,payto_uri)
|
||||||
VALUES
|
VALUES
|
||||||
(in_h_payto
|
(in_h_payto
|
||||||
,in_receiver_wire_account)
|
,in_receiver_wire_account)
|
||||||
ON CONFLICT DO NOTHING -- for CONFLICT ON (h_payto)
|
ON CONFLICT DO NOTHING -- for CONFLICT ON (wire_target_h_payto)
|
||||||
RETURNING wire_target_serial_id INTO wtsi;
|
RETURNING wire_target_serial_id INTO wtsi;
|
||||||
|
|
||||||
IF NOT FOUND
|
IF NOT FOUND
|
||||||
@ -1437,7 +1437,7 @@ THEN
|
|||||||
SELECT wire_target_serial_id
|
SELECT wire_target_serial_id
|
||||||
INTO wtsi
|
INTO wtsi
|
||||||
FROM wire_targets
|
FROM wire_targets
|
||||||
WHERE h_payto=in_h_payto;
|
WHERE wire_target_h_payto=in_h_payto;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
|
|
||||||
@ -1454,7 +1454,7 @@ INSERT INTO deposits
|
|||||||
,h_contract_terms
|
,h_contract_terms
|
||||||
,coin_sig
|
,coin_sig
|
||||||
,wire_salt
|
,wire_salt
|
||||||
,wire_target_serial_id
|
,wire_target_h_payto
|
||||||
,extension_blocked
|
,extension_blocked
|
||||||
,extension_details_serial_id
|
,extension_details_serial_id
|
||||||
)
|
)
|
||||||
@ -1471,7 +1471,7 @@ INSERT INTO deposits
|
|||||||
,in_h_contract_terms
|
,in_h_contract_terms
|
||||||
,in_coin_sig
|
,in_coin_sig
|
||||||
,in_wire_salt
|
,in_wire_salt
|
||||||
,wtsi
|
,in_h_payto
|
||||||
,in_extension_blocked
|
,in_extension_blocked
|
||||||
,xdi)
|
,xdi)
|
||||||
ON CONFLICT DO NOTHING;
|
ON CONFLICT DO NOTHING;
|
||||||
|
@ -176,7 +176,8 @@ irbt_cb_table_reserves_in (struct PostgresClosure *pg,
|
|||||||
GNUNET_PQ_query_param_uint64 (&td->serial),
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
GNUNET_PQ_query_param_uint64 (&td->details.reserves_in.wire_reference),
|
GNUNET_PQ_query_param_uint64 (&td->details.reserves_in.wire_reference),
|
||||||
TALER_PQ_query_param_amount (&td->details.reserves_in.credit),
|
TALER_PQ_query_param_amount (&td->details.reserves_in.credit),
|
||||||
GNUNET_PQ_query_param_uint64 (&td->details.reserves_in.sender_account),
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.reserves_in.sender_account_h_payto),
|
||||||
GNUNET_PQ_query_param_string (
|
GNUNET_PQ_query_param_string (
|
||||||
td->details.reserves_in.exchange_account_section),
|
td->details.reserves_in.exchange_account_section),
|
||||||
GNUNET_PQ_query_param_timestamp (
|
GNUNET_PQ_query_param_timestamp (
|
||||||
@ -207,8 +208,8 @@ irbt_cb_table_reserves_close (struct PostgresClosure *pg,
|
|||||||
&td->details.reserves_close.execution_date),
|
&td->details.reserves_close.execution_date),
|
||||||
GNUNET_PQ_query_param_auto_from_type (
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
&td->details.reserves_close.wtid),
|
&td->details.reserves_close.wtid),
|
||||||
GNUNET_PQ_query_param_uint64 (
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
&td->details.reserves_close.wire_target_serial_id),
|
&td->details.reserves_close.sender_account_h_payto),
|
||||||
TALER_PQ_query_param_amount (&td->details.reserves_close.amount),
|
TALER_PQ_query_param_amount (&td->details.reserves_close.amount),
|
||||||
TALER_PQ_query_param_amount (&td->details.reserves_close.closing_fee),
|
TALER_PQ_query_param_amount (&td->details.reserves_close.closing_fee),
|
||||||
GNUNET_PQ_query_param_auto_from_type (
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
@ -523,7 +524,8 @@ irbt_cb_table_deposits (struct PostgresClosure *pg,
|
|||||||
&td->details.deposits.h_contract_terms),
|
&td->details.deposits.h_contract_terms),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&td->details.deposits.coin_sig),
|
GNUNET_PQ_query_param_auto_from_type (&td->details.deposits.coin_sig),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&td->details.deposits.wire_salt),
|
GNUNET_PQ_query_param_auto_from_type (&td->details.deposits.wire_salt),
|
||||||
GNUNET_PQ_query_param_uint64 (&td->details.deposits.wire_target_serial_id),
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.deposits.wire_target_h_payto),
|
||||||
GNUNET_PQ_query_param_bool (td->details.deposits.tiny),
|
GNUNET_PQ_query_param_bool (td->details.deposits.tiny),
|
||||||
GNUNET_PQ_query_param_bool (td->details.deposits.done),
|
GNUNET_PQ_query_param_bool (td->details.deposits.done),
|
||||||
GNUNET_PQ_query_param_bool (td->details.deposits.extension_blocked),
|
GNUNET_PQ_query_param_bool (td->details.deposits.extension_blocked),
|
||||||
@ -579,7 +581,8 @@ irbt_cb_table_wire_out (struct PostgresClosure *pg,
|
|||||||
GNUNET_PQ_query_param_uint64 (&td->serial),
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
GNUNET_PQ_query_param_timestamp (&td->details.wire_out.execution_date),
|
GNUNET_PQ_query_param_timestamp (&td->details.wire_out.execution_date),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&td->details.wire_out.wtid_raw),
|
GNUNET_PQ_query_param_auto_from_type (&td->details.wire_out.wtid_raw),
|
||||||
GNUNET_PQ_query_param_uint64 (&td->details.wire_out.wire_target_serial_id),
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wire_out.wire_target_h_payto),
|
||||||
GNUNET_PQ_query_param_string (
|
GNUNET_PQ_query_param_string (
|
||||||
td->details.wire_out.exchange_account_section),
|
td->details.wire_out.exchange_account_section),
|
||||||
TALER_PQ_query_param_amount (&td->details.wire_out.amount),
|
TALER_PQ_query_param_amount (&td->details.wire_out.amount),
|
||||||
|
@ -289,9 +289,9 @@ lrbt_cb_table_reserves_in (void *cls,
|
|||||||
TALER_PQ_RESULT_SPEC_AMOUNT (
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
"credit",
|
"credit",
|
||||||
&td.details.reserves_in.credit),
|
&td.details.reserves_in.credit),
|
||||||
GNUNET_PQ_result_spec_uint64 (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wire_source_serial_id",
|
"wire_source_h_payto",
|
||||||
&td.details.reserves_in.sender_account),
|
&td.details.reserves_in.sender_account_h_payto),
|
||||||
GNUNET_PQ_result_spec_string (
|
GNUNET_PQ_result_spec_string (
|
||||||
"exchange_account_section",
|
"exchange_account_section",
|
||||||
&td.details.reserves_in.exchange_account_section),
|
&td.details.reserves_in.exchange_account_section),
|
||||||
@ -350,9 +350,9 @@ lrbt_cb_table_reserves_close (void *cls,
|
|||||||
GNUNET_PQ_result_spec_auto_from_type (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wtid",
|
"wtid",
|
||||||
&td.details.reserves_close.wtid),
|
&td.details.reserves_close.wtid),
|
||||||
GNUNET_PQ_result_spec_uint64 (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wire_target_serial_id",
|
"wire_target_h_payto",
|
||||||
&td.details.reserves_close.wire_target_serial_id),
|
&td.details.reserves_close.sender_account_h_payto),
|
||||||
TALER_PQ_RESULT_SPEC_AMOUNT (
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
"amount",
|
"amount",
|
||||||
&td.details.reserves_close.amount),
|
&td.details.reserves_close.amount),
|
||||||
@ -947,9 +947,9 @@ lrbt_cb_table_deposits (void *cls,
|
|||||||
GNUNET_PQ_result_spec_auto_from_type (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wire_salt",
|
"wire_salt",
|
||||||
&td.details.deposits.wire_salt),
|
&td.details.deposits.wire_salt),
|
||||||
GNUNET_PQ_result_spec_uint64 (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wire_target_serial_id",
|
"wire_target_h_payto",
|
||||||
&td.details.deposits.wire_target_serial_id),
|
&td.details.deposits.wire_target_h_payto),
|
||||||
GNUNET_PQ_result_spec_bool (
|
GNUNET_PQ_result_spec_bool (
|
||||||
"tiny",
|
"tiny",
|
||||||
&td.details.deposits.tiny),
|
&td.details.deposits.tiny),
|
||||||
@ -1067,9 +1067,9 @@ lrbt_cb_table_wire_out (void *cls,
|
|||||||
GNUNET_PQ_result_spec_auto_from_type (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wtid_raw",
|
"wtid_raw",
|
||||||
&td.details.wire_out.wtid_raw),
|
&td.details.wire_out.wtid_raw),
|
||||||
GNUNET_PQ_result_spec_uint64 (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wire_target_serial_id",
|
"wire_target_h_payto",
|
||||||
&td.details.wire_out.wire_target_serial_id),
|
&td.details.wire_out.wire_target_h_payto),
|
||||||
GNUNET_PQ_result_spec_string (
|
GNUNET_PQ_result_spec_string (
|
||||||
"exchange_account_section",
|
"exchange_account_section",
|
||||||
&td.details.wire_out.exchange_account_section),
|
&td.details.wire_out.exchange_account_section),
|
||||||
|
@ -429,7 +429,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" FROM reserves"
|
" FROM reserves"
|
||||||
" JOIN reserves_in ri USING (reserve_pub)"
|
" JOIN reserves_in ri USING (reserve_pub)"
|
||||||
" JOIN wire_targets wt "
|
" JOIN wire_targets wt "
|
||||||
" ON (ri.wire_source_serial_id = wt.wire_target_serial_id)"
|
" ON (ri.wire_source_h_payto = wt.wire_target_h_payto)"
|
||||||
" WHERE reserve_pub=$1"
|
" WHERE reserve_pub=$1"
|
||||||
" LIMIT 1;",
|
" LIMIT 1;",
|
||||||
1),
|
1),
|
||||||
@ -439,31 +439,21 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
"UPDATE wire_targets"
|
"UPDATE wire_targets"
|
||||||
" SET kyc_ok=TRUE"
|
" SET kyc_ok=TRUE"
|
||||||
",external_id=$2"
|
",external_id=$2"
|
||||||
" WHERE wire_target_serial_id=$1",
|
" WHERE wire_target_h_payto=$1",
|
||||||
2),
|
2),
|
||||||
GNUNET_PQ_make_prepare (
|
GNUNET_PQ_make_prepare (
|
||||||
"get_kyc_h_payto",
|
"get_kyc_h_payto",
|
||||||
"SELECT"
|
"SELECT"
|
||||||
" h_payto"
|
" wire_target_h_payto"
|
||||||
" FROM wire_targets"
|
" FROM wire_targets"
|
||||||
" WHERE wire_target_serial_id=$1"
|
" WHERE wire_target_h_payto=$1"
|
||||||
" LIMIT 1;",
|
" LIMIT 1;",
|
||||||
1),
|
1),
|
||||||
/* Used in #postgres_select_kyc_status() */
|
|
||||||
GNUNET_PQ_make_prepare (
|
|
||||||
"select_kyc_status",
|
|
||||||
"SELECT"
|
|
||||||
" kyc_ok"
|
|
||||||
",h_payto"
|
|
||||||
" FROM wire_targets"
|
|
||||||
" WHERE"
|
|
||||||
" wire_target_serial_id=$1",
|
|
||||||
1),
|
|
||||||
/* Used in #postgres_inselect_wallet_kyc_status() */
|
/* Used in #postgres_inselect_wallet_kyc_status() */
|
||||||
GNUNET_PQ_make_prepare (
|
GNUNET_PQ_make_prepare (
|
||||||
"insert_kyc_status",
|
"insert_kyc_status",
|
||||||
"INSERT INTO wire_targets"
|
"INSERT INTO wire_targets"
|
||||||
" (h_payto"
|
" (wire_target_h_payto"
|
||||||
" ,payto_uri"
|
" ,payto_uri"
|
||||||
" ) VALUES "
|
" ) VALUES "
|
||||||
" ($1, $2)"
|
" ($1, $2)"
|
||||||
@ -475,7 +465,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" kyc_ok"
|
" kyc_ok"
|
||||||
",wire_target_serial_id"
|
",wire_target_serial_id"
|
||||||
" FROM wire_targets"
|
" FROM wire_targets"
|
||||||
" WHERE h_payto=$1;",
|
" WHERE wire_target_h_payto=$1;",
|
||||||
1),
|
1),
|
||||||
/* Used in #reserves_get() */
|
/* Used in #reserves_get() */
|
||||||
GNUNET_PQ_make_prepare (
|
GNUNET_PQ_make_prepare (
|
||||||
@ -509,7 +499,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
"(reserve_pub"
|
"(reserve_pub"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
",wtid"
|
",wtid"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",amount_val"
|
",amount_val"
|
||||||
",amount_frac"
|
",amount_frac"
|
||||||
",closing_fee_val"
|
",closing_fee_val"
|
||||||
@ -536,11 +526,12 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",credit_val"
|
",credit_val"
|
||||||
",credit_frac"
|
",credit_frac"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",wire_source_serial_id"
|
",wire_source_h_payto"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
") VALUES ($1, $2, $3, $4, $5, $6, $7)"
|
") VALUES ($1, $2, $3, $4, $5, $6, $7)"
|
||||||
" ON CONFLICT DO NOTHING;",
|
" ON CONFLICT DO NOTHING;",
|
||||||
7),
|
7),
|
||||||
|
#if FIXME_DEAD
|
||||||
/* Used in #postgres_reserves_in_insert() to store transaction details */
|
/* Used in #postgres_reserves_in_insert() to store transaction details */
|
||||||
GNUNET_PQ_make_prepare (
|
GNUNET_PQ_make_prepare (
|
||||||
"reserves_in_add_by_pub",
|
"reserves_in_add_by_pub",
|
||||||
@ -550,11 +541,12 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",credit_val"
|
",credit_val"
|
||||||
",credit_frac"
|
",credit_frac"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",wire_source_serial_id"
|
",wire_source_h_payto"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
") VALUES ($1, $2, $3, $4, $5, $6, $7)"
|
") VALUES ($1, $2, $3, $4, $5, $6, $7)"
|
||||||
" ON CONFLICT DO NOTHING;",
|
" ON CONFLICT DO NOTHING;",
|
||||||
7),
|
7),
|
||||||
|
#endif
|
||||||
/* Used in postgres_select_reserves_in_above_serial_id() to obtain inbound
|
/* Used in postgres_select_reserves_in_above_serial_id() to obtain inbound
|
||||||
transactions for reserves with serial id '\geq' the given parameter */
|
transactions for reserves with serial id '\geq' the given parameter */
|
||||||
GNUNET_PQ_make_prepare (
|
GNUNET_PQ_make_prepare (
|
||||||
@ -571,7 +563,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" JOIN reserves"
|
" JOIN reserves"
|
||||||
" USING (reserve_pub)"
|
" USING (reserve_pub)"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" ON (wire_source_serial_id = wire_target_serial_id)"
|
" ON (wire_source_h_payto = wire_target_h_payto)"
|
||||||
" WHERE reserve_in_serial_id>=$1"
|
" WHERE reserve_in_serial_id>=$1"
|
||||||
" ORDER BY reserve_in_serial_id;",
|
" ORDER BY reserve_in_serial_id;",
|
||||||
1),
|
1),
|
||||||
@ -591,7 +583,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" JOIN reserves "
|
" JOIN reserves "
|
||||||
" USING (reserve_pub)"
|
" USING (reserve_pub)"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" ON (wire_source_serial_id = wire_target_serial_id)"
|
" ON (wire_source_h_payto = wire_target_h_payto)"
|
||||||
" WHERE reserve_in_serial_id>=$1 AND exchange_account_section=$2"
|
" WHERE reserve_in_serial_id>=$1 AND exchange_account_section=$2"
|
||||||
" ORDER BY reserve_in_serial_id;",
|
" ORDER BY reserve_in_serial_id;",
|
||||||
2),
|
2),
|
||||||
@ -607,7 +599,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",payto_uri AS sender_account_details"
|
",payto_uri AS sender_account_details"
|
||||||
" FROM reserves_in"
|
" FROM reserves_in"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" ON (wire_source_serial_id = wire_target_serial_id)"
|
" ON (wire_source_h_payto = wire_target_h_payto)"
|
||||||
" WHERE reserve_pub=$1;",
|
" WHERE reserve_pub=$1;",
|
||||||
1),
|
1),
|
||||||
/* Used in #postgres_do_withdraw() to store
|
/* Used in #postgres_do_withdraw() to store
|
||||||
@ -1067,7 +1059,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",merchant_pub"
|
",merchant_pub"
|
||||||
",h_contract_terms"
|
",h_contract_terms"
|
||||||
",wire_salt"
|
",wire_salt"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",coin_sig"
|
",coin_sig"
|
||||||
",exchange_timestamp"
|
",exchange_timestamp"
|
||||||
",shard"
|
",shard"
|
||||||
@ -1096,7 +1088,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" FROM deposits"
|
" FROM deposits"
|
||||||
" JOIN known_coins USING (known_coin_id)"
|
" JOIN known_coins USING (known_coin_id)"
|
||||||
" JOIN denominations USING (denominations_serial)"
|
" JOIN denominations USING (denominations_serial)"
|
||||||
" JOIN wire_targets USING (wire_target_serial_id)"
|
" JOIN wire_targets USING (wire_target_h_payto)"
|
||||||
" WHERE ((coin_pub=$1)"
|
" WHERE ((coin_pub=$1)"
|
||||||
" AND (merchant_pub=$3)"
|
" AND (merchant_pub=$3)"
|
||||||
" AND (h_contract_terms=$2));",
|
" AND (h_contract_terms=$2));",
|
||||||
@ -1122,7 +1114,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",done"
|
",done"
|
||||||
",deposit_serial_id"
|
",deposit_serial_id"
|
||||||
" FROM deposits"
|
" FROM deposits"
|
||||||
" JOIN wire_targets USING (wire_target_serial_id)"
|
" JOIN wire_targets USING (wire_target_h_payto)"
|
||||||
" JOIN known_coins kc USING (known_coin_id)"
|
" JOIN known_coins kc USING (known_coin_id)"
|
||||||
" JOIN denominations denom USING (denominations_serial)"
|
" JOIN denominations denom USING (denominations_serial)"
|
||||||
" WHERE ("
|
" WHERE ("
|
||||||
@ -1145,7 +1137,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",denom.fee_deposit_frac"
|
",denom.fee_deposit_frac"
|
||||||
",wire_deadline"
|
",wire_deadline"
|
||||||
" FROM deposits"
|
" FROM deposits"
|
||||||
" JOIN wire_targets USING (wire_target_serial_id)"
|
" JOIN wire_targets USING (wire_target_h_payto)"
|
||||||
" JOIN known_coins USING (known_coin_id)"
|
" JOIN known_coins USING (known_coin_id)"
|
||||||
" JOIN denominations denom USING (denominations_serial)"
|
" JOIN denominations denom USING (denominations_serial)"
|
||||||
" WHERE ((coin_pub=$1)"
|
" WHERE ((coin_pub=$1)"
|
||||||
@ -1169,7 +1161,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",kc.coin_pub"
|
",kc.coin_pub"
|
||||||
" FROM deposits"
|
" FROM deposits"
|
||||||
" JOIN wire_targets "
|
" JOIN wire_targets "
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" JOIN known_coins kc"
|
" JOIN known_coins kc"
|
||||||
" USING (known_coin_id)"
|
" USING (known_coin_id)"
|
||||||
" JOIN denominations denom"
|
" JOIN denominations denom"
|
||||||
@ -1203,7 +1195,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" JOIN denominations denom USING (denominations_serial)"
|
" JOIN denominations denom USING (denominations_serial)"
|
||||||
" WHERE"
|
" WHERE"
|
||||||
" merchant_pub=$1"
|
" merchant_pub=$1"
|
||||||
" AND wire_target_serial_id=$2"
|
" AND wire_target_h_payto=$2"
|
||||||
" AND done=FALSE"
|
" AND done=FALSE"
|
||||||
" AND extension_blocked=FALSE"
|
" AND extension_blocked=FALSE"
|
||||||
" AND refund_deadline<$3"
|
" AND refund_deadline<$3"
|
||||||
@ -1251,7 +1243,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",done"
|
",done"
|
||||||
" FROM deposits"
|
" FROM deposits"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" JOIN known_coins kc"
|
" JOIN known_coins kc"
|
||||||
" USING (known_coin_id)"
|
" USING (known_coin_id)"
|
||||||
" JOIN denominations denoms"
|
" JOIN denominations denoms"
|
||||||
@ -1287,7 +1279,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" aggregation_serial_id"
|
" aggregation_serial_id"
|
||||||
",deposits.h_contract_terms"
|
",deposits.h_contract_terms"
|
||||||
",payto_uri"
|
",payto_uri"
|
||||||
",h_payto"
|
",wire_targets.wire_target_h_payto"
|
||||||
",kc.coin_pub"
|
",kc.coin_pub"
|
||||||
",deposits.merchant_pub"
|
",deposits.merchant_pub"
|
||||||
",wire_out.execution_date"
|
",wire_out.execution_date"
|
||||||
@ -1300,7 +1292,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" JOIN deposits"
|
" JOIN deposits"
|
||||||
" USING (deposit_serial_id)"
|
" USING (deposit_serial_id)"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" JOIN known_coins kc"
|
" JOIN known_coins kc"
|
||||||
" USING (known_coin_id)"
|
" USING (known_coin_id)"
|
||||||
" JOIN denominations denom"
|
" JOIN denominations denom"
|
||||||
@ -1323,7 +1315,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",denom.fee_deposit_frac"
|
",denom.fee_deposit_frac"
|
||||||
" FROM deposits"
|
" FROM deposits"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" JOIN aggregation_tracking"
|
" JOIN aggregation_tracking"
|
||||||
" USING (deposit_serial_id)"
|
" USING (deposit_serial_id)"
|
||||||
" JOIN known_coins"
|
" JOIN known_coins"
|
||||||
@ -1382,7 +1374,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
"INSERT INTO wire_out "
|
"INSERT INTO wire_out "
|
||||||
"(execution_date"
|
"(execution_date"
|
||||||
",wtid_raw"
|
",wtid_raw"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",amount_val"
|
",amount_val"
|
||||||
",amount_frac"
|
",amount_frac"
|
||||||
@ -1395,7 +1387,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
"(wireout_uuid"
|
"(wireout_uuid"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
",wtid_raw"
|
",wtid_raw"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",amount_val"
|
",amount_val"
|
||||||
",amount_frac"
|
",amount_frac"
|
||||||
@ -1456,7 +1448,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" JOIN known_coins"
|
" JOIN known_coins"
|
||||||
" USING (known_coin_id)"
|
" USING (known_coin_id)"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" WHERE wire_deadline >= $1"
|
" WHERE wire_deadline >= $1"
|
||||||
" AND wire_deadline < $2"
|
" AND wire_deadline < $2"
|
||||||
" AND NOT (EXISTS (SELECT 1"
|
" AND NOT (EXISTS (SELECT 1"
|
||||||
@ -1480,7 +1472,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",amount_frac"
|
",amount_frac"
|
||||||
" FROM wire_out"
|
" FROM wire_out"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" WHERE wireout_uuid>=$1"
|
" WHERE wireout_uuid>=$1"
|
||||||
" ORDER BY wireout_uuid ASC;",
|
" ORDER BY wireout_uuid ASC;",
|
||||||
1),
|
1),
|
||||||
@ -1496,7 +1488,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",amount_frac"
|
",amount_frac"
|
||||||
" FROM wire_out"
|
" FROM wire_out"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" WHERE "
|
" WHERE "
|
||||||
" wireout_uuid>=$1 "
|
" wireout_uuid>=$1 "
|
||||||
" AND exchange_account_section=$2"
|
" AND exchange_account_section=$2"
|
||||||
@ -1580,7 +1572,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",closing_fee_frac"
|
",closing_fee_frac"
|
||||||
" FROM reserves_close"
|
" FROM reserves_close"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" JOIN reserves"
|
" JOIN reserves"
|
||||||
" USING (reserve_pub)"
|
" USING (reserve_pub)"
|
||||||
" WHERE close_uuid>=$1"
|
" WHERE close_uuid>=$1"
|
||||||
@ -1649,7 +1641,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",wtid"
|
",wtid"
|
||||||
" FROM reserves_close"
|
" FROM reserves_close"
|
||||||
" JOIN wire_targets"
|
" JOIN wire_targets"
|
||||||
" USING (wire_target_serial_id)"
|
" USING (wire_target_h_payto)"
|
||||||
" WHERE reserve_pub=$1;",
|
" WHERE reserve_pub=$1;",
|
||||||
1),
|
1),
|
||||||
/* Used in #postgres_get_expired_reserves() */
|
/* Used in #postgres_get_expired_reserves() */
|
||||||
@ -1665,7 +1657,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" JOIN reserves_in ri"
|
" JOIN reserves_in ri"
|
||||||
" USING (reserve_pub)"
|
" USING (reserve_pub)"
|
||||||
" JOIN wire_targets wt"
|
" JOIN wire_targets wt"
|
||||||
" ON (ri.wire_source_serial_id = wt.wire_target_serial_id)"
|
" ON (ri.wire_source_h_payto = wt.wire_target_h_payto)"
|
||||||
" WHERE expiration_date<=$1"
|
" WHERE expiration_date<=$1"
|
||||||
" AND (current_balance_val != 0 "
|
" AND (current_balance_val != 0 "
|
||||||
" OR current_balance_frac != 0)"
|
" OR current_balance_frac != 0)"
|
||||||
@ -2198,7 +2190,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",wire_reference"
|
",wire_reference"
|
||||||
",credit_val"
|
",credit_val"
|
||||||
",credit_frac"
|
",credit_frac"
|
||||||
",wire_source_serial_id"
|
",wire_source_h_payto"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
" FROM reserves_in"
|
" FROM reserves_in"
|
||||||
@ -2212,7 +2204,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",reserve_pub"
|
",reserve_pub"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
",wtid"
|
",wtid"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",amount_val"
|
",amount_val"
|
||||||
",amount_frac"
|
",amount_frac"
|
||||||
",closing_fee_val"
|
",closing_fee_val"
|
||||||
@ -2354,7 +2346,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",h_contract_terms"
|
",h_contract_terms"
|
||||||
",coin_sig"
|
",coin_sig"
|
||||||
",wire_salt"
|
",wire_salt"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",tiny"
|
",tiny"
|
||||||
",done"
|
",done"
|
||||||
",extension_blocked"
|
",extension_blocked"
|
||||||
@ -2382,7 +2374,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
" wireout_uuid AS serial"
|
" wireout_uuid AS serial"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
",wtid_raw"
|
",wtid_raw"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",amount_val"
|
",amount_val"
|
||||||
",amount_frac"
|
",amount_frac"
|
||||||
@ -2487,7 +2479,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
"insert_into_table_wire_targets",
|
"insert_into_table_wire_targets",
|
||||||
"INSERT INTO wire_targets"
|
"INSERT INTO wire_targets"
|
||||||
"(wire_target_serial_id"
|
"(wire_target_serial_id"
|
||||||
",h_payto"
|
",wire_target_h_payto"
|
||||||
",payto_uri"
|
",payto_uri"
|
||||||
",kyc_ok"
|
",kyc_ok"
|
||||||
",external_id"
|
",external_id"
|
||||||
@ -2513,7 +2505,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",wire_reference"
|
",wire_reference"
|
||||||
",credit_val"
|
",credit_val"
|
||||||
",credit_frac"
|
",credit_frac"
|
||||||
",wire_source_serial_id"
|
",wire_source_h_payto"
|
||||||
",exchange_account_section"
|
",exchange_account_section"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
",reserve_pub"
|
",reserve_pub"
|
||||||
@ -2526,7 +2518,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
"(close_uuid"
|
"(close_uuid"
|
||||||
",execution_date"
|
",execution_date"
|
||||||
",wtid"
|
",wtid"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",amount_val"
|
",amount_val"
|
||||||
",amount_frac"
|
",amount_frac"
|
||||||
",closing_fee_val"
|
",closing_fee_val"
|
||||||
@ -2660,7 +2652,7 @@ prepare_statements (struct PostgresClosure *pg)
|
|||||||
",h_contract_terms"
|
",h_contract_terms"
|
||||||
",coin_sig"
|
",coin_sig"
|
||||||
",wire_salt"
|
",wire_salt"
|
||||||
",wire_target_serial_id"
|
",wire_target_h_payto"
|
||||||
",tiny"
|
",tiny"
|
||||||
",done"
|
",done"
|
||||||
",extension_blocked"
|
",extension_blocked"
|
||||||
@ -3914,22 +3906,22 @@ postgres_reserves_get (void *cls,
|
|||||||
* Set the KYC status to "OK" for a bank account.
|
* Set the KYC status to "OK" for a bank account.
|
||||||
*
|
*
|
||||||
* @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 payment_target_uuid which account has been checked
|
* @param h_payto which account has been checked
|
||||||
* @param id external ID to persist
|
* @param id external ID to persist
|
||||||
* @return transaction status
|
* @return transaction status
|
||||||
*/
|
*/
|
||||||
static enum GNUNET_DB_QueryStatus
|
static enum GNUNET_DB_QueryStatus
|
||||||
postgres_set_kyc_ok (void *cls,
|
postgres_set_kyc_ok (void *cls,
|
||||||
uint64_t payment_target_uuid,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const char *id)
|
const char *id)
|
||||||
{
|
{
|
||||||
struct PostgresClosure *pg = cls;
|
struct PostgresClosure *pg = cls;
|
||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_uint64 (&payment_target_uuid),
|
GNUNET_PQ_query_param_auto_from_type (h_payto),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
struct GNUNET_PQ_QueryParam params2[] = {
|
struct GNUNET_PQ_QueryParam params2[] = {
|
||||||
GNUNET_PQ_query_param_uint64 (&payment_target_uuid),
|
GNUNET_PQ_query_param_auto_from_type (h_payto),
|
||||||
GNUNET_PQ_query_param_string (id),
|
GNUNET_PQ_query_param_string (id),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
@ -3938,7 +3930,7 @@ postgres_set_kyc_ok (void *cls,
|
|||||||
.header.type = htons (TALER_DBEVENT_EXCHANGE_KYC_COMPLETED)
|
.header.type = htons (TALER_DBEVENT_EXCHANGE_KYC_COMPLETED)
|
||||||
};
|
};
|
||||||
struct GNUNET_PQ_ResultSpec rs[] = {
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
GNUNET_PQ_result_spec_auto_from_type ("h_payto",
|
GNUNET_PQ_result_spec_auto_from_type ("wire_target_h_payto",
|
||||||
&rep.h_payto),
|
&rep.h_payto),
|
||||||
GNUNET_PQ_result_spec_end
|
GNUNET_PQ_result_spec_end
|
||||||
};
|
};
|
||||||
@ -3967,34 +3959,31 @@ postgres_set_kyc_ok (void *cls,
|
|||||||
* Get the @a kyc status and @a h_payto by UUID.
|
* Get the @a kyc status and @a h_payto by UUID.
|
||||||
*
|
*
|
||||||
* @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 payment_target_uuid which account to get the KYC status for
|
* @param h_payto set to the hash of the account's payto URI (unsalted)
|
||||||
* @param[out] h_payto set to the hash of the account's payto URI (unsalted)
|
|
||||||
* @param[out] kyc set to the KYC status of the account
|
* @param[out] kyc set to the KYC status of the account
|
||||||
* @return transaction status
|
* @return transaction status
|
||||||
*/
|
*/
|
||||||
static enum GNUNET_DB_QueryStatus
|
static enum GNUNET_DB_QueryStatus
|
||||||
postgres_select_kyc_status (void *cls,
|
postgres_select_kyc_status (void *cls,
|
||||||
uint64_t payment_target_uuid,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
struct TALER_PaytoHashP *h_payto,
|
|
||||||
struct TALER_EXCHANGEDB_KycStatus *kyc)
|
struct TALER_EXCHANGEDB_KycStatus *kyc)
|
||||||
{
|
{
|
||||||
struct PostgresClosure *pg = cls;
|
struct PostgresClosure *pg = cls;
|
||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_uint64 (&payment_target_uuid),
|
GNUNET_PQ_query_param_auto_from_type (&h_payto),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
struct GNUNET_PQ_ResultSpec rs[] = {
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
GNUNET_PQ_result_spec_auto_from_type ("h_payto",
|
GNUNET_PQ_result_spec_uint64 ("wire_target_serial_id",
|
||||||
h_payto),
|
&kyc->payment_target_uuid),
|
||||||
GNUNET_PQ_result_spec_auto_from_type ("kyc_ok",
|
GNUNET_PQ_result_spec_bool ("kyc_ok",
|
||||||
&kyc->ok),
|
&kyc->ok),
|
||||||
GNUNET_PQ_result_spec_end
|
GNUNET_PQ_result_spec_end
|
||||||
};
|
};
|
||||||
|
|
||||||
kyc->type = TALER_EXCHANGEDB_KYC_UNKNOWN;
|
kyc->type = TALER_EXCHANGEDB_KYC_UNKNOWN;
|
||||||
kyc->payment_target_uuid = payment_target_uuid;
|
|
||||||
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
|
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
|
||||||
"select_kyc_status",
|
"select_kyc_status_by_payto",
|
||||||
params,
|
params,
|
||||||
rs);
|
rs);
|
||||||
}
|
}
|
||||||
@ -4015,7 +4004,6 @@ inselect_account_kyc_status (
|
|||||||
const char *payto_uri,
|
const char *payto_uri,
|
||||||
struct TALER_EXCHANGEDB_KycStatus *kyc)
|
struct TALER_EXCHANGEDB_KycStatus *kyc)
|
||||||
{
|
{
|
||||||
|
|
||||||
struct TALER_PaytoHashP h_payto;
|
struct TALER_PaytoHashP h_payto;
|
||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
|
||||||
@ -4267,10 +4255,14 @@ postgres_reserves_in_insert (void *cls,
|
|||||||
enum GNUNET_DB_QueryStatus qs2;
|
enum GNUNET_DB_QueryStatus qs2;
|
||||||
struct TALER_EXCHANGEDB_KycStatus kyc;
|
struct TALER_EXCHANGEDB_KycStatus kyc;
|
||||||
enum GNUNET_DB_QueryStatus qs3;
|
enum GNUNET_DB_QueryStatus qs3;
|
||||||
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
|
TALER_payto_hash (sender_account_details,
|
||||||
|
&h_payto);
|
||||||
memset (&kyc,
|
memset (&kyc,
|
||||||
0,
|
0,
|
||||||
sizeof (kyc));
|
sizeof (kyc));
|
||||||
|
/* FIXME: inselect re-computes h_payto... */
|
||||||
qs3 = inselect_account_kyc_status (pg,
|
qs3 = inselect_account_kyc_status (pg,
|
||||||
sender_account_details,
|
sender_account_details,
|
||||||
&kyc);
|
&kyc);
|
||||||
@ -4286,7 +4278,7 @@ postgres_reserves_in_insert (void *cls,
|
|||||||
GNUNET_PQ_query_param_uint64 (&wire_ref),
|
GNUNET_PQ_query_param_uint64 (&wire_ref),
|
||||||
TALER_PQ_query_param_amount (balance),
|
TALER_PQ_query_param_amount (balance),
|
||||||
GNUNET_PQ_query_param_string (exchange_account_section),
|
GNUNET_PQ_query_param_string (exchange_account_section),
|
||||||
GNUNET_PQ_query_param_uint64 (&kyc.payment_target_uuid),
|
GNUNET_PQ_query_param_auto_from_type (&h_payto),
|
||||||
GNUNET_PQ_query_param_timestamp (&execution_time),
|
GNUNET_PQ_query_param_timestamp (&execution_time),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
@ -5686,7 +5678,7 @@ match_deposit_cb (void *cls,
|
|||||||
* destination. Those deposits must not already be "done".
|
* destination. Those deposits must not already be "done".
|
||||||
*
|
*
|
||||||
* @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 wire_target destination of the wire transfer
|
* @param h_payto destination of the wire transfer
|
||||||
* @param merchant_pub public key of the merchant
|
* @param merchant_pub public key of the merchant
|
||||||
* @param deposit_cb function to call for each deposit
|
* @param deposit_cb function to call for each deposit
|
||||||
* @param deposit_cb_cls closure for @a deposit_cb
|
* @param deposit_cb_cls closure for @a deposit_cb
|
||||||
@ -5697,7 +5689,7 @@ match_deposit_cb (void *cls,
|
|||||||
static enum GNUNET_DB_QueryStatus
|
static enum GNUNET_DB_QueryStatus
|
||||||
postgres_iterate_matching_deposits (
|
postgres_iterate_matching_deposits (
|
||||||
void *cls,
|
void *cls,
|
||||||
uint64_t wire_target,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
||||||
TALER_EXCHANGEDB_MatchingDepositIterator deposit_cb,
|
TALER_EXCHANGEDB_MatchingDepositIterator deposit_cb,
|
||||||
void *deposit_cb_cls,
|
void *deposit_cb_cls,
|
||||||
@ -5707,7 +5699,7 @@ postgres_iterate_matching_deposits (
|
|||||||
struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
|
struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get ();
|
||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_auto_from_type (merchant_pub),
|
GNUNET_PQ_query_param_auto_from_type (merchant_pub),
|
||||||
GNUNET_PQ_query_param_uint64 (&wire_target),
|
GNUNET_PQ_query_param_auto_from_type (h_payto),
|
||||||
GNUNET_PQ_query_param_absolute_time (&now),
|
GNUNET_PQ_query_param_absolute_time (&now),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
@ -5955,7 +5947,11 @@ postgres_insert_deposit (void *cls,
|
|||||||
struct PostgresClosure *pg = cls;
|
struct PostgresClosure *pg = cls;
|
||||||
struct TALER_EXCHANGEDB_KycStatus kyc;
|
struct TALER_EXCHANGEDB_KycStatus kyc;
|
||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
|
TALER_payto_hash (deposit->receiver_wire_account,
|
||||||
|
&h_payto);
|
||||||
|
/* FIXME: inselect re-computes h_payto... */
|
||||||
qs = inselect_account_kyc_status (pg,
|
qs = inselect_account_kyc_status (pg,
|
||||||
deposit->receiver_wire_account,
|
deposit->receiver_wire_account,
|
||||||
&kyc);
|
&kyc);
|
||||||
@ -5975,7 +5971,7 @@ postgres_insert_deposit (void *cls,
|
|||||||
GNUNET_PQ_query_param_auto_from_type (&deposit->merchant_pub),
|
GNUNET_PQ_query_param_auto_from_type (&deposit->merchant_pub),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&deposit->h_contract_terms),
|
GNUNET_PQ_query_param_auto_from_type (&deposit->h_contract_terms),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&deposit->wire_salt),
|
GNUNET_PQ_query_param_auto_from_type (&deposit->wire_salt),
|
||||||
GNUNET_PQ_query_param_uint64 (&kyc.payment_target_uuid),
|
GNUNET_PQ_query_param_auto_from_type (&h_payto),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&deposit->csig),
|
GNUNET_PQ_query_param_auto_from_type (&deposit->csig),
|
||||||
GNUNET_PQ_query_param_timestamp (&exchange_timestamp),
|
GNUNET_PQ_query_param_timestamp (&exchange_timestamp),
|
||||||
GNUNET_PQ_query_param_uint64 (&shard),
|
GNUNET_PQ_query_param_uint64 (&shard),
|
||||||
@ -7264,7 +7260,7 @@ handle_wt_result (void *cls,
|
|||||||
&h_contract_terms),
|
&h_contract_terms),
|
||||||
GNUNET_PQ_result_spec_string ("payto_uri",
|
GNUNET_PQ_result_spec_string ("payto_uri",
|
||||||
&payto_uri),
|
&payto_uri),
|
||||||
GNUNET_PQ_result_spec_auto_from_type ("h_payto",
|
GNUNET_PQ_result_spec_auto_from_type ("wire_target_h_payto",
|
||||||
&h_payto),
|
&h_payto),
|
||||||
TALER_PQ_result_spec_denom_pub ("denom_pub",
|
TALER_PQ_result_spec_denom_pub ("denom_pub",
|
||||||
&denom_pub),
|
&denom_pub),
|
||||||
@ -7798,7 +7794,11 @@ postgres_insert_reserve_closed (
|
|||||||
struct TALER_EXCHANGEDB_Reserve reserve;
|
struct TALER_EXCHANGEDB_Reserve reserve;
|
||||||
struct TALER_EXCHANGEDB_KycStatus kyc;
|
struct TALER_EXCHANGEDB_KycStatus kyc;
|
||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
|
TALER_payto_hash (receiver_account,
|
||||||
|
&h_payto);
|
||||||
|
/* FIXME: inselect re-computes h_payto... */
|
||||||
qs = inselect_account_kyc_status (pg,
|
qs = inselect_account_kyc_status (pg,
|
||||||
receiver_account,
|
receiver_account,
|
||||||
&kyc);
|
&kyc);
|
||||||
@ -7813,7 +7813,7 @@ postgres_insert_reserve_closed (
|
|||||||
GNUNET_PQ_query_param_auto_from_type (reserve_pub),
|
GNUNET_PQ_query_param_auto_from_type (reserve_pub),
|
||||||
GNUNET_PQ_query_param_timestamp (&execution_date),
|
GNUNET_PQ_query_param_timestamp (&execution_date),
|
||||||
GNUNET_PQ_query_param_auto_from_type (wtid),
|
GNUNET_PQ_query_param_auto_from_type (wtid),
|
||||||
GNUNET_PQ_query_param_uint64 (&kyc.payment_target_uuid),
|
GNUNET_PQ_query_param_auto_from_type (&h_payto),
|
||||||
TALER_PQ_query_param_amount (amount_with_fee),
|
TALER_PQ_query_param_amount (amount_with_fee),
|
||||||
TALER_PQ_query_param_amount (closing_fee),
|
TALER_PQ_query_param_amount (closing_fee),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
@ -8094,7 +8094,7 @@ postgres_start_deferred_wire_out (void *cls)
|
|||||||
* @param cls closure
|
* @param cls closure
|
||||||
* @param date time of the wire transfer
|
* @param date time of the wire transfer
|
||||||
* @param wtid subject of the wire transfer
|
* @param wtid subject of the wire transfer
|
||||||
* @param wire_target identifies the receiver account of the wire transfer
|
* @param h_payto identifies the receiver account of the wire transfer
|
||||||
* @param exchange_account_section configuration section of the exchange specifying the
|
* @param exchange_account_section configuration section of the exchange specifying the
|
||||||
* exchange's bank account being used
|
* exchange's bank account being used
|
||||||
* @param amount amount that was transmitted
|
* @param amount amount that was transmitted
|
||||||
@ -8105,7 +8105,7 @@ postgres_store_wire_transfer_out (
|
|||||||
void *cls,
|
void *cls,
|
||||||
struct GNUNET_TIME_Timestamp date,
|
struct GNUNET_TIME_Timestamp date,
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||||
uint64_t wire_target,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const char *exchange_account_section,
|
const char *exchange_account_section,
|
||||||
const struct TALER_Amount *amount)
|
const struct TALER_Amount *amount)
|
||||||
{
|
{
|
||||||
@ -8113,7 +8113,7 @@ postgres_store_wire_transfer_out (
|
|||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_timestamp (&date),
|
GNUNET_PQ_query_param_timestamp (&date),
|
||||||
GNUNET_PQ_query_param_auto_from_type (wtid),
|
GNUNET_PQ_query_param_auto_from_type (wtid),
|
||||||
GNUNET_PQ_query_param_uint64 (&wire_target),
|
GNUNET_PQ_query_param_auto_from_type (h_payto),
|
||||||
GNUNET_PQ_query_param_string (exchange_account_section),
|
GNUNET_PQ_query_param_string (exchange_account_section),
|
||||||
TALER_PQ_query_param_amount (amount),
|
TALER_PQ_query_param_amount (amount),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
@ -11774,9 +11774,9 @@ libtaler_plugin_exchangedb_postgres_init (void *cls)
|
|||||||
plugin->iterate_active_auditors = &postgres_iterate_active_auditors;
|
plugin->iterate_active_auditors = &postgres_iterate_active_auditors;
|
||||||
plugin->iterate_auditor_denominations =
|
plugin->iterate_auditor_denominations =
|
||||||
&postgres_iterate_auditor_denominations;
|
&postgres_iterate_auditor_denominations;
|
||||||
|
plugin->select_kyc_status = &postgres_select_kyc_status;
|
||||||
plugin->reserves_get = &postgres_reserves_get;
|
plugin->reserves_get = &postgres_reserves_get;
|
||||||
plugin->set_kyc_ok = &postgres_set_kyc_ok;
|
plugin->set_kyc_ok = &postgres_set_kyc_ok;
|
||||||
plugin->select_kyc_status = &postgres_select_kyc_status;
|
|
||||||
plugin->inselect_wallet_kyc_status = &postgres_inselect_wallet_kyc_status;
|
plugin->inselect_wallet_kyc_status = &postgres_inselect_wallet_kyc_status;
|
||||||
plugin->reserves_in_insert = &postgres_reserves_in_insert;
|
plugin->reserves_in_insert = &postgres_reserves_in_insert;
|
||||||
plugin->get_withdraw_info = &postgres_get_withdraw_info;
|
plugin->get_withdraw_info = &postgres_get_withdraw_info;
|
||||||
|
@ -616,6 +616,10 @@ static uint64_t deposit_rowid;
|
|||||||
*/
|
*/
|
||||||
static uint64_t wire_target_row;
|
static uint64_t wire_target_row;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Here #deposit_cb() will store the hash of the payto URI.
|
||||||
|
*/
|
||||||
|
static struct TALER_PaytoHashP wire_target_h_payto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function called with details about deposits that
|
* Function called with details about deposits that
|
||||||
@ -662,6 +666,8 @@ deposit_cb (void *cls,
|
|||||||
{
|
{
|
||||||
deposit_rowid = rowid;
|
deposit_rowid = rowid;
|
||||||
wire_target_row = wire_target;
|
wire_target_row = wire_target;
|
||||||
|
TALER_payto_hash (payto_uri,
|
||||||
|
&wire_target_h_payto);
|
||||||
result = 9;
|
result = 9;
|
||||||
}
|
}
|
||||||
return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
|
return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
|
||||||
@ -1048,6 +1054,10 @@ audit_wire_cb (void *cls,
|
|||||||
static enum GNUNET_GenericReturnValue
|
static enum GNUNET_GenericReturnValue
|
||||||
test_wire_out (const struct TALER_EXCHANGEDB_Deposit *deposit)
|
test_wire_out (const struct TALER_EXCHANGEDB_Deposit *deposit)
|
||||||
{
|
{
|
||||||
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
|
TALER_payto_hash (deposit->receiver_wire_account,
|
||||||
|
&h_payto);
|
||||||
auditor_row_cnt = 0;
|
auditor_row_cnt = 0;
|
||||||
memset (&wire_out_wtid,
|
memset (&wire_out_wtid,
|
||||||
42,
|
42,
|
||||||
@ -1127,7 +1137,7 @@ test_wire_out (const struct TALER_EXCHANGEDB_Deposit *deposit)
|
|||||||
plugin->store_wire_transfer_out (plugin->cls,
|
plugin->store_wire_transfer_out (plugin->cls,
|
||||||
wire_out_date,
|
wire_out_date,
|
||||||
&wire_out_wtid,
|
&wire_out_wtid,
|
||||||
kyc.payment_target_uuid,
|
&h_payto,
|
||||||
"my-config-section",
|
"my-config-section",
|
||||||
&wire_out_amount));
|
&wire_out_amount));
|
||||||
}
|
}
|
||||||
@ -2267,7 +2277,7 @@ run (void *cls)
|
|||||||
FAILIF (8 == result);
|
FAILIF (8 == result);
|
||||||
FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
|
FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
|
||||||
plugin->iterate_matching_deposits (plugin->cls,
|
plugin->iterate_matching_deposits (plugin->cls,
|
||||||
wire_target_row,
|
&wire_target_h_payto,
|
||||||
&deposit.merchant_pub,
|
&deposit.merchant_pub,
|
||||||
&matching_deposit_cb,
|
&matching_deposit_cb,
|
||||||
&deposit,
|
&deposit,
|
||||||
|
@ -546,7 +546,7 @@ struct TALER_PaytoHashP
|
|||||||
/**
|
/**
|
||||||
* Actual hash value.
|
* Actual hash value.
|
||||||
*/
|
*/
|
||||||
struct GNUNET_HashCode hash;
|
struct GNUNET_ShortHashCode hash;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -2090,12 +2090,12 @@ typedef void
|
|||||||
* @return a handle for this request
|
* @return a handle for this request
|
||||||
*/
|
*/
|
||||||
struct TALER_EXCHANGE_LinkHandle *
|
struct TALER_EXCHANGE_LinkHandle *
|
||||||
TALER_EXCHANGE_link (struct TALER_EXCHANGE_Handle *exchange,
|
TALER_EXCHANGE_link (
|
||||||
const struct TALER_CoinSpendPrivateKeyP *coin_priv,
|
struct TALER_EXCHANGE_Handle *exchange,
|
||||||
const struct
|
const struct TALER_CoinSpendPrivateKeyP *coin_priv,
|
||||||
TALER_AgeCommitmentProof *age_commitment_proof,
|
const struct TALER_AgeCommitmentProof *age_commitment_proof,
|
||||||
TALER_EXCHANGE_LinkCallback link_cb,
|
TALER_EXCHANGE_LinkCallback link_cb,
|
||||||
void *link_cb_cls);
|
void *link_cb_cls);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2699,7 +2699,7 @@ struct TALER_EXCHANGE_KycProofHandle;
|
|||||||
* Run interaction with exchange to provide proof of KYC status.
|
* Run interaction with exchange to provide proof of KYC status.
|
||||||
*
|
*
|
||||||
* @param eh exchange handle to use
|
* @param eh exchange handle to use
|
||||||
* @param payment_target number identifying the target
|
* @param h_payto hash of payto URI identifying the target account
|
||||||
* @param code OAuth 2.0 code argument
|
* @param code OAuth 2.0 code argument
|
||||||
* @param state OAuth 2.0 state argument
|
* @param state OAuth 2.0 state argument
|
||||||
* @param cb function to call with the result
|
* @param cb function to call with the result
|
||||||
@ -2708,7 +2708,7 @@ struct TALER_EXCHANGE_KycProofHandle;
|
|||||||
*/
|
*/
|
||||||
struct TALER_EXCHANGE_KycProofHandle *
|
struct TALER_EXCHANGE_KycProofHandle *
|
||||||
TALER_EXCHANGE_kyc_proof (struct TALER_EXCHANGE_Handle *eh,
|
TALER_EXCHANGE_kyc_proof (struct TALER_EXCHANGE_Handle *eh,
|
||||||
uint64_t payment_target,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const char *code,
|
const char *code,
|
||||||
const char *state,
|
const char *state,
|
||||||
TALER_EXCHANGE_KycProofCallback cb,
|
TALER_EXCHANGE_KycProofCallback cb,
|
||||||
|
@ -239,7 +239,7 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
{
|
{
|
||||||
uint64_t wire_reference;
|
uint64_t wire_reference;
|
||||||
struct TALER_Amount credit;
|
struct TALER_Amount credit;
|
||||||
uint64_t sender_account;
|
struct TALER_PaytoHashP sender_account_h_payto;
|
||||||
char *exchange_account_section;
|
char *exchange_account_section;
|
||||||
struct GNUNET_TIME_Timestamp execution_date;
|
struct GNUNET_TIME_Timestamp execution_date;
|
||||||
struct TALER_ReservePublicKeyP reserve_pub;
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
@ -250,7 +250,7 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
struct TALER_ReservePublicKeyP reserve_pub;
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
struct GNUNET_TIME_Timestamp execution_date;
|
struct GNUNET_TIME_Timestamp execution_date;
|
||||||
struct TALER_WireTransferIdentifierRawP wtid;
|
struct TALER_WireTransferIdentifierRawP wtid;
|
||||||
uint64_t wire_target_serial_id;
|
struct TALER_PaytoHashP sender_account_h_payto;
|
||||||
struct TALER_Amount amount;
|
struct TALER_Amount amount;
|
||||||
struct TALER_Amount closing_fee;
|
struct TALER_Amount closing_fee;
|
||||||
} reserves_close;
|
} reserves_close;
|
||||||
@ -347,7 +347,7 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
struct TALER_PrivateContractHashP h_contract_terms;
|
struct TALER_PrivateContractHashP h_contract_terms;
|
||||||
struct TALER_CoinSpendSignatureP coin_sig;
|
struct TALER_CoinSpendSignatureP coin_sig;
|
||||||
struct TALER_WireSaltP wire_salt;
|
struct TALER_WireSaltP wire_salt;
|
||||||
uint64_t wire_target_serial_id;
|
struct TALER_PaytoHashP wire_target_h_payto;
|
||||||
bool tiny;
|
bool tiny;
|
||||||
bool done;
|
bool done;
|
||||||
bool extension_blocked;
|
bool extension_blocked;
|
||||||
@ -366,7 +366,7 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
{
|
{
|
||||||
struct GNUNET_TIME_Timestamp execution_date;
|
struct GNUNET_TIME_Timestamp execution_date;
|
||||||
struct TALER_WireTransferIdentifierRawP wtid_raw;
|
struct TALER_WireTransferIdentifierRawP wtid_raw;
|
||||||
uint64_t wire_target_serial_id;
|
struct TALER_PaytoHashP wire_target_h_payto;
|
||||||
char *exchange_account_section;
|
char *exchange_account_section;
|
||||||
struct TALER_Amount amount;
|
struct TALER_Amount amount;
|
||||||
} wire_out;
|
} wire_out;
|
||||||
@ -2479,13 +2479,13 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
* Set the KYC status to "OK" for a bank account.
|
* Set the KYC status to "OK" for a bank account.
|
||||||
*
|
*
|
||||||
* @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 payment_target_uuid which account has been checked
|
* @param h_payto which account has been checked
|
||||||
* @param id ID data to persist
|
* @param id ID data to persist
|
||||||
* @return transaction status
|
* @return transaction status
|
||||||
*/
|
*/
|
||||||
enum GNUNET_DB_QueryStatus
|
enum GNUNET_DB_QueryStatus
|
||||||
(*set_kyc_ok)(void *cls,
|
(*set_kyc_ok)(void *cls,
|
||||||
uint64_t payment_target_uuid,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const char *id);
|
const char *id);
|
||||||
|
|
||||||
|
|
||||||
@ -2493,15 +2493,13 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
* Get the @a kyc status and @a h_payto by UUID.
|
* Get the @a kyc status and @a h_payto by UUID.
|
||||||
*
|
*
|
||||||
* @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 payment_target_uuid which account to get the KYC status for
|
* @param h_payto set to the hash of the account's payto URI (unsalted)
|
||||||
* @param[out] h_payto set to the hash of the account's payto URI (unsalted)
|
|
||||||
* @param[out] kyc set to the KYC status of the account
|
* @param[out] kyc set to the KYC status of the account
|
||||||
* @return transaction status
|
* @return transaction status
|
||||||
*/
|
*/
|
||||||
enum GNUNET_DB_QueryStatus
|
enum GNUNET_DB_QueryStatus
|
||||||
(*select_kyc_status)(void *cls,
|
(*select_kyc_status)(void *cls,
|
||||||
uint64_t payment_target_uuid,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
struct TALER_PaytoHashP *h_payto,
|
|
||||||
struct TALER_EXCHANGEDB_KycStatus *kyc);
|
struct TALER_EXCHANGEDB_KycStatus *kyc);
|
||||||
|
|
||||||
|
|
||||||
@ -3044,7 +3042,7 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
* destination. Those deposits must not already be "done".
|
* destination. Those deposits must not already be "done".
|
||||||
*
|
*
|
||||||
* @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 h_wire destination of the wire transfer
|
* @param h_payto destination of the wire transfer
|
||||||
* @param merchant_pub public key of the merchant
|
* @param merchant_pub public key of the merchant
|
||||||
* @param deposit_cb function to call for each deposit
|
* @param deposit_cb function to call for each deposit
|
||||||
* @param deposit_cb_cls closure for @a deposit_cb
|
* @param deposit_cb_cls closure for @a deposit_cb
|
||||||
@ -3057,7 +3055,7 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
enum GNUNET_DB_QueryStatus
|
enum GNUNET_DB_QueryStatus
|
||||||
(*iterate_matching_deposits)(
|
(*iterate_matching_deposits)(
|
||||||
void *cls,
|
void *cls,
|
||||||
uint64_t wire_target,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
||||||
TALER_EXCHANGEDB_MatchingDepositIterator deposit_cb,
|
TALER_EXCHANGEDB_MatchingDepositIterator deposit_cb,
|
||||||
void *deposit_cb_cls,
|
void *deposit_cb_cls,
|
||||||
@ -3399,7 +3397,7 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
*
|
*
|
||||||
* @param cls closure
|
* @param cls closure
|
||||||
* @param date time of the wire transfer
|
* @param date time of the wire transfer
|
||||||
* @param wtid subject of the wire transfer
|
* @param h_payto identifies the receiver account of the wire transfer
|
||||||
* @param wire_account details about the receiver account of the wire transfer,
|
* @param wire_account details about the receiver account of the wire transfer,
|
||||||
* including 'url' in payto://-format
|
* including 'url' in payto://-format
|
||||||
* @param amount amount that was transmitted
|
* @param amount amount that was transmitted
|
||||||
@ -3412,7 +3410,7 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
void *cls,
|
void *cls,
|
||||||
struct GNUNET_TIME_Timestamp date,
|
struct GNUNET_TIME_Timestamp date,
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||||
uint64_t wire_target,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const char *exchange_account_section,
|
const char *exchange_account_section,
|
||||||
const struct TALER_Amount *amount);
|
const struct TALER_Amount *amount);
|
||||||
|
|
||||||
|
@ -141,7 +141,7 @@ handle_kyc_proof_finished (void *cls,
|
|||||||
|
|
||||||
struct TALER_EXCHANGE_KycProofHandle *
|
struct TALER_EXCHANGE_KycProofHandle *
|
||||||
TALER_EXCHANGE_kyc_proof (struct TALER_EXCHANGE_Handle *exchange,
|
TALER_EXCHANGE_kyc_proof (struct TALER_EXCHANGE_Handle *exchange,
|
||||||
uint64_t payment_target,
|
const struct TALER_PaytoHashP *h_payto,
|
||||||
const char *code,
|
const char *code,
|
||||||
const char *state,
|
const char *state,
|
||||||
TALER_EXCHANGE_KycProofCallback cb,
|
TALER_EXCHANGE_KycProofCallback cb,
|
||||||
@ -158,11 +158,21 @@ TALER_EXCHANGE_kyc_proof (struct TALER_EXCHANGE_Handle *exchange,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* TODO: any escaping of code/state needed??? */
|
/* TODO: any escaping of code/state needed??? */
|
||||||
GNUNET_asprintf (&arg_str,
|
{
|
||||||
"/kyc-proof/%llu?code=%s&state=%s",
|
char hstr[sizeof (struct TALER_PaytoHashP) * 2];
|
||||||
(unsigned long long) payment_target,
|
char *end;
|
||||||
code,
|
|
||||||
state);
|
end = GNUNET_STRINGS_data_to_string (h_payto,
|
||||||
|
sizeof (*h_payto),
|
||||||
|
hstr,
|
||||||
|
sizeof (hstr));
|
||||||
|
*end = '\0';
|
||||||
|
GNUNET_asprintf (&arg_str,
|
||||||
|
"/kyc-proof/%s?code=%s&state=%s",
|
||||||
|
hstr,
|
||||||
|
code,
|
||||||
|
state);
|
||||||
|
}
|
||||||
kph = GNUNET_new (struct TALER_EXCHANGE_KycProofHandle);
|
kph = GNUNET_new (struct TALER_EXCHANGE_KycProofHandle);
|
||||||
kph->exchange = exchange;
|
kph->exchange = exchange;
|
||||||
kph->cb = cb;
|
kph->cb = cb;
|
||||||
|
@ -260,7 +260,7 @@ TALER_EXCHANGE_reserves_get (
|
|||||||
|
|
||||||
end = GNUNET_STRINGS_data_to_string (
|
end = GNUNET_STRINGS_data_to_string (
|
||||||
reserve_pub,
|
reserve_pub,
|
||||||
sizeof (struct TALER_ReservePublicKeyP),
|
sizeof (*reserve_pub),
|
||||||
pub_str,
|
pub_str,
|
||||||
sizeof (pub_str));
|
sizeof (pub_str));
|
||||||
*end = '\0';
|
*end = '\0';
|
||||||
|
@ -131,13 +131,14 @@ proof_kyc_run (void *cls,
|
|||||||
{
|
{
|
||||||
struct KycProofGetState *kps = cls;
|
struct KycProofGetState *kps = cls;
|
||||||
const struct TALER_TESTING_Command *res_cmd;
|
const struct TALER_TESTING_Command *res_cmd;
|
||||||
const uint64_t *payment_target;
|
const char **payto_uri;
|
||||||
|
struct TALER_PaytoHashP h_payto;
|
||||||
|
|
||||||
(void) cmd;
|
(void) cmd;
|
||||||
kps->is = is;
|
kps->is = is;
|
||||||
res_cmd = TALER_TESTING_interpreter_lookup_command (kps->is,
|
res_cmd = TALER_TESTING_interpreter_lookup_command (
|
||||||
kps->
|
kps->is,
|
||||||
payment_target_reference);
|
kps->payment_target_reference);
|
||||||
if (NULL == res_cmd)
|
if (NULL == res_cmd)
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
@ -145,15 +146,17 @@ proof_kyc_run (void *cls,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (GNUNET_OK !=
|
if (GNUNET_OK !=
|
||||||
TALER_TESTING_get_trait_payment_target_uuid (res_cmd,
|
TALER_TESTING_get_trait_payto_uri (res_cmd,
|
||||||
&payment_target))
|
&payto_uri))
|
||||||
{
|
{
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
TALER_TESTING_interpreter_fail (kps->is);
|
TALER_TESTING_interpreter_fail (kps->is);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
TALER_payto_hash (*payto_uri,
|
||||||
|
&h_payto);
|
||||||
kps->kph = TALER_EXCHANGE_kyc_proof (is->exchange,
|
kps->kph = TALER_EXCHANGE_kyc_proof (is->exchange,
|
||||||
*payment_target,
|
&h_payto,
|
||||||
kps->code,
|
kps->code,
|
||||||
kps->state,
|
kps->state,
|
||||||
&proof_kyc_cb,
|
&proof_kyc_cb,
|
||||||
|
@ -228,9 +228,16 @@ void
|
|||||||
TALER_payto_hash (const char *payto,
|
TALER_payto_hash (const char *payto,
|
||||||
struct TALER_PaytoHashP *h_payto)
|
struct TALER_PaytoHashP *h_payto)
|
||||||
{
|
{
|
||||||
|
struct GNUNET_HashCode sha512;
|
||||||
|
|
||||||
GNUNET_CRYPTO_hash (payto,
|
GNUNET_CRYPTO_hash (payto,
|
||||||
strlen (payto) + 1,
|
strlen (payto) + 1,
|
||||||
&h_payto->hash);
|
&sha512);
|
||||||
|
GNUNET_static_assert (sizeof (sha512) > sizeof (*h_payto));
|
||||||
|
/* truncate */
|
||||||
|
memcpy (h_payto,
|
||||||
|
&sha512,
|
||||||
|
sizeof (*h_payto));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user