diff options
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/exchange_api_age_withdraw.c | 21 | ||||
| -rw-r--r-- | src/lib/exchange_api_age_withdraw_reveal.c | 10 | 
2 files changed, 18 insertions, 13 deletions
| diff --git a/src/lib/exchange_api_age_withdraw.c b/src/lib/exchange_api_age_withdraw.c index f510bdba..f47736c0 100644 --- a/src/lib/exchange_api_age_withdraw.c +++ b/src/lib/exchange_api_age_withdraw.c @@ -346,6 +346,7 @@ reserve_age_withdraw_ok (      return GNUNET_SYSERR;    } +    awbh->callback (awbh->callback_cls,                    &response);    /* make sure the callback isn't called again */ @@ -780,7 +781,7 @@ copy_results (    const struct TALER_EXCHANGE_AgeWithdrawBlindedResponse *awbr)  {    struct TALER_EXCHANGE_AgeWithdrawHandle *awh = cls; -  uint8_t idx =  awbr->details.ok.noreveal_index; +  uint8_t k =  awbr->details.ok.noreveal_index;    struct TALER_EXCHANGE_AgeWithdrawCoinPrivateDetails details[awh->num_coins];    struct TALER_BlindedCoinHashP blinded_coin_hs[awh->num_coins];    struct TALER_EXCHANGE_AgeWithdrawResponse resp = { @@ -797,9 +798,9 @@ copy_results (    for (size_t n = 0; n< awh->num_coins; n++)    { -    details[n] = awh->coin_data[n].coin_candidates[idx].details; -    details[n].planchet = awh->coin_data[n].planchet_details[idx]; -    blinded_coin_hs[n] = awh->coin_data[n].coin_candidates[idx].blinded_coin_h; +    details[n] = awh->coin_data[n].coin_candidates[k].details; +    details[n].planchet = awh->coin_data[n].planchet_details[k]; +    blinded_coin_hs[n] = awh->coin_data[n].coin_candidates[k].blinded_coin_h;    }    awh->callback (awh->callback_cls, @@ -824,9 +825,9 @@ call_age_withdraw_blinded (    for (size_t n = 0; n < awh->num_coins; n++)    {      blinded_input[n].denom_pub = &awh->coin_data[n].denom_pub; -    for (uint8_t i = 0; i < TALER_CNC_KAPPA; i++) -      blinded_input[n].planchet_details[i] = -        awh->coin_data[n].planchet_details[i]; +    for (uint8_t k = 0; k < TALER_CNC_KAPPA; k++) +      blinded_input[n].planchet_details[k] = +        awh->coin_data[n].planchet_details[k];    }    awh->procotol_handle = @@ -918,6 +919,8 @@ csr_withdraw_done (        bool success = false;        /* Complete the initialization of the coin with CS denomination */        can->details.alg_values = csrr->details.ok.alg_values; +      GNUNET_assert (can->details.alg_values.cipher +                     == TALER_DENOMINATION_CS);        TALER_planchet_setup_coin_priv (&can->secret,                                        &can->details.alg_values,                                        &can->details.coin_priv); @@ -950,7 +953,6 @@ csr_withdraw_done (            TALER_EXCHANGE_age_withdraw_cancel (awh);            break;          } -          success = true;        } while(0); @@ -1023,7 +1025,6 @@ prepare_coins (        struct TALER_PlanchetDetail *planchet = &cd->planchet_details[k];        can->secret = input->secrets[k]; -        /* Derive the age restriction from the given secret and         * the maximum age */        FAIL_IF (GNUNET_OK != @@ -1063,6 +1064,8 @@ prepare_coins (          }        case TALER_DENOMINATION_CS:          { +          can->details.alg_values.cipher = TALER_DENOMINATION_CS; +            struct CSRClosure *cls = &cd->csr_cls[k];            /**             * Save the handler and the denomination for the callback diff --git a/src/lib/exchange_api_age_withdraw_reveal.c b/src/lib/exchange_api_age_withdraw_reveal.c index 1e804bc8..a448d109 100644 --- a/src/lib/exchange_api_age_withdraw_reveal.c +++ b/src/lib/exchange_api_age_withdraw_reveal.c @@ -118,17 +118,18 @@ age_withdraw_reveal_ok (    {      struct TALER_BlindedDenominationSignature denom_sigs[awrh->num_coins]; +    json_t *j_sig; +    size_t n;      /* Reconstruct the coins and unblind the signatures */ -    for (size_t n = 0; n < awrh->num_coins; n++) +    json_array_foreach (j_sigs, n, j_sig)      { -      json_t *j_sig = json_array_get (j_sigs, n);        struct GNUNET_JSON_Specification spec[] = { -        GNUNET_JSON_spec_fixed_auto ("", &denom_sigs[n]), +        TALER_JSON_spec_blinded_denom_sig (NULL, +                                           &denom_sigs[n]),          GNUNET_JSON_spec_end ()        }; -      GNUNET_assert (NULL != j_sig);        if (GNUNET_OK != GNUNET_JSON_parse (j_sig,                                            spec,                                            NULL, NULL)) @@ -136,6 +137,7 @@ age_withdraw_reveal_ok (          GNUNET_break_op (0);          return GNUNET_SYSERR;        } +      }      response.details.ok.num_sigs = awrh->num_coins; | 
