/*
This file is part of GNUnet.
- (C) 2014 Christian Grothoff (and other contributing authors)
+ Copyright (C) 2014 GNUnet e.V.
- GNUnet is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
+ GNUnet is free software: you can redistribute it and/or modify it
+ under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
GNUnet is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
- You should have received a copy of the GNU General Public License
- along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.
+ SPDX-License-Identifier: AGPL3.0-or-later
*/
/**
gcry_mpi_t tmp2;
unsigned int highbit;
- // determine how many operations we could allow, if the other number
- // has the same length.
+ /* determine how many operations we could allow, if the other number
+ has the same length. */
GNUNET_assert (NULL != (tmp1 = gcry_mpi_set_ui (NULL, 1)));
GNUNET_assert (NULL != (tmp2 = gcry_mpi_set_ui (NULL, 2)));
gcry_mpi_mul_2exp (tmp1, tmp1, GNUNET_CRYPTO_PAILLIER_BITS);
- // count number of possible operations
- // this would be nicer with gcry_mpi_get_nbits, however it does not return
- // the BITLENGTH of the given MPI's value, but the bits required
- // to represent the number as MPI.
+ /* count number of possible operations
+ this would be nicer with gcry_mpi_get_nbits, however it does not return
+ the BITLENGTH of the given MPI's value, but the bits required
+ to represent the number as MPI. */
for (possible_opts = -2; gcry_mpi_cmp (tmp1, m) > 0; possible_opts++)
gcry_mpi_div (tmp1, NULL, tmp1, tmp2, 0);
gcry_mpi_release (tmp1);
if (possible_opts < 1)
possible_opts = 0;
- //soft-cap by caller
+ /* soft-cap by caller */
possible_opts = (desired_ops < possible_opts)? desired_ops : possible_opts;
ciphertext->remaining_ops = htonl (possible_opts);
GNUNET_assert (0 != (c = gcry_mpi_new (0)));
gcry_mpi_mul (n_square, n, n);
- // generate r < n (without bias)
+ /* generate r < n (without bias) */
do {
gcry_mpi_randomize (r, highbit + 1, GCRY_STRONG_RANDOM);
}
while (gcry_mpi_cmp (r, n) >= 0);
- // c = (n+1)^m mod n^2
- gcry_mpi_add_ui (c, n, 1); // c = n + 1
- gcry_mpi_powm (c, c, m, n_square); // c = (n+1)^m mod n^2
- // r <- r^n mod n^2
- gcry_mpi_powm (r, r, n, n_square); // r = r^n mod n^2
- // c <- r*c mod n^2
- gcry_mpi_mulm (c, r, c, n_square); // c = r*c mod n^2
+ /* c = (n+1)^m mod n^2 */
+ /* c = n + 1 */
+ gcry_mpi_add_ui (c, n, 1);
+ /* c = (n+1)^m mod n^2 */
+ gcry_mpi_powm (c, c, m, n_square);
+ /* r <- r^n mod n^2 */
+ gcry_mpi_powm (r, r, n, n_square);
+ /* c <- r*c mod n^2 */
+ gcry_mpi_mulm (c, r, c, n_square);
GNUNET_CRYPTO_mpi_print_unsigned (ciphertext->bits,
sizeof ciphertext->bits,
}
/* generate r < n (without bias) */
- GNUNET_assert (0 != (r = gcry_mpi_new (0)));
+ GNUNET_assert (NULL != (r = gcry_mpi_new (0)));
do {
gcry_mpi_randomize (r, highbit + 1, GCRY_STRONG_RANDOM);
}
/* mod = cmum1 / n (mod n) */
GNUNET_assert (0 != (mod = gcry_mpi_new (0)));
gcry_mpi_div (mod, NULL, cmum1, n, 0);
+ gcry_mpi_release (cmum1);
/* m = mod * mu mod n */
gcry_mpi_mulm (m, mod, mu, n);
+ gcry_mpi_release (mod);
gcry_mpi_release (mu);
gcry_mpi_release (n);
}