diff options
Diffstat (limited to 'src/mint')
| -rw-r--r-- | src/mint/taler-mint-httpd_db.c | 9 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_db.h | 4 | ||||
| -rw-r--r-- | src/mint/taler-mint-httpd_refresh.c | 65 | ||||
| -rw-r--r-- | src/mint/taler_mintdb_plugin.h | 15 | 
4 files changed, 7 insertions, 86 deletions
| diff --git a/src/mint/taler-mint-httpd_db.c b/src/mint/taler-mint-httpd_db.c index 7592403d..c18936e1 100644 --- a/src/mint/taler-mint-httpd_db.c +++ b/src/mint/taler-mint-httpd_db.c @@ -494,7 +494,6 @@ refresh_accept_melts (struct MHD_Connection *connection,                        struct TALER_MINTDB_Session *session,                        const struct MintKeyState *key_state,                        const struct GNUNET_HashCode *session_hash, -                      const struct TALER_SessionPublicKey *session_pub,                        const struct TALER_CoinPublicInfo *coin_public_info,                        const struct MeltDetails *coin_details,                        uint16_t oldcoin_index) @@ -587,9 +586,6 @@ refresh_accept_melts (struct MHD_Connection *connection,   *   * @param connection the MHD connection to handle   * @param session_hash hash code of the session the coins are melted into - * @param refresh_session_pub public key of the refresh session - * @param client_signature signature of the client (matching @a refresh_session_pub) - *         over the melting request   * @param num_new_denoms number of entries in @a denom_pubs, size of y-dimension of @commit_coin array   * @param denum_pubs public keys of the coins we want to withdraw in the end   * @param coin_count number of entries in @a coin_public_infos and @a coin_melt_details, size of y-dimension of @commit_link array @@ -606,8 +602,6 @@ refresh_accept_melts (struct MHD_Connection *connection,  int  TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,                                      const struct GNUNET_HashCode *session_hash, -                                    const struct TALER_SessionPublicKey *refresh_session_pub, -                                    const struct TALER_SessionSignature *client_signature,                                      unsigned int num_new_denoms,                                      const struct TALER_DenominationPublicKey *denom_pubs,                                      unsigned int coin_count, @@ -665,7 +659,6 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,                                       session,                                       key_state,                                       session_hash, -                                     refresh_session_pub,                                       &coin_public_infos[i],                                       &coin_melt_details[i],                                       i))) @@ -724,8 +717,6 @@ TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,    /* store 'global' session data */ -  refresh_session.melt_sig = *client_signature; -  refresh_session.refresh_session_pub = *refresh_session_pub;    refresh_session.num_oldcoins = coin_count;    refresh_session.num_newcoins = num_new_denoms;    refresh_session.kappa = KAPPA; // FIXME... (#3711) diff --git a/src/mint/taler-mint-httpd_db.h b/src/mint/taler-mint-httpd_db.h index edf8248c..ed96bbd4 100644 --- a/src/mint/taler-mint-httpd_db.h +++ b/src/mint/taler-mint-httpd_db.h @@ -108,8 +108,6 @@ struct MeltDetails   *   * @param connection the MHD connection to handle   * @param session_hash hash code of the session the coins are melted into - * @param client_signature signature of the client (matching @a refresh_session_pub) - *         over the melting request   * @param num_new_denoms number of entries in @a denom_pubs, size of y-dimension of @commit_coin array   * @param denum_pubs array of public denomination keys for the refresh (?)   * @param coin_count number of entries in @a coin_public_infos and @ a coin_melt_details, size of y-dimension of @commit_link array @@ -126,8 +124,6 @@ struct MeltDetails  int  TALER_MINT_db_execute_refresh_melt (struct MHD_Connection *connection,                                      const struct GNUNET_HashCode *session_hash, -                                    const struct TALER_SessionPublicKey *refresh_session_pub, -                                    const struct TALER_SessionSignature *client_signature,                                      unsigned int num_new_denoms,                                      const struct TALER_DenominationPublicKey *denom_pubs,                                      unsigned int coin_count, diff --git a/src/mint/taler-mint-httpd_refresh.c b/src/mint/taler-mint-httpd_refresh.c index 775ffd4c..6575f02c 100644 --- a/src/mint/taler-mint-httpd_refresh.c +++ b/src/mint/taler-mint-httpd_refresh.c @@ -40,13 +40,12 @@   * and then hand things of to execute the melt operation.   *   * @param connection the MHD connection to handle - * @param refresh_session_pub public key of the melt operation   * @param num_new_denoms number of coins to be created, size of y-dimension of @commit_link array   * @param denom_pubs array of @a num_new_denoms keys   * @param coin_count number of coins to be melted, size of y-dimension of @commit_coin array   * @param coin_public_infos array with @a coin_count entries about the coins   * @param coin_melt_details array with @a coin_count entries with melting details - * @param commit_hash hash over the data that the client commits to + * @param session_hash hash over the data that the client commits to   * @param commit_client_sig signature of the client over this commitment   * @param kappa size of x-dimension of @commit_coin and @commit_link arrays   * @param commit_coin 2d array of coin commitments (what the mint is to sign @@ -58,21 +57,18 @@   */  static int  handle_refresh_melt_binary (struct MHD_Connection *connection, -                            const struct TALER_SessionPublicKey *refresh_session_pub,                              unsigned int num_new_denoms,                              const struct TALER_DenominationPublicKey *denom_pubs,                              unsigned int coin_count,                              struct TALER_CoinPublicInfo *coin_public_infos,                              const struct MeltDetails *coin_melt_details, -                            const struct GNUNET_HashCode *commit_hash, -                            const struct TALER_SessionSignature *commit_client_sig, +                            const struct GNUNET_HashCode *session_hash,                              unsigned int kappa,                              struct RefreshCommitCoin *const* commit_coin,                              struct RefreshCommitLink *const* commit_link)  {    unsigned int i; -  struct RefreshMeltSessionSignature body;    struct MintKeyState *key_state;    struct TALER_MINT_DenomKeyIssue *dki;    struct TALER_Amount cost; @@ -83,27 +79,6 @@ handle_refresh_melt_binary (struct MHD_Connection *connection,    struct TALER_Amount fee_melt;    struct TALER_Amount total_melt; -  /* check that signature from the session public key is ok */ -  body.purpose.purpose = htonl (TALER_SIGNATURE_REFRESH_MELT_SESSION); -  body.purpose.size = htonl (sizeof (struct RefreshMeltSessionSignature)); -  body.melt_hash = *commit_hash; -  TALER_amount_hton (&body.amount_with_fee, -                     &coin_melt_details->melt_amount_with_fee); - -  if (GNUNET_OK != -      GNUNET_CRYPTO_eddsa_verify (TALER_SIGNATURE_REFRESH_MELT_SESSION, -                                  &body.purpose, -                                  &commit_client_sig->eddsa_signature, -                                  &refresh_session_pub->eddsa_pub)) -  { -    GNUNET_log (GNUNET_ERROR_TYPE_WARNING, -                "signature invalid (did not verify)\n"); -    return TALER_MINT_reply_json_pack (connection, -                                       MHD_HTTP_UNAUTHORIZED, -                                       "{s:s}", -                                       "error", -                                       "invalid signature (verification)"); -  }    GNUNET_assert (GNUNET_OK ==                   TALER_amount_get_zero (MINT_CURRENCY,                                          &total_cost)); @@ -174,9 +149,7 @@ handle_refresh_melt_binary (struct MHD_Connection *connection,                                         "error", "value mismatch");    }    return TALER_MINT_db_execute_refresh_melt (connection, -                                             commit_hash, -                                             refresh_session_pub, -                                             commit_client_sig, +                                             session_hash,                                               num_new_denoms,                                               denom_pubs,                                               coin_count, @@ -382,7 +355,6 @@ free_commit_links (struct RefreshCommitLink **commit_link,   * #handle_refresh_melt_binary().   *   * @param connection the MHD connection to handle - * @param refresh_session_pub public key of the melt operation   * @param new_denoms array of denomination keys   * @param melt_coins array of coins to melt   * @param melt_sig_json signature affirming the melt operation @@ -398,7 +370,6 @@ free_commit_links (struct RefreshCommitLink **commit_link,   */  static int  handle_refresh_melt_json (struct MHD_Connection *connection, -                          const struct TALER_SessionPublicKey *refresh_session_pub,                            const json_t *new_denoms,                            const json_t *melt_coins,                            const json_t *melt_sig_json, @@ -420,19 +391,14 @@ handle_refresh_melt_json (struct MHD_Connection *connection,    struct TALER_CoinPublicInfo *coin_public_infos;    struct MeltDetails *coin_melt_details;    unsigned int coin_count; -  struct GNUNET_HashCode commit_hash; +  struct GNUNET_HashCode session_hash;    struct GNUNET_HashContext *hash_context;    struct RefreshCommitCoin *commit_coin[kappa];    struct RefreshCommitLink *commit_link[kappa]; -  const struct TALER_SessionSignature commit_client_sig;    /* For the signature check, we hash most of the inputs together       (except for the signatures on the coins). */    hash_context = GNUNET_CRYPTO_hash_context_start (); -  GNUNET_CRYPTO_hash_context_read (hash_context, -                                   refresh_session_pub, -                                   sizeof (struct TALER_SessionPublicKey)); -    num_new_denoms = json_array_size (new_denoms);    denom_pubs = GNUNET_malloc (num_new_denoms *                                sizeof (struct TALER_DenominationPublicKey)); @@ -625,25 +591,13 @@ handle_refresh_melt_json (struct MHD_Connection *connection,    }    GNUNET_CRYPTO_hash_context_finish (hash_context, -                                     &commit_hash); - -  res = GNUNET_MINT_parse_navigate_json (connection, -                                         commit_signature, -                                         JNAV_FIELD, -                                         "sig", -                                         JNAV_RET_DATA, -                                         &commit_client_sig, -                                         sizeof (struct TALER_SessionSignature)); - -  if (GNUNET_OK != res) -    return (GNUNET_NO == res) ? MHD_YES : MHD_NO; - +                                     &session_hash);    for (i=0;i<coin_count;i++)    {      /* verify signatures on coins to melt */      res = verify_coin_public_info (connection, -                                   &commit_hash, +                                   &session_hash,                                     &coin_public_infos[i],                                     &coin_melt_details[i]);      if (GNUNET_OK != res) @@ -655,14 +609,12 @@ handle_refresh_melt_json (struct MHD_Connection *connection,    /* execute commit */    res = handle_refresh_melt_binary (connection, -                                    refresh_session_pub,                                      num_new_denoms,                                      denom_pubs,                                      coin_count,                                      coin_public_infos,                                      coin_melt_details, -                                    &commit_hash, -                                    &commit_client_sig, +                                    &session_hash,                                      kappa,                                      commit_coin,                                      commit_link); @@ -716,10 +668,8 @@ TALER_MINT_handler_refresh_melt (struct RequestHandler *rh,    unsigned int num_oldcoins;    unsigned int num_newcoins;    json_t *coin_detail; -  struct TALER_SessionPublicKey refresh_session_pub;    int res;    struct GNUNET_MINT_ParseFieldSpec spec[] = { -    TALER_MINT_PARSE_FIXED ("session_pub", &refresh_session_pub),      TALER_MINT_PARSE_ARRAY ("new_denoms", &new_denoms),      TALER_MINT_PARSE_ARRAY ("melt_coins", &melt_coins),      TALER_MINT_PARSE_ARRAY ("melt_signature", &melt_sig_json), @@ -787,7 +737,6 @@ TALER_MINT_handler_refresh_melt (struct RequestHandler *rh,    num_oldcoins = json_array_size (coin_detail);    res = handle_refresh_melt_json (connection, -                                  &refresh_session_pub,                                    new_denoms,                                    melt_coins,                                    melt_sig_json, diff --git a/src/mint/taler_mintdb_plugin.h b/src/mint/taler_mintdb_plugin.h index 326737e6..d461413f 100644 --- a/src/mint/taler_mintdb_plugin.h +++ b/src/mint/taler_mintdb_plugin.h @@ -235,21 +235,6 @@ struct Deposit   */  struct RefreshSession  { -  /** -   * Signature over the commitments by the client. -   */ -  struct TALER_SessionSignature commit_sig; - -  /** -   * Public key the client uses to sign messages in -   * this exchange. -   */ -  struct TALER_SessionPublicKey refresh_session_pub; - -  /** -   * Signature over the melt by the client. -   */ -  struct TALER_SessionSignature melt_sig;    /**     * Number of coins we are melting. | 
