diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mint/taler-mint-httpd_admin.c | 2 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_deposit.c | 10 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_parsing.c | 88 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_parsing.h | 15 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_refresh.c | 8 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_test.c | 54 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_withdraw.c | 10 | 
7 files changed, 105 insertions, 82 deletions
diff --git a/src/mint/taler-mint-httpd_admin.c b/src/mint/taler-mint-httpd_admin.c index 6928dac8..c757fd18 100644 --- a/src/mint/taler-mint-httpd_admin.c +++ b/src/mint/taler-mint-httpd_admin.c @@ -113,7 +113,7 @@ TMH_ADMIN_handler_admin_add_incoming (struct TMH_RequestHandler *rh,    json_t *wire;    json_t *root;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_FIXED ("reserve_pub", &reserve_pub), +    TMH_PARSE_member_fixed ("reserve_pub", &reserve_pub),      TMH_PARSE_member_amount ("amount", &amount),      TMH_PARSE_member_time_abs ("execution_date", &at),      TMH_PARSE_member_object ("wire", &wire), diff --git a/src/mint/taler-mint-httpd_deposit.c b/src/mint/taler-mint-httpd_deposit.c index 7d9ace00..5725cd1c 100644 --- a/src/mint/taler-mint-httpd_deposit.c +++ b/src/mint/taler-mint-httpd_deposit.c @@ -139,11 +139,11 @@ parse_and_handle_deposit_request (struct MHD_Connection *connection,    struct TMH_PARSE_FieldSpecification spec[] = {      TMH_PARSE_member_denomination_public_key ("denom_pub", &deposit.coin.denom_pub),      TMH_PARSE_member_denomination_signature ("ub_sig", &deposit.coin.denom_sig), -    TMH_PARSE_MEMBER_FIXED ("coin_pub", &deposit.coin.coin_pub), -    TMH_PARSE_MEMBER_FIXED ("merchant_pub", &deposit.merchant_pub), -    TMH_PARSE_MEMBER_FIXED ("H_contract", &deposit.h_contract), -    TMH_PARSE_MEMBER_FIXED ("H_wire", &deposit.h_wire), -    TMH_PARSE_MEMBER_FIXED ("coin_sig",  &deposit.csig), +    TMH_PARSE_member_fixed ("coin_pub", &deposit.coin.coin_pub), +    TMH_PARSE_member_fixed ("merchant_pub", &deposit.merchant_pub), +    TMH_PARSE_member_fixed ("H_contract", &deposit.h_contract), +    TMH_PARSE_member_fixed ("H_wire", &deposit.h_wire), +    TMH_PARSE_member_fixed ("coin_sig",  &deposit.csig),      TMH_PARSE_member_uint64 ("transaction_id", &deposit.transaction_id),      TMH_PARSE_member_time_abs ("timestamp", &deposit.timestamp),      TMH_PARSE_member_time_abs ("refund_deadline", &deposit.refund_deadline), diff --git a/src/mint/taler-mint-httpd_parsing.c b/src/mint/taler-mint-httpd_parsing.c index 9e7287f2..8d7903eb 100644 --- a/src/mint/taler-mint-httpd_parsing.c +++ b/src/mint/taler-mint-httpd_parsing.c @@ -167,11 +167,11 @@ release_data (struct TMH_PARSE_FieldSpecification *spec,      case TMH_PARSE_JNC_RET_DATA:        break;      case TMH_PARSE_JNC_RET_DATA_VAR: -      if (0 != spec[i].destination_size_out) +      if (NULL != spec[i].destination)        { -        GNUNET_free (spec[i].destination); -        spec[i].destination = NULL; -        spec[i].destination_size_out = 0; +        GNUNET_free (* (void**) spec[i].destination); +        *(void**) spec[i].destination = NULL; +        *spec[i].destination_size_out = 0;        }        break;      case TMH_PARSE_JNC_RET_TYPED_JSON: @@ -490,7 +490,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:s, s:o}", +                                               "{s:s, s:s, s:O}",                                                 "error", "missing field in JSON",                                                 "field", fname,                                                 "path", path)) @@ -513,7 +513,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "missing index in JSON",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -529,14 +529,13 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,          const char *str;          int res; -        // FIXME: avoidable code duplication here...          str = json_string_value (root);          if (NULL == str)          {            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                               MHD_HTTP_BAD_REQUEST, -                                             "{s:s, s:o}", +                                             "{s:s, s:O}",                                               "error", "string expected",                                               "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -549,7 +548,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "malformed binary data in JSON",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -564,8 +563,8 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,          void **where = va_arg (argp, void **);          size_t *len = va_arg (argp, size_t *);          const char *str; +        int res; -        // FIXME: avoidable code duplication here...          str = json_string_value (root);          if (NULL == str)          { @@ -578,8 +577,6 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,          *len = (strlen (str) * 5) / 8;          if (NULL != where)          { -          int res; -            *where = GNUNET_malloc (*len);            res = GNUNET_STRINGS_string_to_data (str,                                                 strlen (str), @@ -593,7 +590,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,              ret = (MHD_YES ==                     TMH_RESPONSE_reply_json_pack (connection,                                                   MHD_HTTP_BAD_REQUEST, -                                                 "{s:s, s:o}", +                                                 "{s:s, s:O}",                                                   "error", "malformed binary data in JSON",                                                   "path", path))                ? GNUNET_NO : GNUNET_SYSERR; @@ -615,7 +612,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:i, s:i, s:o}", +                                               "{s:s, s:i, s:i, s:O}",                                                 "error", "wrong JSON field type",                                                 "type_expected", typ,                                                 "type_actual", json_typeof (root), @@ -638,7 +635,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:s, s:i, s:o}", +                                               "{s:s, s:s, s:i, s:O}",                                                 "error", "wrong JSON field type",                                                 "type_expected", "integer",                                                 "type_actual", json_typeof (root), @@ -667,7 +664,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "string expected",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -685,7 +682,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "malformed binary data in JSON",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -699,7 +696,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "malformed RSA public key in JSON",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -725,7 +722,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "string expected",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -743,7 +740,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "malformed binary data in JSON",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -757,7 +754,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            ret = (MHD_YES ==                   TMH_RESPONSE_reply_json_pack (connection,                                                 MHD_HTTP_BAD_REQUEST, -                                               "{s:s, s:o}", +                                               "{s:s, s:O}",                                                 "error", "malformed RSA signature in JSON",                                                 "path", path))              ? GNUNET_NO : GNUNET_SYSERR; @@ -778,7 +775,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            if (MHD_YES !=                TMH_RESPONSE_reply_json_pack (connection,                                              MHD_HTTP_BAD_REQUEST, -                                            "{s:s, s:o}", +                                            "{s:s, s:O}",                                              "error", "Bad format",                                              "path", path))              return GNUNET_SYSERR; @@ -790,7 +787,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            if (MHD_YES !=                TMH_RESPONSE_reply_json_pack (connection,                                              MHD_HTTP_BAD_REQUEST, -                                            "{s:s, s:o, s:s}", +                                            "{s:s, s:O, s:s}",                                              "error", "Currency not supported",                                              "path", path,                                              "currency", where->currency)) @@ -816,7 +813,7 @@ TMH_PARSE_navigate_json (struct MHD_Connection *connection,            if (MHD_YES !=                TMH_RESPONSE_reply_json_pack (connection,                                              MHD_HTTP_BAD_REQUEST, -                                            "{s:s, s:s, s:o}", +                                            "{s:s, s:s, s:O}",                                              "error", "Bad format",                                              "hint", "expected absolute time",                                              "path", path)) @@ -863,7 +860,6 @@ TMH_PARSE_json_data (struct MHD_Connection *connection,  {    unsigned int i;    int ret; -  void *ptr;    ret = GNUNET_YES;    for (i=0; NULL != spec[i].field_name; i++) @@ -888,26 +884,22 @@ TMH_PARSE_json_data (struct MHD_Connection *connection,                                       spec[i].destination_size_in);        break;      case TMH_PARSE_JNC_RET_DATA_VAR: -      ptr = NULL;        ret = TMH_PARSE_navigate_json (connection,                                       root,                                       TMH_PARSE_JNC_FIELD,                                       spec[i].field_name,                                       TMH_PARSE_JNC_RET_DATA_VAR, -                                     &ptr, -                                     &spec[i].destination_size_out); -      spec[i].destination = ptr; +                                     (void **) spec[i].destination, +                                     spec[i].destination_size_out);        break;      case TMH_PARSE_JNC_RET_TYPED_JSON: -      ptr = NULL;        ret = TMH_PARSE_navigate_json (connection,                                       root,                                       TMH_PARSE_JNC_FIELD,                                       spec[i].field_name,                                       TMH_PARSE_JNC_RET_TYPED_JSON,                                       spec[i].type, -                                     &ptr); -      *((void**)spec[i].destination) = ptr; +                                     &spec[i].destination);        break;      case TMH_PARSE_JNC_RET_RSA_PUBLIC_KEY:        ret = TMH_PARSE_navigate_json (connection, @@ -993,7 +985,7 @@ TMH_PARSE_member_uint64 (const char *field,                           uint64_t *u64)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, (void *) u64, sizeof (uint64_t), 0, TMH_PARSE_JNC_RET_UINT64, 0 }; +    { field, (void *) u64, sizeof (uint64_t), NULL, TMH_PARSE_JNC_RET_UINT64, 0 };    return ret;  } @@ -1010,7 +1002,7 @@ TMH_PARSE_member_object (const char *field,                           json_t **jsonp)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, (void **) jsonp, 0, 0, TMH_PARSE_JNC_RET_TYPED_JSON, JSON_OBJECT }; +    { field, (void **) jsonp, 0, NULL, TMH_PARSE_JNC_RET_TYPED_JSON, JSON_OBJECT };    return ret;  } @@ -1027,7 +1019,7 @@ TMH_PARSE_member_array (const char *field,                          json_t **jsonp)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, jsonp, 0, 0, TMH_PARSE_JNC_RET_TYPED_JSON, JSON_ARRAY }; +    { field, jsonp, 0, NULL, TMH_PARSE_JNC_RET_TYPED_JSON, JSON_ARRAY };    return ret;  } @@ -1043,7 +1035,7 @@ TMH_PARSE_member_time_abs (const char *field,                             struct GNUNET_TIME_Absolute *atime)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, atime, sizeof(struct GNUNET_TIME_Absolute), 0, TMH_PARSE_JNC_RET_TIME_ABSOLUTE, 0 }; +    { field, atime, sizeof(struct GNUNET_TIME_Absolute), NULL, TMH_PARSE_JNC_RET_TIME_ABSOLUTE, 0 };    return ret;  } @@ -1060,7 +1052,7 @@ TMH_PARSE_member_denomination_public_key (const char *field,                                            struct TALER_DenominationPublicKey *pk)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, pk, 0, 0, TMH_PARSE_JNC_RET_RSA_PUBLIC_KEY, 0 }; +    { field, pk, 0, NULL, TMH_PARSE_JNC_RET_RSA_PUBLIC_KEY, 0 };    return ret;  } @@ -1077,7 +1069,7 @@ TMH_PARSE_member_denomination_signature (const char *field,                                           struct TALER_DenominationSignature *sig)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, sig, 0, 0, TMH_PARSE_JNC_RET_RSA_SIGNATURE, 0 }; +    { field, sig, 0, NULL, TMH_PARSE_JNC_RET_RSA_SIGNATURE, 0 };    return ret;  } @@ -1094,9 +1086,27 @@ TMH_PARSE_member_amount (const char *field,                           struct TALER_Amount *amount)  {    struct TMH_PARSE_FieldSpecification ret = -    { field, amount, sizeof(struct TALER_Amount), 0, TMH_PARSE_JNC_RET_AMOUNT, 0 }; +    { field, amount, sizeof(struct TALER_Amount), NULL, TMH_PARSE_JNC_RET_AMOUNT, 0 };    return ret;  } +/** + * Generate line in parser specification for variable-size value. + * + * @param field name of the field + * @param[out] ptr pointer to initialize + * @param[out] ptr_size size to initialize + * @return corresponding field spec + */ +struct TMH_PARSE_FieldSpecification +TMH_PARSE_member_variable (const char *field, +                           void **ptr, +                           size_t *ptr_size) +{ +  struct TMH_PARSE_FieldSpecification ret = +    { field, ptr, 0, ptr_size, TMH_PARSE_JNC_RET_DATA_VAR, 0 }; +  return ret; +} +  /* end of taler-mint-httpd_parsing.c */ diff --git a/src/mint/taler-mint-httpd_parsing.h b/src/mint/taler-mint-httpd_parsing.h index 2e036f32..a2cf4c46 100644 --- a/src/mint/taler-mint-httpd_parsing.h +++ b/src/mint/taler-mint-httpd_parsing.h @@ -194,7 +194,7 @@ struct TMH_PARSE_FieldSpecification     * value that was stored in @e destination (useful for     * variable-size allocations).     */ -  size_t destination_size_out; +  size_t *destination_size_out;    /**     * Navigation command to use to extract the value.  Note that @@ -250,14 +250,21 @@ TMH_PARSE_release_data (struct TMH_PARSE_FieldSpecification *spec);   * @param field name of the field   * @param value where to store the value   */ -#define TMH_PARSE_MEMBER_FIXED(field,value) { field, value, sizeof (*value), 0, TMH_PARSE_JNC_RET_DATA, 0 } +#define TMH_PARSE_member_fixed(field,value) { field, value, sizeof (*value), NULL, TMH_PARSE_JNC_RET_DATA, 0 } +  /**   * Generate line in parser specification for variable-size value.   *   * @param field name of the field + * @param[out] ptr pointer to initialize + * @param[out] ptr_size size to initialize + * @return corresponding field spec   */ -#define TMH_PARSE_MEMBER_VARIABLE(field) { field, NULL, 0, 0, TMH_PARSE_JNC_RET_DATA_VAR, 0 } +struct TMH_PARSE_FieldSpecification +TMH_PARSE_member_variable (const char *field, +                           void **ptr, +                           size_t *ptr_size);  /** @@ -349,7 +356,7 @@ TMH_PARSE_member_time_abs (const char *field,  /**   * Generate line in parser specification indicating the end of the spec.   */ -#define TMH_PARSE_MEMBER_END { NULL, NULL, 0, 0, TMH_PARSE_JNC_FIELD, 0 } +#define TMH_PARSE_MEMBER_END { NULL, NULL, 0, NULL, TMH_PARSE_JNC_FIELD, 0 }  /** diff --git a/src/mint/taler-mint-httpd_refresh.c b/src/mint/taler-mint-httpd_refresh.c index b1482272..687fb998 100644 --- a/src/mint/taler-mint-httpd_refresh.c +++ b/src/mint/taler-mint-httpd_refresh.c @@ -173,10 +173,10 @@ get_coin_public_info (struct MHD_Connection *connection,    struct TALER_DenominationPublicKey pk;    struct TALER_Amount amount;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_FIXED ("coin_pub", &r_melt_detail->coin_info.coin_pub), +    TMH_PARSE_member_fixed ("coin_pub", &r_melt_detail->coin_info.coin_pub),      TMH_PARSE_member_denomination_signature ("denom_sig", &sig),      TMH_PARSE_member_denomination_public_key ("denom_pub", &pk), -    TMH_PARSE_MEMBER_FIXED ("confirm_sig", &melt_sig), +    TMH_PARSE_member_fixed ("confirm_sig", &melt_sig),      TMH_PARSE_member_amount ("value_with_fee", &amount),      TMH_PARSE_MEMBER_END    }; @@ -819,7 +819,7 @@ TMH_REFRESH_handler_refresh_reveal (struct TMH_RequestHandler *rh,    json_t *root;    json_t *transfer_privs;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_FIXED ("session_hash", &session_hash), +    TMH_PARSE_member_fixed ("session_hash", &session_hash),      TMH_PARSE_member_array ("transfer_privs", &transfer_privs),      TMH_PARSE_MEMBER_END    }; @@ -842,13 +842,13 @@ TMH_REFRESH_handler_refresh_reveal (struct TMH_RequestHandler *rh,      return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES;    /* Determine dimensionality of the request (kappa and #old coins) */ +  /* Note we do +1 as 1 row (cut-and-choose!) is missing! */    if (TALER_CNC_KAPPA != json_array_size (transfer_privs) + 1)    {      TMH_PARSE_release_data (spec);      return TMH_RESPONSE_reply_arg_invalid (connection,                                             "transfer_privs");    } -  /* Note we do +1 as 1 row (cut-and-choose!) is missing! */    res = TMH_PARSE_navigate_json (connection,                                   transfer_privs,                                   TMH_PARSE_JNC_INDEX, 0, diff --git a/src/mint/taler-mint-httpd_test.c b/src/mint/taler-mint-httpd_test.c index 0c6838ee..b894854f 100644 --- a/src/mint/taler-mint-httpd_test.c +++ b/src/mint/taler-mint-httpd_test.c @@ -59,9 +59,11 @@ TMH_TEST_handler_test_base32 (struct TMH_RequestHandler *rh,  {    json_t *json;    int res; +  void *in_ptr; +  size_t in_ptr_size;    struct GNUNET_HashCode hc;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_VARIABLE ("input"), +    TMH_PARSE_member_variable ("input", &in_ptr, &in_ptr_size),      TMH_PARSE_MEMBER_END    }; @@ -79,8 +81,8 @@ TMH_TEST_handler_test_base32 (struct TMH_RequestHandler *rh,  			     spec);    if (GNUNET_YES != res)      return (GNUNET_NO == res) ? MHD_YES : MHD_NO; -  GNUNET_CRYPTO_hash (spec[0].destination, -		      spec[0].destination_size_out, +  GNUNET_CRYPTO_hash (in_ptr, +		      in_ptr_size,  		      &hc);    TMH_PARSE_release_data (spec);    json_decref (json); @@ -121,9 +123,11 @@ TMH_TEST_handler_test_encrypt (struct TMH_RequestHandler *rh,    struct GNUNET_HashCode key;    struct GNUNET_CRYPTO_SymmetricInitializationVector iv;    struct GNUNET_CRYPTO_SymmetricSessionKey skey; +  void *in_ptr; +  size_t in_ptr_size;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_VARIABLE ("input"), -    TMH_PARSE_MEMBER_FIXED ("key_hash", &key), +    TMH_PARSE_member_variable ("input", &in_ptr, &in_ptr_size), +    TMH_PARSE_member_fixed ("key_hash", &key),      TMH_PARSE_MEMBER_END    };    char *out; @@ -153,15 +157,15 @@ TMH_TEST_handler_test_encrypt (struct TMH_RequestHandler *rh,  				    "iv", strlen ("iv"),  				    &key, sizeof (key),  				    NULL, 0)); -  out = GNUNET_malloc (spec[0].destination_size_out); -  GNUNET_break (spec[0].destination_size_out == -		GNUNET_CRYPTO_symmetric_encrypt (spec[0].destination, -						 spec[0].destination_size_out, +  out = GNUNET_malloc (in_ptr_size); +  GNUNET_break (in_ptr_size == +		GNUNET_CRYPTO_symmetric_encrypt (in_ptr, +						 in_ptr_size,  						 &skey,  						 &iv,  						 out));    json = TALER_json_from_data (out, -			       spec[0].destination_size_out); +			       in_ptr_size);    GNUNET_free (out);    TMH_PARSE_release_data (spec);    return TMH_RESPONSE_reply_json_pack (connection, @@ -199,8 +203,10 @@ TMH_TEST_handler_test_hkdf (struct TMH_RequestHandler *rh,    json_t *json;    int res;    struct GNUNET_HashCode hc; +  void *in_ptr; +  size_t in_ptr_size;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_VARIABLE ("input"), +    TMH_PARSE_member_variable ("input", &in_ptr, &in_ptr_size),      TMH_PARSE_MEMBER_END    }; @@ -221,8 +227,8 @@ TMH_TEST_handler_test_hkdf (struct TMH_RequestHandler *rh,      return (GNUNET_NO == res) ? MHD_YES : MHD_NO;    GNUNET_CRYPTO_kdf (&hc, sizeof (hc),  		     "salty", strlen ("salty"), -		     spec[0].destination, -		     spec[0].destination_size_out, +		     in_ptr, +		     in_ptr_size,  		     NULL, 0);    TMH_PARSE_release_data (spec);    json = TALER_json_from_data (&hc, @@ -262,8 +268,8 @@ TMH_TEST_handler_test_ecdhe (struct TMH_RequestHandler *rh,    struct GNUNET_CRYPTO_EcdhePrivateKey priv;    struct GNUNET_HashCode hc;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_FIXED ("ecdhe_pub", &pub), -    TMH_PARSE_MEMBER_FIXED ("ecdhe_priv", &priv), +    TMH_PARSE_member_fixed ("ecdhe_pub", &pub), +    TMH_PARSE_member_fixed ("ecdhe_priv", &priv),      TMH_PARSE_MEMBER_END    }; @@ -329,8 +335,8 @@ TMH_TEST_handler_test_eddsa (struct TMH_RequestHandler *rh,    struct GNUNET_CRYPTO_EddsaSignature sig;    struct GNUNET_CRYPTO_EccSignaturePurpose purpose;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_FIXED ("eddsa_pub", &pub), -    TMH_PARSE_MEMBER_FIXED ("eddsa_sig", &sig), +    TMH_PARSE_member_fixed ("eddsa_pub", &pub), +    TMH_PARSE_member_fixed ("eddsa_sig", &sig),      TMH_PARSE_MEMBER_END    };    struct GNUNET_CRYPTO_EddsaPrivateKey *pk; @@ -457,8 +463,10 @@ TMH_TEST_handler_test_rsa_sign (struct TMH_RequestHandler *rh,    json_t *json;    int res;    struct GNUNET_CRYPTO_rsa_Signature *sig; +  void *in_ptr; +  size_t in_ptr_size;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_VARIABLE ("blind_ev"), +    TMH_PARSE_member_variable ("blind_ev", &in_ptr, &in_ptr_size),      TMH_PARSE_MEMBER_END    }; @@ -487,8 +495,8 @@ TMH_TEST_handler_test_rsa_sign (struct TMH_RequestHandler *rh,  					      "Failed to create RSA key");    }    sig = GNUNET_CRYPTO_rsa_sign (rsa_pk, -				spec[0].destination, -				spec[0].destination_size_out); +				in_ptr, +				in_ptr_size);    if (NULL == sig)    {      GNUNET_break (0); @@ -534,9 +542,9 @@ TMH_TEST_handler_test_transfer (struct TMH_RequestHandler *rh,    struct TALER_TransferPrivateKeyP trans_priv;    struct TALER_CoinSpendPublicKeyP coin_pub;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_FIXED ("secret_enc", &secret_enc), -    TMH_PARSE_MEMBER_FIXED ("trans_priv", &trans_priv), -    TMH_PARSE_MEMBER_FIXED ("coin_pub", &coin_pub), +    TMH_PARSE_member_fixed ("secret_enc", &secret_enc), +    TMH_PARSE_member_fixed ("trans_priv", &trans_priv), +    TMH_PARSE_member_fixed ("coin_pub", &coin_pub),      TMH_PARSE_MEMBER_END    };    struct TALER_LinkSecretP secret; diff --git a/src/mint/taler-mint-httpd_withdraw.c b/src/mint/taler-mint-httpd_withdraw.c index 589cf0a8..4f558164 100644 --- a/src/mint/taler-mint-httpd_withdraw.c +++ b/src/mint/taler-mint-httpd_withdraw.c @@ -92,7 +92,7 @@ TMH_WITHDRAW_handler_withdraw_sign (struct TMH_RequestHandler *rh,    struct TALER_WithdrawRequestPS wsrd;    int res;    struct TALER_DenominationPublicKey denomination_pub; -  const char *blinded_msg; +  char *blinded_msg;    size_t blinded_msg_len;    struct TALER_Amount amount;    struct TALER_Amount amount_with_fee; @@ -102,9 +102,9 @@ TMH_WITHDRAW_handler_withdraw_sign (struct TMH_RequestHandler *rh,    struct TMH_KS_StateHandle *ks;    struct TMH_PARSE_FieldSpecification spec[] = { -    TMH_PARSE_MEMBER_VARIABLE ("coin_ev"), -    TMH_PARSE_MEMBER_FIXED ("reserve_pub", &wsrd.reserve_pub), -    TMH_PARSE_MEMBER_FIXED ("reserve_sig", &signature), +    TMH_PARSE_member_variable ("coin_ev", (void **) &blinded_msg, &blinded_msg_len), +    TMH_PARSE_member_fixed ("reserve_pub", &wsrd.reserve_pub), +    TMH_PARSE_member_fixed ("reserve_sig", &signature),      TMH_PARSE_member_denomination_public_key ("denom_pub", &denomination_pub),      TMH_PARSE_MEMBER_END    }; @@ -124,8 +124,6 @@ TMH_WITHDRAW_handler_withdraw_sign (struct TMH_RequestHandler *rh,    json_decref (root);    if (GNUNET_OK != res)      return (GNUNET_SYSERR == res) ? MHD_NO : MHD_YES; -  blinded_msg = spec[0].destination; -  blinded_msg_len = spec[0].destination_size_out;    ks = TMH_KS_acquire ();    dki = TMH_KS_denomination_key_lookup (ks,                                          &denomination_pub,  | 
