diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-02-26 15:38:30 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-02-26 15:38:30 +0100 |
commit | 4c42556bdb02df7c488f8db238f42e7eda79e12c (patch) | |
tree | 2962a31f095e6194f2f75a94f92706d396bcd97e | |
parent | ccb144fc9c0f5f0bd7d3a02fa39a42334045645c (diff) | |
download | gnutls_2_12_x-revamp.tar.gz |
simplify casting to mpz_t using __mpz_struct and cleaned up mpz_t access.gnutls_2_12_x-revamp
-rw-r--r-- | lib/nettle/Makefile.am | 2 | ||||
-rw-r--r-- | lib/nettle/gnettle.h | 2 | ||||
-rw-r--r-- | lib/nettle/mpi.c | 13 | ||||
-rw-r--r-- | lib/nettle/pk.c | 31 |
4 files changed, 25 insertions, 23 deletions
diff --git a/lib/nettle/Makefile.am b/lib/nettle/Makefile.am index a580fc258e..8cfe62d05f 100644 --- a/lib/nettle/Makefile.am +++ b/lib/nettle/Makefile.am @@ -35,4 +35,4 @@ endif noinst_LTLIBRARIES = libcrypto.la -libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c rnd.c init.c egd.c egd.h +libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c rnd.c init.c egd.c egd.h gnettle.h diff --git a/lib/nettle/gnettle.h b/lib/nettle/gnettle.h new file mode 100644 index 0000000000..bc3a5e2679 --- /dev/null +++ b/lib/nettle/gnettle.h @@ -0,0 +1,2 @@ +#define TOMPZ(x) ((__mpz_struct*)(x)) +#define SIZEOF_MPZT sizeof(__mpz_struct) diff --git a/lib/nettle/mpi.c b/lib/nettle/mpi.c index 59e34ebe69..ebb664d51e 100644 --- a/lib/nettle/mpi.c +++ b/lib/nettle/mpi.c @@ -33,8 +33,7 @@ #include <gmp.h> #include <nettle/bignum.h> #include <random.h> - -#define TOMPZ(x) (*((mpz_t*)(x))) +#include "gnettle.h" static int wrap_nettle_mpi_print (const bigint_t a, void *buffer, size_t * nbytes, @@ -87,17 +86,17 @@ wrap_nettle_mpi_print (const bigint_t a, void *buffer, size_t * nbytes, static bigint_t wrap_nettle_mpi_new (int nbits) { - mpz_t *p; + bigint_t r; - p = gnutls_malloc (sizeof (*p)); - if (p == NULL) + r = gnutls_malloc (SIZEOF_MPZT); + if (r == NULL) { gnutls_assert (); return NULL; } - mpz_init2 (*p, nbits); + mpz_init(TOMPZ(r)); - return p; + return r; } static bigint_t diff --git a/lib/nettle/pk.c b/lib/nettle/pk.c index 70e2bef794..fe4923f970 100644 --- a/lib/nettle/pk.c +++ b/lib/nettle/pk.c @@ -43,8 +43,7 @@ #include <nettle/bignum.h> #include <random.h> #include <gnutls/crypto.h> - -#define TOMPZ(x) (*((mpz_t*)(x))) +#include "gnettle.h" static void rnd_func (void *_ctx, unsigned length, uint8_t * data) @@ -56,29 +55,31 @@ static void _dsa_params_to_pubkey (const gnutls_pk_params_st * pk_params, struct dsa_public_key *pub) { - memcpy (&pub->p, pk_params->params[0], sizeof (mpz_t)); - memcpy (&pub->q, pk_params->params[1], sizeof (mpz_t)); - memcpy (&pub->g, pk_params->params[2], sizeof (mpz_t)); - memcpy (&pub->y, pk_params->params[3], sizeof (mpz_t)); + memcpy (pub->p, pk_params->params[0], SIZEOF_MPZT); + if (pk_params->params[1]) + memcpy (pub->q, pk_params->params[1], SIZEOF_MPZT); + memcpy (pub->g, pk_params->params[2], SIZEOF_MPZT); + if (pk_params->params[3]) + memcpy (pub->y, pk_params->params[3], SIZEOF_MPZT); } static void _dsa_params_to_privkey (const gnutls_pk_params_st * pk_params, struct dsa_private_key *pub) { - memcpy (&pub->x, pk_params->params[4], sizeof (mpz_t)); + memcpy (pub->x, pk_params->params[4], SIZEOF_MPZT); } static void _rsa_params_to_privkey (const gnutls_pk_params_st * pk_params, struct rsa_private_key *priv) { - memcpy (&priv->d, pk_params->params[2], sizeof (mpz_t)); - memcpy (&priv->p, pk_params->params[3], sizeof (mpz_t)); - memcpy (&priv->q, pk_params->params[4], sizeof (mpz_t)); - memcpy (&priv->c, pk_params->params[5], sizeof (mpz_t)); - memcpy (&priv->a, pk_params->params[6], sizeof (mpz_t)); - memcpy (&priv->b, pk_params->params[7], sizeof (mpz_t)); + memcpy (priv->d, pk_params->params[2], SIZEOF_MPZT); + memcpy (priv->p, pk_params->params[3], SIZEOF_MPZT); + memcpy (priv->q, pk_params->params[4], SIZEOF_MPZT); + memcpy (priv->c, pk_params->params[5], SIZEOF_MPZT); + memcpy (priv->a, pk_params->params[6], SIZEOF_MPZT); + memcpy (priv->b, pk_params->params[7], SIZEOF_MPZT); } @@ -433,8 +434,8 @@ _wrap_nettle_pk_verify (gnutls_pk_algorithm_t algo, } memset(&pub, 0, sizeof(pub)); _dsa_params_to_pubkey (pk_params, &pub); - memcpy (&sig.r, tmp[0], sizeof (sig.r)); - memcpy (&sig.s, tmp[1], sizeof (sig.s)); + memcpy (sig.r, tmp[0], SIZEOF_MPZT); + memcpy (sig.s, tmp[1], SIZEOF_MPZT); hash = _gnutls_dsa_q_to_hash (pub.q, &hash_len); |