From 9bbfca568feed4b73a31e657955cf0005c17cdb5 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 11 Nov 2015 14:44:08 +0100 Subject: updating code to match simplified specification (#4039) --- src/mint-lib/mint_api_common.c | 126 ++++++++++++++++++++++++++-------------- src/mint-lib/mint_api_json.c | 71 ---------------------- src/mint-lib/mint_api_json.h | 19 ------ src/mint-lib/mint_api_reserve.c | 27 +++++---- 4 files changed, 98 insertions(+), 145 deletions(-) (limited to 'src/mint-lib') diff --git a/src/mint-lib/mint_api_common.c b/src/mint-lib/mint_api_common.c index d8e83c78..fd85fbdc 100644 --- a/src/mint-lib/mint_api_common.c +++ b/src/mint-lib/mint_api_common.c @@ -62,13 +62,20 @@ TALER_MINT_verify_coin_history_ (const char *currency, { json_t *transaction; struct TALER_Amount amount; - struct GNUNET_CRYPTO_EccSignaturePurpose *purpose; + struct TALER_CoinSpendSignatureP sig; + void *details; + size_t details_size; + const char *type; struct MAJ_Specification spec[] = { MAJ_spec_amount ("amount", &amount), - MAJ_spec_eddsa_signed_purpose ("signature", - &purpose, - &coin_pub->eddsa_pub), + MAJ_spec_string ("type", + &type), + MAJ_spec_fixed_auto ("signature", + &sig), + MAJ_spec_varsize ("details", + &details, + &details_size), MAJ_spec_end }; @@ -81,57 +88,90 @@ TALER_MINT_verify_coin_history_ (const char *currency, GNUNET_break_op (0); return GNUNET_SYSERR; } - switch (ntohl (purpose->purpose)) + if (0 == strcasecmp (type, + "DEPOSIT")) { - case TALER_SIGNATURE_WALLET_COIN_DEPOSIT: - { - const struct TALER_DepositRequestPS *dr; - struct TALER_Amount dr_amount; + const struct TALER_DepositRequestPS *dr; + struct TALER_Amount dr_amount; - if (ntohl (purpose->size) != sizeof (struct TALER_DepositRequestPS)) - { - GNUNET_break (0); - MAJ_parse_free (spec); - return GNUNET_SYSERR; - } - dr = (const struct TALER_DepositRequestPS *) purpose; - TALER_amount_ntoh (&dr_amount, - &dr->amount_with_fee); - if (0 != TALER_amount_cmp (&dr_amount, - &amount)) - { - GNUNET_break (0); - MAJ_parse_free (spec); - return GNUNET_SYSERR; - } + if (details_size != sizeof (struct TALER_DepositRequestPS)) + { + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; } - break; - case TALER_SIGNATURE_WALLET_COIN_MELT: + dr = (const struct TALER_DepositRequestPS *) details; + if (details_size != ntohl (dr->purpose.size)) { - const struct TALER_RefreshMeltCoinAffirmationPS *rm; - struct TALER_Amount rm_amount; - - if (ntohl (purpose->size) != sizeof (struct TALER_RefreshMeltCoinAffirmationPS)) + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; + } + if (GNUNET_OK != + GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_COIN_DEPOSIT, + &dr->purpose, + &sig.eddsa_signature, + &coin_pub->eddsa_pub)) { - GNUNET_break (0); - MAJ_parse_free (spec); - return GNUNET_SYSERR; - } - rm = (const struct TALER_RefreshMeltCoinAffirmationPS *) purpose; - TALER_amount_ntoh (&rm_amount, - &rm->amount_with_fee); - if (0 != TALER_amount_cmp (&rm_amount, - &amount)) + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; + } + + // FIXME: check sig! + TALER_amount_ntoh (&dr_amount, + &dr->amount_with_fee); + if (0 != TALER_amount_cmp (&dr_amount, + &amount)) { GNUNET_break (0); MAJ_parse_free (spec); return GNUNET_SYSERR; } + } + else if (0 == strcasecmp (type, + "MELT")) + { + const struct TALER_RefreshMeltCoinAffirmationPS *rm; + struct TALER_Amount rm_amount; + + if (details_size != sizeof (struct TALER_RefreshMeltCoinAffirmationPS)) + { + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; + } + rm = (const struct TALER_RefreshMeltCoinAffirmationPS *) details; + if (details_size != ntohl (rm->purpose.size)) + { + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; + } + if (GNUNET_OK != + GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_COIN_MELT, + &rm->purpose, + &sig.eddsa_signature, + &coin_pub->eddsa_pub)) + { + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; + } + TALER_amount_ntoh (&rm_amount, + &rm->amount_with_fee); + if (0 != TALER_amount_cmp (&rm_amount, + &amount)) + { + GNUNET_break_op (0); + MAJ_parse_free (spec); + return GNUNET_SYSERR; } - break; - default: + } + else + { /* signature not supported, new version on server? */ - GNUNET_break (0); + GNUNET_break_op (0); MAJ_parse_free (spec); return GNUNET_SYSERR; } diff --git a/src/mint-lib/mint_api_json.c b/src/mint-lib/mint_api_json.c index 46f54d94..a728a549 100644 --- a/src/mint-lib/mint_api_json.c +++ b/src/mint-lib/mint_api_json.c @@ -213,49 +213,6 @@ parse_json (json_t *root, } break; - case MAJ_CMD_EDDSA_SIGNATURE: - { - struct TALER_CoinSpendSignatureP sig; - struct GNUNET_CRYPTO_EccSignaturePurpose *purpose; - size_t size; - struct MAJ_Specification sig_spec[] = { - MAJ_spec_fixed_auto ("eddsa_sig", &sig), - MAJ_spec_varsize ("eddsa_val", (void**) &purpose, &size), - MAJ_spec_end - }; - - if (GNUNET_OK != - MAJ_parse_json (pos, - sig_spec)) - { - GNUNET_break_op (0); - MAJ_parse_free (sig_spec); - return i; - } - if (size != ntohl (purpose->size)) - { - GNUNET_break_op (0); - MAJ_parse_free (sig_spec); - return i; - } - - if (GNUNET_OK != - GNUNET_CRYPTO_eddsa_verify (ntohl (purpose->purpose), - purpose, - &sig.eddsa_signature, - spec[i].details.eddsa_signature.pub_key)) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Failed to verify signature of purpose %u\n", - ntohl (purpose->purpose)); - GNUNET_break_op (0); - MAJ_parse_free (sig_spec); - return i; - } - *spec[i].details.eddsa_signature.purpose_p = purpose; - } - break; - case MAJ_CMD_UINT16: { json_int_t val; @@ -337,10 +294,6 @@ parse_free (struct MAJ_Specification *spec, GNUNET_CRYPTO_rsa_signature_free (*spec[i].details.rsa_signature); *spec[i].details.rsa_signature = NULL; break; - case MAJ_CMD_EDDSA_SIGNATURE: - GNUNET_free (*spec[i].details.eddsa_signature.purpose_p); - *spec[i].details.eddsa_signature.purpose_p = NULL; - break; case MAJ_CMD_JSON_OBJECT: json_decref (*spec[i].details.obj); *spec[i].details.obj = NULL; @@ -535,28 +488,4 @@ MAJ_spec_rsa_signature (const char *name, } -/** - * Specification for parsing an EdDSA object signature with purpose. - * Also validates the signature (!). - * - * @param name name of the JSON field - * @param purpose_p where to store the purpose - * @param pub_key public key to use for validation - */ -struct MAJ_Specification -MAJ_spec_eddsa_signed_purpose (const char *name, - struct GNUNET_CRYPTO_EccSignaturePurpose **purpose_p, - const struct GNUNET_CRYPTO_EddsaPublicKey *pub_key) -{ - struct MAJ_Specification ret = - { - .cmd = MAJ_CMD_EDDSA_SIGNATURE, - .field = name, - .details.eddsa_signature.purpose_p = purpose_p, - .details.eddsa_signature.pub_key = pub_key - }; - return ret; -} - - /* end of mint_api_json.c */ diff --git a/src/mint-lib/mint_api_json.h b/src/mint-lib/mint_api_json.h index 2af5588e..68809059 100644 --- a/src/mint-lib/mint_api_json.h +++ b/src/mint-lib/mint_api_json.h @@ -68,11 +68,6 @@ enum MAJ_Command */ MAJ_CMD_RSA_SIGNATURE, - /** - * Parse object with EdDSA signature and purpose at current position. - */ - MAJ_CMD_EDDSA_SIGNATURE, - /** * Parse `const char *` JSON string at current position. */ @@ -309,20 +304,6 @@ MAJ_spec_amount (const char *name, struct TALER_Amount *amount); -/** - * Specification for parsing an EdDSA object signature with purpose. - * Also validates the signature (!). - * - * @param name name of the JSON field - * @param purpose_p where to store the purpose - * @param pub_key public key to use for validation - */ -struct MAJ_Specification -MAJ_spec_eddsa_signed_purpose (const char *name, - struct GNUNET_CRYPTO_EccSignaturePurpose **purpose_p, - const struct GNUNET_CRYPTO_EddsaPublicKey *pub_key); - - /** * Specification for parsing an RSA public key. * diff --git a/src/mint-lib/mint_api_reserve.c b/src/mint-lib/mint_api_reserve.c index 57e8552c..a726eca4 100644 --- a/src/mint-lib/mint_api_reserve.c +++ b/src/mint-lib/mint_api_reserve.c @@ -167,13 +167,14 @@ parse_reserve_history (json_t *history, else if (0 == strcasecmp (type, "WITHDRAW")) { - struct GNUNET_CRYPTO_EccSignaturePurpose *purpose; - const struct TALER_WithdrawRequestPS *withdraw_purpose; + struct TALER_ReserveSignatureP sig; + struct TALER_WithdrawRequestPS withdraw_purpose; struct TALER_Amount amount_from_purpose; struct MAJ_Specification withdraw_spec[] = { - MAJ_spec_eddsa_signed_purpose ("signature", - &purpose, - &reserve_pub->eddsa_pub), + MAJ_spec_fixed_auto ("signature", + &sig), + MAJ_spec_fixed_auto ("details", + &withdraw_purpose), MAJ_spec_end }; unsigned int i; @@ -186,17 +187,19 @@ parse_reserve_history (json_t *history, GNUNET_break_op (0); return GNUNET_SYSERR; } - /* Check that the signature actually signed a withdraw request */ - if ( (ntohl (purpose->purpose) != TALER_SIGNATURE_WALLET_RESERVE_WITHDRAW) || - (ntohl (purpose->size) != sizeof (struct TALER_WithdrawRequestPS)) ) + /* Check that the signature is a valid withdraw request */ + if (GNUNET_OK != + GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_RESERVE_WITHDRAW, + &withdraw_purpose.purpose, + &sig.eddsa_signature, + &reserve_pub->eddsa_pub)) { GNUNET_break_op (0); MAJ_parse_free (withdraw_spec); return GNUNET_SYSERR; } - withdraw_purpose = (const struct TALER_WithdrawRequestPS *) purpose; TALER_amount_ntoh (&amount_from_purpose, - &withdraw_purpose->amount_with_fee); + &withdraw_purpose.amount_with_fee); if (0 != TALER_amount_cmp (&amount, &amount_from_purpose)) { @@ -211,8 +214,8 @@ parse_reserve_history (json_t *history, "uuid" array to remember the hashes of all purposes, and compare the hashes to find duplicates. */ - GNUNET_CRYPTO_hash (withdraw_purpose, - ntohl (withdraw_purpose->purpose.size), + GNUNET_CRYPTO_hash (&withdraw_purpose, + ntohl (withdraw_purpose.purpose.size), &uuid[uuid_off]); for (i=0;i Date: Tue, 17 Nov 2015 21:48:37 +0100 Subject: removing the bank Website --- demo/bank/README | 3 - demo/bank/fake_wire_transfer.php | 91 ----------- demo/bank/index.html | 115 -------------- demo/bank/style.css | 328 --------------------------------------- src/mint-lib/mint_api_deposit.c | 33 ++++ 5 files changed, 33 insertions(+), 537 deletions(-) delete mode 100644 demo/bank/README delete mode 100644 demo/bank/fake_wire_transfer.php delete mode 100644 demo/bank/index.html delete mode 100644 demo/bank/style.css (limited to 'src/mint-lib') diff --git a/demo/bank/README b/demo/bank/README deleted file mode 100644 index 153f9d03..00000000 --- a/demo/bank/README +++ /dev/null @@ -1,3 +0,0 @@ -This directory is the root of the "demo" bank website. The -page being served simulates what a real bank does when transferring -funds to some mint via SEPA. diff --git a/demo/bank/fake_wire_transfer.php b/demo/bank/fake_wire_transfer.php deleted file mode 100644 index c370f21d..00000000 --- a/demo/bank/fake_wire_transfer.php +++ /dev/null @@ -1,91 +0,0 @@ - - - -Fake Wire Transfer - - - - - 2) - $amount_fraction = (double) ("0." . $amount_chunks[1]); -$amount_fraction = $amount_fraction * 1000000; -// pack the JSON -$json = json_encode (array ('reserve_pub' => $reserve_pk, - 'execution_date' => "/Date(" . time() . ")/", - 'wire' => array ('type' => 'test'), - 'amount' => array ('value' => intval($amount_chunks[0]), - 'fraction' => $amount_fraction, - 'currency' => $amount_chunks[count($amount_chunks) - 1]))); - -// craft the HTTP request -$req = new http\Client\Request ("POST", - "http://" . $mint . "/admin/add/incoming", - array ("Content-Type" => "application/json")); -$req->getBody()->append ($json); - -// execute HTTP request -$client = new http\Client; -$client->enqueue($req)->send (); -$resp = $client->getResponse (); - -// evaluate response -$status_code = $resp->getResponseCode (); -http_response_code ($status_code); - -if ($status_code != 200) -{ - echo "Error $status_code when faking the wire transfer. Please report to taler@gnu.org"; -} -else -{ - echo "Pretend wire transfer successful. Exit through the gift shop and enjoy shopping!"; -} -?> - - diff --git a/demo/bank/index.html b/demo/bank/index.html deleted file mode 100644 index 7746e1e4..00000000 --- a/demo/bank/index.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - Taler's "demo" bank - - - - -
-

Welcome to the KUDOS bank!

-

Through this page, you can wire funds to our demonstrator mint - in order to create your reserves from where withdraw your coins. - Once the reserve is created, the withdrawing of coins will be - entirely handled by the wallet, with no intervention required - to the user. -

-

- Enter the deisired amount, and click 'Select mint'. Your wallet - will make you choose a mint and will automatically submit all the - needed data into the bank's system. At the end of the withdrawal, - the wallet will show you the 'All coins withdrawn' nice message. -

- -

Still missing a wallet? Install one! -

-
-
- - Amount to withdraw: - - - -
- - - - diff --git a/demo/bank/style.css b/demo/bank/style.css deleted file mode 100644 index a476a630..00000000 --- a/demo/bank/style.css +++ /dev/null @@ -1,328 +0,0 @@ -/* css Zen Garden submission 020 - 'Friendly Beaches' by Sophie G - www.sophie-g.net */ -/* css released under Creative Commons ShareAlike License v1.0 - http://creativecommons.org/licenses/sa/1.0/ */ -/* All associated graphics copyright 2003, Sophie G */ - - -/* IMPORTANT */ -/* This design is not a template. You may not reproduce it elsewhere without the designer's written permission. */ -/* The CSS itself may freely be used for anything you wish, but the associated graphics belong to the designer. */ -/* What you may use - .css files. What you may not use - .jpg, .gif, and .png files. */ - - - -body { - background-color: #FFFFFF; - margin: 0px; - padding: 10px; - font-family: Ubuntu, Tahoma, Sans; - font-size: 90%; -} - -p { - line-height: 180%; -} -.page-wrapper { - background-color: #EDEEF0; - border: 1px solid #DAD5D9; - padding: 0px; - margin: 0px; -} -abbr { - border-bottom: 1px #6BA0D2 dashed; -} -header,h1 { - font-family: Impact, Georgia, serif; - background-color: #FFFFFF; -} -header h1 { - height: 190px; - margin: 0px; - background-color: black; - background-image: url(Gala.jpg); - background-repeat: no-repeat; -} -header h1, header h2 { - text-indent: 100%; - white-space: nowrap; - overflow: hidden; -} -header h2 { - background-color: #EDEEF0; - margin: 0px; - height: 24px; - padding: 0px 14px 2px 14px; - background-image: url(headerh2.gif); - background-repeat: no-repeat; -} -header h2 abbr { - color: #FFF; - border-bottom: 1px #FFF dashed; -} -.summary p:first-child { - position: absolute; - right: 21px; - top: 21px; - width: 12em; - height: 165px; - padding: 3px 0 0 0; - margin: 0px; - border: 1px solid #0C2953; - text-align: center; - font-size: 90%; - font-family: Impact, Georgia, serif; - line-height: 110%; - color: #FFF; - background-image: url(summary.jpg); - background-repeat: no-repeat; - background-position: 50% 100%; - background-color: #0C2953; -} -.preamble { - padding: 0px 15em 0px 3em; -} -.preamble h3 { - margin: 15px 0px 0px 0px; - padding: 6px 20px 2px 6px; - text-align: left; - font-size: 180%; - font-variant: small-caps; - color: #6BA0D2; - background-image: url(bordDroitPreambleh3.gif); - background-repeat: no-repeat; - background-position: 100% 0px; - background-color: #F6F7F7; -} -.preamble h3::before { - content: " "; - display: inline-block; - padding: 35px 0px 30px 48px; - background-image: url(preambleShell.jpg); - background-repeat: no-repeat; - background-position: 0px 50%; - vertical-align: middle; -} -.preamble p { - text-align: justify; -} -.preamble p:nth-child(2), .preamble p:nth-child(3) { - margin: 0px; - padding: 10px 20px 2px 6px; - background-image: url(bordDroitPreamble.gif); - background-repeat: repeat-y; - background-position: 100% 0px; - background-color: #F6F7F7; -} -.preamble p:nth-child(4) { - margin: 0px; - padding: 0px; - background-image: url(bordBasPreamble.gif); - background-repeat: no-repeat; - background-position: 100% 100%; - background-color: #F6F7F7; - padding: 10px 20px 20px 6px; -} -.preamble p:nth-child(4)::after { - content: " "; - display: block; - margin: 0px; - padding: 0 20px 0 6px; - background-image: url(bordBasPreambleGauche.gif); - background-repeat: no-repeat; - background-position: 0% 100%; -} -.supporting { - margin: 0px; - padding: 10px 16em 0px 1em; - font-size: 90%; -} -.explanation, .participation, .benefits, .requirements { - border: 2px solid #FFF; - padding: 0px; -} -.explanation { - margin: 0px 0px 10px 0px; -} -.participation { - margin: 0px 0px 10px 0px; - float: left; - width: 30%; -} -.benefits { - margin: 0px 0px 10px 32%; -} -.requirements { - margin: 0px 0px 10px 32%; -} -.supporting h3 { - margin: 0px; - padding: 5px 30px 1px 2px; - text-align: left; - font-size: 120%; - font-variant: small-caps; - color: #6BA0D2; - border-bottom: 1px solid #6BA0D2; - background-color: #F6F7F7; - background-repeat: no-repeat; - background-position: 100% 50%; -} -.explanation h3 { - background-image: url(explanationShell.jpg); -} -.supporting form { - padding: 30px; - display: inline-block; - clear: both; - width: 120em; -} -.supporting input { - margin: 8px; -} -.participation h3 { - background-image: url(participationShell.jpg); -} -.benefits h3 { - background-image: url(benefitsShell.jpg); -} -.requirements h3 { - background-image: url(requirementsRock.jpg); -} -.supporting p { - text-align: justify; - margin: 10px 0px 0px 0px; - padding: 1px 3px 2px 3px; -} -.supporting a:link { - color: #0083FF; - font-weight: bold; -} -.supporting a:visited { - color: #204160; - font-weight: bold; -} -.supporting a:hover, .supporting a:active { - color: #8C0000; - font-weight: bold; - text-decoration: none; -} -.sidebar, .summary p:last-child { - font-size: 90%; - font-family: Impact, Georgia, serif; - position: absolute; - right: 21px; - width: 12em; - border: 1px solid #0C2953; - padding: 0px; - margin: 0px; - background-color: #A4ACB3; -} -.summary p:last-child { - height: 50px; - text-align: center; - top: 217px; - font-size: 90%; - display: block; - padding: 3px 0; - color: #FFF; -} -.sidebar { - top: 266px; -} -.sidebar h3 { - background-color: #0C2953; - color: #FFF; - margin: 0px; - padding: 30px 1px 1px 1px; - background-repeat: no-repeat; -} -.sidebar h3.select { - background-image: url(selecth3.jpg); - background-position: 50% 0%; -} -.sidebar h3.favorites { - border-top: 1px solid #0C2953; - background-image: url(favoritesh3.jpg); - background-position: 40% 100%; -} -.sidebar h3.archives { - border-top: 1px solid #0C2953; - background-image: url(archivesh3.jpg); - background-position: 40% 100%; -} -.sidebar h3.resources { - border-top: 1px solid #0C2953; - background-image: url(resourcesh3.jpg); - background-position: 50% 30%; -} -.sidebar ul { - list-style-type: none; - font-size: 90%; - color: #FFF; - margin: 0px; - padding: 0px; - background-color: #A4ACB3; -} -.sidebar li { - padding: 3px 2px 3px 2px; - margin-bottom: 4px; -} -.sidebar li:hover { - padding: 2px 1px 2px 1px; - border: 1px dotted #0C2953; - background-color: #6BA0D2; -} -.summary p:last-child a:link { - color: #FFF; - font-weight: bold; -} -.summary p:last-child a:visited { - color: #204160; -} -.summary p:last-child a:hover, .summary p:last-child a:active { - color: #FFD800; - font-weight: bold; - text-decoration: none; -} -.sidebar a:link, .sidebar a:visited { - border-left: 6px solid #FFF; - padding-left: 2px; - font-weight: bold; - color: #FFF; -} -.sidebar a:visited { - color: #204160; -} -.sidebar a:hover, .sidebar a:active { - border-left: 6px solid #FFD800; - padding-left: 2px; - color: #FFD800; - text-decoration: none; - font-weight: bold; -} -.sidebar a.designer-name:link, .sidebar a.designer-name:visited { - border-left: none; - padding-left: 0px; - font-weight: normal; - color: #FFF; -} -.sidebar a.designer-name:hover, .sidebar a.designer-name:active { - border-left: none; - padding-left: 0px; - color: #FFD800; - text-decoration: none; -} -.sidebar abbr { - border-bottom: 1px #FFF dashed; -} -footer { - clear: both; - text-align: right; - margin: 0px -16em 0px 0px; - padding: 25px 0px 0px 0px; - background-repeat: no-repeat; - background-image: url(signSoph.gif); - background-position: 0% 95%; -} -footer a { - font-size: 70%; - font-family: Impact, Georgia, serif; -} diff --git a/src/mint-lib/mint_api_deposit.c b/src/mint-lib/mint_api_deposit.c index 54131776..bf00ffa2 100644 --- a/src/mint-lib/mint_api_deposit.c +++ b/src/mint-lib/mint_api_deposit.c @@ -312,6 +312,39 @@ verify_signatures (const struct TALER_MINT_DenomPublicKey *dki, &dki->fee_deposit); dr.merchant = *merchant_pub; dr.coin_pub = *coin_pub; + + char *contract_str = GNUNET_STRINGS_data_to_string_alloc (h_contract, + sizeof (struct GNUNET_HashCode)); + char *wire_str = GNUNET_STRINGS_data_to_string_alloc (h_wire, + sizeof (struct GNUNET_HashCode)); + char *merchant_pub_str = GNUNET_STRINGS_data_to_string_alloc (merchant_pub, + sizeof (struct TALER_MerchantPublicKeyP)); + char *coin_pub_str = GNUNET_STRINGS_data_to_string_alloc (coin_pub, + sizeof (struct TALER_CoinSpendPublicKeyP)); + printf ("verifying:\ncontract [%s]\nwire [%s]\n" + "timestamp [%llu]\nrefund deadline [%llu]\n" + "transaction id [%llu]\namount [%s %llu.%lu]\n" + "fee deposit [%s %llu.%lu]\nmerch pub [%s]\n" + "coin pub [%s]\n", + contract_str, + wire_str, + timestamp.abs_value_us, + refund_deadline.abs_value_us, + transaction_id, + amount->currency, + amount->value, + amount->fraction, + dki->fee_deposit.currency, + dki->fee_deposit.value, + dki->fee_deposit.fraction, + merchant_pub_str, + coin_pub_str); + + GNUNET_free (contract_str); + GNUNET_free (wire_str); + GNUNET_free (merchant_pub_str); + GNUNET_free (coin_pub_str); + if (GNUNET_OK != GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_WALLET_COIN_DEPOSIT, &dr.purpose, -- cgit v1.2.3 From 1ca54c5df12dc7fd5e9891b64d3e8eb61848e08e Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 24 Nov 2015 10:56:34 +0100 Subject: Make compiler warning go away False positive about unused variable in GCC 5.2.0. --- src/mint-lib/mint_api_refresh.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/mint-lib') diff --git a/src/mint-lib/mint_api_refresh.c b/src/mint-lib/mint_api_refresh.c index c33d1714..a779bdbc 100644 --- a/src/mint-lib/mint_api_refresh.c +++ b/src/mint-lib/mint_api_refresh.c @@ -676,6 +676,7 @@ serialize_melt_data (const struct MeltData *md, unsigned int j; size = 0; + asize = (size_t) -1; /* make the compiler happy */ buf = NULL; /* we do 2 iterations, #1 to determine total size, #2 to actually construct the buffer */ -- cgit v1.2.3