Commit 0d039117 authored by Niels Möller's avatar Niels Möller

Use mpn_cnd_add_n and mpn_cnd_sub_n when available. Rearrange inclusions of gmp-glue.h.

parent 2d796c6e
2013-04-04 Niels Möller <nisse@lysator.liu.se>
* gmp-glue.h (cnd_add_n, cnd_sub_n): Moved here, define in terms
of mpn_cnd_add_n and mpn_sub_n if available, otherwise in terms of
mpn_addmul_1 and mpn_submul_1. This seems to be an improvement for
subtraction, but more questionable for addition.
* ecc-internal.h: Include gmp-glue.h. Deleted corresponding
include in all files using ecc-internal.h.
(cnd_add_n, cnd_sub_n): Moved from here.
2013-04-03 Niels Möller <nisse@lysator.liu.se> 2013-04-03 Niels Möller <nisse@lysator.liu.se>
* ecc-point-mul-g.c (ecc_point_mul_g): New file and function. * ecc-point-mul-g.c (ecc_point_mul_g): New file and function.
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
#endif #endif
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
/* Convert hash value to an integer. If the digest is larger than /* Convert hash value to an integer. If the digest is larger than
the ecc bit size, then we must truncate it and use the leftmost the ecc bit size, then we must truncate it and use the leftmost
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "nettle-types.h" #include "nettle-types.h"
#include "ecc-curve.h" #include "ecc-curve.h"
#include "gmp-glue.h"
/* Name mangling */ /* Name mangling */
#define ecc_generic_modp _nettle_ecc_generic_modp #define ecc_generic_modp _nettle_ecc_generic_modp
...@@ -203,12 +204,6 @@ ecc_hash (const struct ecc_curve *ecc, ...@@ -203,12 +204,6 @@ ecc_hash (const struct ecc_curve *ecc,
mp_limb_t *hp, mp_limb_t *hp,
unsigned length, const uint8_t *digest); unsigned length, const uint8_t *digest);
#define cnd_add_n(cnd, rp, ap, n) \
mpn_addmul_1 ((rp), (ap), (n), (cnd) != 0)
#define cnd_sub_n(cnd, rp, ap, n) \
mpn_submul_1 ((rp), (ap), (n), (cnd) != 0)
void void
cnd_copy (int cnd, mp_limb_t *rp, const mp_limb_t *ap, mp_size_t n); cnd_copy (int cnd, mp_limb_t *rp, const mp_limb_t *ap, mp_size_t n);
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include "ecc.h" #include "ecc.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
#include "nettle-internal.h" #include "nettle-internal.h"
void void
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include "ecc.h" #include "ecc.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
void void
ecc_point_mul (struct ecc_point *r, const struct ecc_scalar *n, ecc_point_mul (struct ecc_point *r, const struct ecc_scalar *n,
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include "ecc.h" #include "ecc.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
void void
ecc_point_init (struct ecc_point *p, const struct ecc_curve *ecc) ecc_point_init (struct ecc_point *p, const struct ecc_curve *ecc)
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include "ecc.h" #include "ecc.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
#include "nettle-internal.h" #include "nettle-internal.h"
static int static int
......
...@@ -28,7 +28,6 @@ ...@@ -28,7 +28,6 @@
#include "ecc.h" #include "ecc.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
void void
ecc_scalar_init (struct ecc_scalar *s, const struct ecc_curve *ecc) ecc_scalar_init (struct ecc_scalar *s, const struct ecc_curve *ecc)
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include "ecdsa.h" #include "ecdsa.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
#include "nettle-internal.h" #include "nettle-internal.h"
void void
......
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include "ecdsa.h" #include "ecdsa.h"
#include "ecc-internal.h" #include "ecc-internal.h"
#include "gmp-glue.h"
int int
ecdsa_verify (const struct ecc_point *pub, ecdsa_verify (const struct ecc_point *pub,
......
...@@ -50,6 +50,15 @@ ...@@ -50,6 +50,15 @@
#define gmp_alloc_limbs _nettle_gmp_alloc_limbs #define gmp_alloc_limbs _nettle_gmp_alloc_limbs
#define gmp_free_limbs _nettle_gmp_free_limbs #define gmp_free_limbs _nettle_gmp_free_limbs
/* Use only in-place operations, so we can fall back to addmul_1/submul_1 */
#ifdef mpn_cnd_add_n
# define cnd_add_n(cnd, rp, ap, n) mpn_cnd_add_n ((cnd), (rp), (rp), (ap), (n))
# define cnd_sub_n(cnd, rp, ap, n) mpn_cnd_sub_n ((cnd), (rp), (rp), (ap), (n))
#else
# define cnd_add_n(cnd, rp, ap, n) mpn_addmul_1 ((rp), (ap), (n), (cnd) != 0)
# define cnd_sub_n(cnd, rp, ap, n) mpn_submul_1 ((rp), (ap), (n), (cnd) != 0)
#endif
/* Some functions for interfacing between mpz and mpn code. Signs of /* Some functions for interfacing between mpz and mpn code. Signs of
the mpz numbers are generally ignored. */ the mpz numbers are generally ignored. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment