diff options
Diffstat (limited to 'src/lib/mint_api.c')
-rw-r--r-- | src/lib/mint_api.c | 23 |
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 | |||
423 | static int | 436 | static int |
424 | parse_response_keys_get (const char *in, size_t size, | 437 | parse_response_keys_get (const char *in, size_t size, |
425 | struct TALER_MINT_SigningPublicKey ***_sign_keys, | 438 | struct TALER_MINT_SigningPublicKey ***_sign_keys, |