diff options
Diffstat (limited to 'src/mint/mint_db.c')
-rw-r--r-- | src/mint/mint_db.c | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/src/mint/mint_db.c b/src/mint/mint_db.c index 22d04c865..1a8acaa5f 100644 --- a/src/mint/mint_db.c +++ b/src/mint/mint_db.c | |||
@@ -529,6 +529,7 @@ TALER_MINT_DB_prepare (PGconn *db_conn) | |||
529 | "INSERT INTO deposits (" | 529 | "INSERT INTO deposits (" |
530 | "coin_pub," | 530 | "coin_pub," |
531 | "denom_pub," | 531 | "denom_pub," |
532 | "denom_sig," | ||
532 | "transaction_id," | 533 | "transaction_id," |
533 | "amount_value," | 534 | "amount_value," |
534 | "amount_fraction," | 535 | "amount_fraction," |
@@ -539,9 +540,9 @@ TALER_MINT_DB_prepare (PGconn *db_conn) | |||
539 | "coin_sig," | 540 | "coin_sig," |
540 | "wire" | 541 | "wire" |
541 | ") VALUES (" | 542 | ") VALUES (" |
542 | "$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11" | 543 | "$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12" |
543 | ")", | 544 | ")", |
544 | 11, NULL); | 545 | 12, NULL); |
545 | PREPARE ("get_deposit", | 546 | PREPARE ("get_deposit", |
546 | "SELECT " | 547 | "SELECT " |
547 | "coin_pub," | 548 | "coin_pub," |
@@ -1324,35 +1325,55 @@ int | |||
1324 | TALER_MINT_DB_insert_deposit (PGconn *db_conn, | 1325 | TALER_MINT_DB_insert_deposit (PGconn *db_conn, |
1325 | const struct Deposit *deposit) | 1326 | const struct Deposit *deposit) |
1326 | { | 1327 | { |
1327 | // FIXME: check logic! | 1328 | char *denom_pub_enc; |
1329 | char *denom_sig_enc; | ||
1330 | char *json_wire_enc; | ||
1331 | PGresult *result; | ||
1332 | struct TALER_AmountNBO amount_nbo; | ||
1333 | size_t denom_pub_enc_size; | ||
1334 | size_t denom_sig_enc_size; | ||
1335 | int ret; | ||
1336 | |||
1337 | ret = GNUNET_SYSERR; | ||
1338 | denom_pub_enc_size = | ||
1339 | GNUNET_CRYPTO_rsa_public_key_encode (deposit->coin.denom_pub, | ||
1340 | &denom_pub_enc); | ||
1341 | denom_sig_enc_size = | ||
1342 | GNUNET_CRYPTO_rsa_signature_encode (deposit->coin.denom_sig, | ||
1343 | &denom_sig_enc); | ||
1344 | json_wire_enc = json_dumps (deposit->wire, JSON_COMPACT); | ||
1345 | amount_nbo = TALER_amount_hton (deposit->amount); | ||
1328 | struct TALER_DB_QueryParam params[]= { | 1346 | struct TALER_DB_QueryParam params[]= { |
1329 | TALER_DB_QUERY_PARAM_PTR (&deposit->coin.coin_pub), | 1347 | TALER_DB_QUERY_PARAM_PTR (&deposit->coin.coin_pub), |
1330 | TALER_DB_QUERY_PARAM_PTR (&deposit->coin.denom_pub), // FIXME! | 1348 | TALER_DB_QUERY_PARAM_PTR_SIZED (denom_pub_enc, denom_pub_enc_size), |
1331 | TALER_DB_QUERY_PARAM_PTR (&deposit->coin.denom_sig), // FIXME! | 1349 | TALER_DB_QUERY_PARAM_PTR_SIZED (denom_sig_enc, denom_sig_enc_size), |
1332 | TALER_DB_QUERY_PARAM_PTR (&deposit->transaction_id), | 1350 | TALER_DB_QUERY_PARAM_PTR (&deposit->transaction_id), |
1333 | TALER_DB_QUERY_PARAM_PTR (&deposit->amount.value), | 1351 | TALER_DB_QUERY_PARAM_PTR (&amount_nbo.value), |
1334 | TALER_DB_QUERY_PARAM_PTR (&deposit->amount.fraction), | 1352 | TALER_DB_QUERY_PARAM_PTR (&amount_nbo.fraction), |
1335 | TALER_DB_QUERY_PARAM_PTR_SIZED (deposit->amount.currency, | 1353 | TALER_DB_QUERY_PARAM_PTR_SIZED (amount_nbo.currency, |
1336 | strlen (deposit->amount.currency)), | 1354 | TALER_CURRENCY_LEN - 1), |
1337 | TALER_DB_QUERY_PARAM_PTR (&deposit->merchant_pub), | 1355 | TALER_DB_QUERY_PARAM_PTR (&deposit->merchant_pub), |
1338 | TALER_DB_QUERY_PARAM_PTR (&deposit->h_contract), | 1356 | TALER_DB_QUERY_PARAM_PTR (&deposit->h_contract), |
1339 | TALER_DB_QUERY_PARAM_PTR (&deposit->h_wire), | 1357 | TALER_DB_QUERY_PARAM_PTR (&deposit->h_wire), |
1340 | TALER_DB_QUERY_PARAM_PTR (&deposit->csig), | 1358 | TALER_DB_QUERY_PARAM_PTR (&deposit->csig), |
1341 | TALER_DB_QUERY_PARAM_PTR_SIZED (deposit->wire, | 1359 | TALER_DB_QUERY_PARAM_PTR_SIZED (json_wire_enc, |
1342 | strlen ("FIXME")), // FIXME! json! | 1360 | strlen (json_wire_enc)), |
1343 | TALER_DB_QUERY_PARAM_END | 1361 | TALER_DB_QUERY_PARAM_END |
1344 | }; | 1362 | }; |
1345 | PGresult *result; | ||
1346 | |||
1347 | result = TALER_DB_exec_prepared (db_conn, "insert_deposit", params); | 1363 | result = TALER_DB_exec_prepared (db_conn, "insert_deposit", params); |
1348 | if (PGRES_COMMAND_OK != PQresultStatus (result)) | 1364 | if (PGRES_COMMAND_OK != PQresultStatus (result)) |
1349 | { | 1365 | { |
1350 | BREAK_DB_ERR (result); | 1366 | BREAK_DB_ERR (result); |
1351 | PQclear (result); | 1367 | goto cleanup; |
1352 | return GNUNET_SYSERR; | ||
1353 | } | 1368 | } |
1369 | ret = GNUNET_OK; | ||
1370 | |||
1371 | cleanup: | ||
1354 | PQclear (result); | 1372 | PQclear (result); |
1355 | return GNUNET_OK; | 1373 | GNUNET_free_non_null (denom_pub_enc); |
1374 | GNUNET_free_non_null (denom_sig_enc); | ||
1375 | GNUNET_free_non_null (json_wire_enc); | ||
1376 | return ret; | ||
1356 | } | 1377 | } |
1357 | 1378 | ||
1358 | 1379 | ||