aboutsummaryrefslogtreecommitdiff
path: root/src/lib/mint_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/mint_api.c')
-rw-r--r--src/lib/mint_api.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/lib/mint_api.c b/src/lib/mint_api.c
index 10f4e48b4..b69ebe1ec 100644
--- a/src/lib/mint_api.c
+++ b/src/lib/mint_api.c
@@ -343,6 +343,8 @@ parse_json_denomkey (struct TALER_MINT_DenomPublicKey **_denom_key,
343 const char *withdraw_valid_until_enc; 343 const char *withdraw_valid_until_enc;
344 const char *valid_from_enc; 344 const char *valid_from_enc;
345 const char *key_enc; 345 const char *key_enc;
346 char *buf;
347 size_t buf_size;
346 struct TALER_MINT_DenomPublicKey *denom_key; 348 struct TALER_MINT_DenomPublicKey *denom_key;
347 struct GNUNET_TIME_Absolute valid_from; 349 struct GNUNET_TIME_Absolute valid_from;
348 struct GNUNET_TIME_Absolute withdraw_valid_until; 350 struct GNUNET_TIME_Absolute withdraw_valid_until;
@@ -366,19 +368,29 @@ parse_json_denomkey (struct TALER_MINT_DenomPublicKey **_denom_key,
366 EXITIF (NULL == (withdraw_valid_until_enc = json_string_value (obj))); 368 EXITIF (NULL == (withdraw_valid_until_enc = json_string_value (obj)));
367 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "stamp_start"))); 369 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "stamp_start")));
368 EXITIF (NULL == (valid_from_enc = json_string_value (obj))); 370 EXITIF (NULL == (valid_from_enc = json_string_value (obj)));
371
369 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "denom_pub"))); 372 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "denom_pub")));
370 EXITIF (NULL == (key_enc = json_string_value (obj))); 373 EXITIF (NULL == (key_enc = json_string_value (obj)));
371 EXITIF (52 != strlen (key_enc)); /* strlen(base32(char[32])) = 52 */ 374
372 EXITIF (GNUNET_SYSERR == parse_timestamp (&valid_from, valid_from_enc)); 375 EXITIF (GNUNET_SYSERR == parse_timestamp (&valid_from, valid_from_enc));
373 EXITIF (GNUNET_SYSERR == parse_timestamp (&withdraw_valid_until, 376 EXITIF (GNUNET_SYSERR == parse_timestamp (&withdraw_valid_until,
374 withdraw_valid_until_enc)); 377 withdraw_valid_until_enc));
375 EXITIF (GNUNET_SYSERR == parse_timestamp (&deposit_valid_until, 378 EXITIF (GNUNET_SYSERR == parse_timestamp (&deposit_valid_until,
376 deposit_valid_until_enc)); 379 deposit_valid_until_enc));
377 380
378 (void) memset (&denom_key_issue, 0, sizeof (denom_key_issue)); 381 memset (&denom_key_issue, 0, sizeof (denom_key_issue));
379 EXITIF (GNUNET_OK != GNUNET_STRINGS_string_to_data (key_enc, 52, 382
380 &denom_key_issue.denom_pub, 383 buf_size = (strlen (key_enc) * 5) / 8;
381 sizeof (struct TALER_RSA_PublicKeyBinaryEncoded))); 384 buf = GNUNET_malloc (buf_size);
385
386 EXITIF (GNUNET_OK !=
387 GNUNET_STRINGS_string_to_data (key_enc, strlen (key_enc),
388 buf,
389 buf_size));
390 denom_key_issue.denom_pub = GNUNET_CRYPTO_rsa_public_key_decode (buf, buf_size);
391 GNUNET_free (buf);
392 EXITIF (NULL == denom_key_issue.denom_pub);
393
382 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "value"))); 394 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "value")));
383 EXITIF (GNUNET_SYSERR == parse_json_amount (obj, &value)); 395 EXITIF (GNUNET_SYSERR == parse_json_amount (obj, &value));
384 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "fee_withdraw"))); 396 EXITIF (NULL == (obj = json_object_get (denom_key_obj, "fee_withdraw")));
@@ -420,6 +432,7 @@ parse_json_denomkey (struct TALER_MINT_DenomPublicKey **_denom_key,
420 return GNUNET_SYSERR; 432 return GNUNET_SYSERR;
421} 433}
422 434
435
423static int 436static int
424parse_response_keys_get (const char *in, size_t size, 437parse_response_keys_get (const char *in, size_t size,
425 struct TALER_MINT_SigningPublicKey ***_sign_keys, 438 struct TALER_MINT_SigningPublicKey ***_sign_keys,