diff options
-rw-r--r-- | src/exchange/taler-exchange-httpd_keys.c | 26 | ||||
-rw-r--r-- | src/include/taler_crypto_lib.h | 36 | ||||
-rw-r--r-- | src/util/crypto_helper_cs.c | 38 | ||||
-rw-r--r-- | src/util/taler-exchange-secmod-cs.c | 2 | ||||
-rw-r--r-- | src/util/taler-exchange-secmod-rsa.c | 2 | ||||
-rw-r--r-- | src/util/test_helper_cs.c | 39 |
6 files changed, 101 insertions, 42 deletions
diff --git a/src/exchange/taler-exchange-httpd_keys.c b/src/exchange/taler-exchange-httpd_keys.c index 52aa9015c..cf20985c5 100644 --- a/src/exchange/taler-exchange-httpd_keys.c +++ b/src/exchange/taler-exchange-httpd_keys.c @@ -2874,10 +2874,15 @@ TEH_keys_denomination_cs_r_pub_melt ( return TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE; } - return TALER_CRYPTO_helper_cs_r_derive_melt (ksh->helpers->csdh, - &hd->h_details.h_cs, - nonce, - r_pub); + { + struct TALER_CRYPTO_CsDeriveRequest cdr = { + .h_cs = &hd->h_details.h_cs, + .nonce = nonce + }; + return TALER_CRYPTO_helper_cs_r_derive_melt (ksh->helpers->csdh, + &cdr, + r_pub); + } } @@ -2905,11 +2910,16 @@ TEH_keys_denomination_cs_r_pub_withdraw ( { return TALER_EC_GENERIC_INTERNAL_INVARIANT_FAILURE; } + { + struct TALER_CRYPTO_CsDeriveRequest cdr = { + .h_cs = &hd->h_details.h_cs, + .nonce = nonce + }; - return TALER_CRYPTO_helper_cs_r_derive_withdraw (ksh->helpers->csdh, - &hd->h_details.h_cs, - nonce, - r_pub); + return TALER_CRYPTO_helper_cs_r_derive_withdraw (ksh->helpers->csdh, + &cdr, + r_pub); + } } diff --git a/src/include/taler_crypto_lib.h b/src/include/taler_crypto_lib.h index 8027181fd..010a5bc71 100644 --- a/src/include/taler_crypto_lib.h +++ b/src/include/taler_crypto_lib.h @@ -2593,8 +2593,25 @@ TALER_CRYPTO_helper_cs_revoke ( /** - * Ask the helper to derive R using the @a nonce and denomination key - * associated with @a h_cs. + * Information about what we should derive for. + */ +struct TALER_CRYPTO_CsDeriveRequest +{ + /** + * Hash of the CS public key to use to sign. + */ + const struct TALER_CsPubHashP *h_cs; + + /** + * Nonce to use. + */ + const struct TALER_CsNonce *nonce; +}; + + +/** + * Ask the helper to derive R using the information + * from @a cdr. * * This operation will block until the R has been obtained. Should * this process receive a signal (that is not ignored) while the operation is @@ -2603,7 +2620,7 @@ TALER_CRYPTO_helper_cs_revoke ( * differences in the signature counters. Retrying in this case may work. * * @param dh helper to process connection - * @param h_cs hash of the CS public key to revoke + * @param cdr derivation input data * @param nonce witdhraw nonce * @param[out] crp set to the pair of R values * @return set to the error code (or #TALER_EC_NONE on success) @@ -2611,14 +2628,13 @@ TALER_CRYPTO_helper_cs_revoke ( enum TALER_ErrorCode TALER_CRYPTO_helper_cs_r_derive_withdraw ( struct TALER_CRYPTO_CsDenominationHelper *dh, - const struct TALER_CsPubHashP *h_cs, - const struct TALER_CsNonce *nonce, + const struct TALER_CRYPTO_CsDeriveRequest *cdr, struct TALER_DenominationCSPublicRPairP *crp); /** - * Ask the helper to derive R using the @a nonce and denomination key - * associated with @a h_cs. + * Ask the helper to derive R using the information + * from @a cdr. * * This operation will block until the R has been obtained. Should * this process receive a signal (that is not ignored) while the operation is @@ -2627,16 +2643,14 @@ TALER_CRYPTO_helper_cs_r_derive_withdraw ( * differences in the signature counters. Retrying in this case may work. * * @param dh helper to process connection - * @param h_cs hash of the CS public key to revoke - * @param nonce witdhraw nonce + * @param cdr derivation input data * @param[out] crp set to the pair of R values * @return set to the error code (or #TALER_EC_NONE on success) */ enum TALER_ErrorCode TALER_CRYPTO_helper_cs_r_derive_melt ( struct TALER_CRYPTO_CsDenominationHelper *dh, - const struct TALER_CsPubHashP *h_cs, - const struct TALER_CsNonce *nonce, + const struct TALER_CRYPTO_CsDeriveRequest *cdr, struct TALER_DenominationCSPublicRPairP *crp); diff --git a/src/util/crypto_helper_cs.c b/src/util/crypto_helper_cs.c index 66ecb26ad..409903b34 100644 --- a/src/util/crypto_helper_cs.c +++ b/src/util/crypto_helper_cs.c @@ -853,13 +853,12 @@ more: enum TALER_ErrorCode TALER_CRYPTO_helper_cs_r_derive_withdraw ( struct TALER_CRYPTO_CsDenominationHelper *dh, - const struct TALER_CsPubHashP *h_cs, - const struct TALER_CsNonce *nonce, + const struct TALER_CRYPTO_CsDeriveRequest *cdr, struct TALER_DenominationCSPublicRPairP *crp) { return helper_cs_r_derive (dh, - h_cs, - nonce, + cdr->h_cs, + cdr->nonce, false, crp); } @@ -868,18 +867,41 @@ TALER_CRYPTO_helper_cs_r_derive_withdraw ( enum TALER_ErrorCode TALER_CRYPTO_helper_cs_r_derive_melt ( struct TALER_CRYPTO_CsDenominationHelper *dh, - const struct TALER_CsPubHashP *h_cs, - const struct TALER_CsNonce *nonce, + const struct TALER_CRYPTO_CsDeriveRequest *cdr, struct TALER_DenominationCSPublicRPairP *crp) { return helper_cs_r_derive (dh, - h_cs, - nonce, + cdr->h_cs, + cdr->nonce, true, crp); } +enum TALER_ErrorCode +TALER_CRYPTO_helper_cs_batch_sign_melt ( + struct TALER_CRYPTO_CsDenominationHelper *dh, + const struct TALER_CRYPTO_CsSignRequest *reqs, + unsigned int reqs_length, + struct TALER_BlindedDenominationSignature *bss) +{ + GNUNET_break (0); // FIXME + return -1; +} + + +enum TALER_ErrorCode +TALER_CRYPTO_helper_cs_batch_sign_withdraw ( + struct TALER_CRYPTO_CsDenominationHelper *dh, + const struct TALER_CRYPTO_CsSignRequest *reqs, + unsigned int reqs_length, + struct TALER_BlindedDenominationSignature *bss) +{ + GNUNET_break (0); // FIXME + return -1; +} + + void TALER_CRYPTO_helper_cs_disconnect ( struct TALER_CRYPTO_CsDenominationHelper *dh) diff --git a/src/util/taler-exchange-secmod-cs.c b/src/util/taler-exchange-secmod-cs.c index 01f12e14d..13148a16c 100644 --- a/src/util/taler-exchange-secmod-cs.c +++ b/src/util/taler-exchange-secmod-cs.c @@ -2170,7 +2170,7 @@ run (void *cls, GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL); if (0 == max_workers) - max_workers = 1; /* FIXME-#7272: or determine from CPU? */ + max_workers = sysconf (_SC_NPROCESSORS_CONF); for (unsigned int i = 0; i<max_workers; i++) if (GNUNET_OK != start_worker ()) diff --git a/src/util/taler-exchange-secmod-rsa.c b/src/util/taler-exchange-secmod-rsa.c index 1cee02ab0..779e12521 100644 --- a/src/util/taler-exchange-secmod-rsa.c +++ b/src/util/taler-exchange-secmod-rsa.c @@ -1983,7 +1983,7 @@ run (void *cls, GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL); if (0 == max_workers) - max_workers = 1; /* FIXME-#7272: or determine from CPU? */ + max_workers = sysconf (_SC_NPROCESSORS_CONF); for (unsigned int i = 0; i<max_workers; i++) if (GNUNET_OK != start_worker ()) diff --git a/src/util/test_helper_cs.c b/src/util/test_helper_cs.c index 1a40fa1ef..7c57d50cf 100644 --- a/src/util/test_helper_cs.c +++ b/src/util/test_helper_cs.c @@ -289,11 +289,17 @@ test_r_derive (struct TALER_CRYPTO_CsDenominationHelper *dh) "Requesting R derivation with key %s\n", GNUNET_h2s (&keys[i].h_cs.hash)); alg_values.cipher = TALER_DENOMINATION_CS; - ec = TALER_CRYPTO_helper_cs_r_derive_withdraw ( - dh, - &keys[i].h_cs, - &pd.blinded_planchet.details.cs_blinded_planchet.nonce, - &alg_values.details.cs_values); + { + struct TALER_CRYPTO_CsDeriveRequest cdr = { + .h_cs = &keys[i].h_cs, + .nonce = &pd.blinded_planchet.details.cs_blinded_planchet.nonce + }; + + ec = TALER_CRYPTO_helper_cs_r_derive_withdraw ( + dh, + &cdr, + &alg_values.details.cs_values); + } switch (ec) { case TALER_EC_NONE: @@ -374,6 +380,10 @@ test_r_derive (struct TALER_CRYPTO_CsDenominationHelper *dh) struct TALER_CsPubHashP rnd; struct TALER_CsNonce nonce; struct TALER_DenominationCSPublicRPairP crp; + struct TALER_CRYPTO_CsDeriveRequest cdr = { + .h_cs = &rnd, + .nonce = &nonce, + }; GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &rnd, @@ -382,8 +392,7 @@ test_r_derive (struct TALER_CRYPTO_CsDenominationHelper *dh) &nonce, sizeof (nonce)); ec = TALER_CRYPTO_helper_cs_r_derive_withdraw (dh, - &rnd, - &nonce, + &cdr, &crp); if (TALER_EC_EXCHANGE_GENERIC_DENOMINATION_KEY_UNKNOWN != ec) { @@ -424,6 +433,10 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper *dh) { struct TALER_PlanchetDetail pd; struct TALER_CRYPTO_CsSignRequest csr; + struct TALER_CRYPTO_CsDeriveRequest cdr = { + .h_cs = &keys[i].h_cs, + .nonce = &pd.blinded_planchet.details.cs_blinded_planchet.nonce + }; pd.blinded_planchet.cipher = TALER_DENOMINATION_CS; // keys[i].denom_pub.cipher = TALER_DENOMINATION_CS; @@ -434,10 +447,7 @@ test_signing (struct TALER_CRYPTO_CsDenominationHelper *dh) alg_values.cipher = TALER_DENOMINATION_CS; ec = TALER_CRYPTO_helper_cs_r_derive_withdraw ( dh, - &keys[i].h_cs, - &pd.blinded_planchet. - details. - cs_blinded_planchet.nonce, + &cdr, &alg_values.details.cs_values); if (TALER_EC_NONE != ec) continue; @@ -622,6 +632,10 @@ perf_signing (struct TALER_CRYPTO_CsDenominationHelper *dh, { struct TALER_CoinPubHashP c_hash; struct TALER_PlanchetDetail pd; + struct TALER_CRYPTO_CsDeriveRequest cdr = { + .h_cs = &keys[i].h_cs, + .nonce = &pd.blinded_planchet.details.cs_blinded_planchet.nonce + }; pd.blinded_planchet.cipher = TALER_DENOMINATION_CS; TALER_cs_withdraw_nonce_derive (&ps, @@ -630,8 +644,7 @@ perf_signing (struct TALER_CRYPTO_CsDenominationHelper *dh, alg_values.cipher = TALER_DENOMINATION_CS; ec = TALER_CRYPTO_helper_cs_r_derive_melt ( dh, - &keys[i].h_cs, - &pd.blinded_planchet.details.cs_blinded_planchet.nonce, + &cdr, &alg_values.details.cs_values); if (TALER_EC_NONE != ec) continue; |