* gmp-glue.c (mpz_limbs_cmp): Deleted function. Usage replaced
with mpz_roinit_n and mpz_cmp.
+ (mpz_limbs_read_n): Deleted function. Usage in tests only,
+ replaced with mpz_limbs_copy.
2021-11-15 Niels Möller <nisse@lysator.liu.se>
/* Additional convenience functions. */
-/* Get a pointer to an n limb area, for read-only operation. n must be
- greater or equal to the current size, and the mpz is zero-padded if
- needed. */
-const mp_limb_t *
-mpz_limbs_read_n (mpz_ptr x, mp_size_t n)
-{
- mp_size_t xn = mpz_size (x);
- mp_ptr xp;
-
- assert (xn <= n);
-
- xp = mpz_limbs_modify (x, n);
-
- if (xn < n)
- mpn_zero (xp + xn, n - xn);
-
- return xp;
-}
-
void
mpz_limbs_copy (mp_limb_t *xp, mpz_srcptr x, mp_size_t n)
{
#include "bignum.h"
-#define mpz_limbs_read_n _nettle_mpz_limbs_read_n
#define mpz_limbs_copy _nettle_mpz_limbs_copy
#define mpz_set_n _nettle_mpz_set_n
#define sec_zero_p _nettle_sec_zero_p
/* Convenience functions */
-/* Get a pointer to an n limb area, for read-only operation. n must be
- greater or equal to the current size, and the mpz is zero-padded if
- needed. */
-const mp_limb_t *
-mpz_limbs_read_n (mpz_ptr x, mp_size_t n);
-
/* Copy limbs, with zero-padding. */
/* FIXME: Reorder arguments, on the theory that the first argument of
an _mpz_* function should be an mpz_t? Or rename to _mpz_get_limbs,
mpz_t k;
mp_limb_t *rp = xalloc_limbs (ecc->p.size);
mp_limb_t *sp = xalloc_limbs (ecc->p.size);
+ mp_limb_t *zp = xalloc_limbs (ecc->p.size);
+ mp_limb_t *kp = xalloc_limbs (ecc->p.size);
mp_limb_t *scratch = xalloc_limbs (ecc_ecdsa_sign_itch (ecc));
dsa_signature_init (&ref);
mpz_init_set_str (z, sz, 16);
mpz_init_set_str (k, sk, 16);
+ mpz_limbs_copy (zp, z, ecc->p.size);
+ mpz_limbs_copy (kp, k, ecc->p.size);
- ecc_ecdsa_sign (ecc, mpz_limbs_read_n (z, ecc->p.size),
- mpz_limbs_read_n (k, ecc->p.size),
+ ecc_ecdsa_sign (ecc, zp, kp,
h->length, h->data, rp, sp, scratch);
mpz_set_str (ref.r, r, 16);
free (rp);
free (sp);
+ free (zp);
+ free (kp);
free (scratch);
dsa_signature_clear (&ref);
mpz_t k;
mp_limb_t *rp = xalloc_limbs (ecc->p.size);
mp_limb_t *sp = xalloc_limbs (ecc->p.size);
+ mp_limb_t *zp = xalloc_limbs (ecc->p.size);
+ mp_limb_t *kp = xalloc_limbs (ecc->p.size);
mp_limb_t *scratch = xalloc_limbs (ecc_gostdsa_sign_itch (ecc));
dsa_signature_init (&ref);
mpz_init_set_str (z, sz, 16);
mpz_init_set_str (k, sk, 16);
+ mpz_limbs_copy (zp, z, ecc->p.size);
+ mpz_limbs_copy (kp, k, ecc->p.size);
- ecc_gostdsa_sign (ecc, mpz_limbs_read_n (z, ecc->p.size),
- mpz_limbs_read_n (k, ecc->p.size),
- h->length, h->data, rp, sp, scratch);
+ ecc_gostdsa_sign (ecc, zp, kp,
+ h->length, h->data, rp, sp, scratch);
mpz_set_str (ref.r, r, 16);
mpz_set_str (ref.s, s, 16);
free (rp);
free (sp);
+ free (zp);
+ free (kp);
free (scratch);
dsa_signature_clear (&ref);