summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2016-02-26 15:38:30 +0100
committerNikos Mavrogiannopoulos <nmav@redhat.com>2016-02-26 15:38:30 +0100
commit4c42556bdb02df7c488f8db238f42e7eda79e12c (patch)
tree2962a31f095e6194f2f75a94f92706d396bcd97e
parentccb144fc9c0f5f0bd7d3a02fa39a42334045645c (diff)
downloadgnutls_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.am2
-rw-r--r--lib/nettle/gnettle.h2
-rw-r--r--lib/nettle/mpi.c13
-rw-r--r--lib/nettle/pk.c31
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);