diff --git a/src/crypto/range_proof_bpp.h b/src/crypto/range_proof_bpp.h index a8b68807..88bd7092 100644 --- a/src/crypto/range_proof_bpp.h +++ b/src/crypto/range_proof_bpp.h @@ -573,8 +573,7 @@ namespace crypto for (size_t i = 0; i < interm.c_bpp_m; ++i) d(i, j) = d(i, j - 1) + d(i, j - 1); // sum(d) (see also note in proof function for this) - static const scalar_t c_scalar_2_power_n_minus_1 = { 0xffffffffffffffff, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000 }; - const scalar_t sum_d = c_scalar_2_power_n_minus_1 * sum_of_powers(interm.z_sq, interm.c_bpp_log2_m); + const scalar_t sum_d = CT::get_2_to_the_power_of_N_minus_1() * sum_of_powers(interm.z_sq, interm.c_bpp_log2_m); DBG_PRINT("Hs(d): " << d.calc_hs()); DBG_PRINT("sum(d): " << sum_d); diff --git a/src/crypto/range_proof_bppe.h b/src/crypto/range_proof_bppe.h index 83fc83c2..8785dad5 100644 --- a/src/crypto/range_proof_bppe.h +++ b/src/crypto/range_proof_bppe.h @@ -588,9 +588,7 @@ namespace crypto for (size_t i = 0; i < interm.c_bpp_m; ++i) d(i, j) = d(i, j - 1) + d(i, j - 1); // sum(d) (see also note in proof function for this) - // TODO: check for not 2^64 version - static const scalar_t c_scalar_2_power_n_minus_1 = { 0xffffffffffffffff, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000 }; - const scalar_t sum_d = c_scalar_2_power_n_minus_1 * sum_of_powers(interm.z_sq, interm.c_bpp_log2_m); + const scalar_t sum_d = CT::get_2_to_the_power_of_N_minus_1() * sum_of_powers(interm.z_sq, interm.c_bpp_log2_m); DBG_PRINT("Hs(d): " << d.calc_hs()); DBG_PRINT("sum(d): " << sum_d); diff --git a/src/crypto/range_proofs.h b/src/crypto/range_proofs.h index 2f7fcf00..bcd03393 100644 --- a/src/crypto/range_proofs.h +++ b/src/crypto/range_proofs.h @@ -110,6 +110,12 @@ namespace crypto return generators[2 * index + (select_H ? 1 : 0)]; } + static const scalar_t& get_2_to_the_power_of_N_minus_1() + { + static scalar_t result = scalar_t::power_of_2(c_bpp_n) - 1; + return result; + } + static const point_t& bpp_H; static const point_t& bpp_H2; }; // struct bpp_crypto_trait_zano