diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2000-11-01 22:47:17 +0000 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2000-11-01 22:47:17 +0000 |
commit | 43972b9a13a4af13afbca080dcaf4fe31727bd43 (patch) | |
tree | 875d017bbf8a938c807f6d8eaef032d1f226b9f6 /lib/gnutls_dh.c | |
parent | 014f8a1be987e59c9a1a0400a887cf58e3676fcd (diff) | |
download | gnutls-43972b9a13a4af13afbca080dcaf4fe31727bd43.tar.gz |
Some more fixes and additions in order to interoperate with openssl
Diffstat (limited to 'lib/gnutls_dh.c')
-rw-r--r-- | lib/gnutls_dh.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/lib/gnutls_dh.c b/lib/gnutls_dh.c index 534332e0ab..208b887229 100644 --- a/lib/gnutls_dh.c +++ b/lib/gnutls_dh.c @@ -2,6 +2,7 @@ * Copyright (C) 2000 Nikos Mavroyanopoulos * * This file is part of GNUTLS. + * someday was part of gsti * * GNUTLS is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,6 +21,9 @@ #include <defines.h> #include <gnutls_int.h> +#include <gnutls_errors.h> + +#include <dmalloc.h> /* Taken from gsti */ @@ -53,8 +57,10 @@ static const uint8 diffie_hellman_group1_prime[130] = { 0x04, 0x00, gnutls_mpi_release(g); */ -#define E_SIZE 1024 -#define X_SIZE 200 +/* #define E_SIZE 1024 */ +#define X_SIZE 512 + +#define gcry_mpi_alloc_like(x) gcry_mpi_new(gcry_mpi_get_nbits(x)) /**************** * Choose a random value x and calculate e = g^x mod p. @@ -66,7 +72,7 @@ MPI gnutls_calc_dh_secret(MPI * ret_x) MPI e, g, x, prime; size_t n = sizeof diffie_hellman_group1_prime; - if (gcry_mpi_scan(&prime, GCRYMPI_FMT_STD, + if (gcry_mpi_scan(&prime, GCRYMPI_FMT_USG, diffie_hellman_group1_prime, &n)) abort(); /*dump_mpi(stderr, "prime=", prime ); */ @@ -76,7 +82,10 @@ MPI gnutls_calc_dh_secret(MPI * ret_x) gcry_mpi_randomize(x, X_SIZE, GCRY_STRONG_RANDOM); /* fixme: set high bit of x and select a larger one */ - e = mpi_new(E_SIZE); +/* e = mpi_new(E_SIZE); */ + e = gcry_mpi_alloc_like(prime); + /* e = g^x mod prime */ + mpi_powm(e, g, x, prime); if (ret_x) @@ -96,7 +105,8 @@ MPI _gnutls_calc_dh_secret(MPI * ret_x, MPI g, MPI prime) gcry_mpi_randomize(x, X_SIZE, GCRY_STRONG_RANDOM); /* fixme: set high bit of x and select a larger one */ - e = mpi_new(E_SIZE); + e = gcry_mpi_alloc_like(prime); +/* e = mpi_new(E_SIZE); */ mpi_powm(e, g, x, prime); if (ret_x) @@ -112,7 +122,7 @@ MPI gnutls_get_dh_params(MPI * ret_p) MPI g, prime; size_t n = sizeof diffie_hellman_group1_prime; - if (gcry_mpi_scan(&prime, GCRYMPI_FMT_STD, + if (gcry_mpi_scan(&prime, GCRYMPI_FMT_USG, diffie_hellman_group1_prime, &n)) abort(); @@ -131,12 +141,15 @@ MPI gnutls_calc_dh_key(MPI f, MPI x) MPI k, prime; size_t n = sizeof diffie_hellman_group1_prime; - k = mpi_new(E_SIZE); /* FIXME: allocate in secure memory */ - if (gcry_mpi_scan(&prime, GCRYMPI_FMT_STD, - diffie_hellman_group1_prime, &n)) + if (gcry_mpi_scan(&prime, GCRYMPI_FMT_USG, + diffie_hellman_group1_prime, &n)) { + gnutls_assert(); abort(); + } /*dump_mpi(stderr, "prime=", prime ); */ + k = gcry_mpi_alloc_like(prime); +/* k = mpi_new(E_SIZE); FIXME: allocate in secure memory */ mpi_powm(k, f, x, prime); mpi_release(prime); return k; @@ -146,8 +159,8 @@ MPI _gnutls_calc_dh_key(MPI f, MPI x, MPI prime) { MPI k; - k = mpi_new(E_SIZE); /* FIXME: allocate in secure memory */ - +/* k = mpi_new(E_SIZE); FIXME: allocate in secure memory */ + k = gcry_mpi_alloc_like(prime); mpi_powm(k, f, x, prime); return k; } |