diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-03-19 15:23:11 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-03-19 15:23:11 +0100 |
commit | 0d1eced630f4ed05ad95fdbb4354fd428c9cdbf6 (patch) | |
tree | 0ed4d6f189ed72287a0e003446c87a2b6db70c1a /src/exchange-tools/taler-exchange-sepa.c | |
parent | d229f78da3b0b7f851d3541f59651b4f600c879d (diff) | |
download | exchange-0d1eced630f4ed05ad95fdbb4354fd428c9cdbf6.tar.xz |
first refactoring of JSON logic to address #4150 and #4237
Diffstat (limited to 'src/exchange-tools/taler-exchange-sepa.c')
-rw-r--r-- | src/exchange-tools/taler-exchange-sepa.c | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/src/exchange-tools/taler-exchange-sepa.c b/src/exchange-tools/taler-exchange-sepa.c index a3ac95436..1bfb49132 100644 --- a/src/exchange-tools/taler-exchange-sepa.c +++ b/src/exchange-tools/taler-exchange-sepa.c @@ -20,6 +20,7 @@ */ #include <platform.h> #include <jansson.h> +#include <gnunet/gnunet_json_lib.h> #include "taler_crypto_lib.h" #include "taler_signatures.h" @@ -35,6 +36,11 @@ static char *masterkeyfile; static char *sepa_name; /** + * Account holder address. + */ +static char *sepa_address; + +/** * IBAN number. */ static char *iban; @@ -63,6 +69,9 @@ main (int argc, char *const *argv) { static const struct GNUNET_GETOPT_CommandLineOption options[] = { + {'a', "address", "ADDRESS", + "account holder address", 1, + &GNUNET_GETOPT_set_string, &sepa_address}, {'b', "bic", "BICCODE", "bank BIC code", 1, &GNUNET_GETOPT_set_string, &bic}, @@ -88,6 +97,7 @@ main (int argc, struct GNUNET_HashContext *hc; json_t *reply; char *json_str; + struct GNUNET_HashCode salt; GNUNET_assert (GNUNET_OK == GNUNET_log_setup ("taler-exchange-sepa", @@ -112,8 +122,20 @@ main (int argc, masterkeyfile); return 1; } + if ( (NULL == sepa_address) || + (NULL == iban) || + (NULL == sepa_name) || + (NULL == bic) ) + { + fprintf (stderr, + "Required arguments missing\n"); + return 1; + } /* Compute message to sign */ + GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE, + &salt, + sizeof (salt)); hc = GNUNET_CRYPTO_hash_context_start (); GNUNET_CRYPTO_hash_context_read (hc, sepa_name, @@ -132,27 +154,31 @@ main (int argc, &wsd.purpose, &sig.eddsa_signature); GNUNET_free (eddsa_priv); - + /* build JSON message */ - reply = json_pack ("{s:s, s:s, s:s, s:o}", + reply = json_pack ("{s:s, s:s, s:s, s:s, s:s, s:o, s:o}", + "type", "sepa", + "address", sepa_address, "receiver_name", sepa_name, "iban", iban, "bic", bic, - "sig", TALER_json_from_data (&sig, - sizeof (sig))); + "salt", GNUNET_JSON_from_data (&salt, + sizeof (salt)), + "sig", GNUNET_JSON_from_data (&sig, + sizeof (sig))); GNUNET_assert (NULL != reply); /* dump result to stdout */ json_str = json_dumps (reply, JSON_INDENT(2)); GNUNET_assert (NULL != json_str); - + if (NULL != output_filename) { fclose (stdout); stdout = fopen (output_filename, "w+"); } - fprintf (stdout, + fprintf (stdout, "%s", json_str); fflush (stdout); |