]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Rename _gnutls_dump_mpi to _gnutls_mpi_log. Rewrite to use less stack space.
authorSimon Josefsson <simon@josefsson.org>
Wed, 3 Jun 2009 07:35:13 +0000 (09:35 +0200)
committerSimon Josefsson <simon@josefsson.org>
Wed, 3 Jun 2009 07:35:13 +0000 (09:35 +0200)
lib/auth_srp.c
lib/debug.c
lib/debug.h
lib/gnutls_errors.c
lib/gnutls_errors.h
lib/libgnutls.map
lib/pk-libgcrypt.c
tests/mpi.c

index 37fab7b221ecdb69024d89872f2f06f207805f43..2e25b260ce2a0e3dde03270ff86ff339015411ad 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2008 Free Software Foundation
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2008, 2009 Free Software Foundation
  *
  * Author: Nikos Mavrogiannopoulos
  *
@@ -31,7 +31,6 @@
 #include "gnutls_auth.h"
 #include "gnutls_auth.h"
 #include "gnutls_srp.h"
-#include "debug.h"
 #include "gnutls_num.h"
 #include "auth_srp.h"
 #include <gnutls_str.h>
@@ -318,7 +317,7 @@ _gnutls_gen_srp_client_kx (gnutls_session_t session, opaque ** data)
       return GNUTLS_E_MEMORY_ERROR;
     }
 
-  _gnutls_dump_mpi ("SRP U: ", session->key->u);
+  _gnutls_mpi_log ("SRP U: ", session->key->u);
 
   /* S = (B - g^x) ^ (a + u * x) % N */
   S = _gnutls_calc_srp_S2 (B, G, session->key->x, _a, session->key->u, N);
@@ -328,7 +327,7 @@ _gnutls_gen_srp_client_kx (gnutls_session_t session, opaque ** data)
       return GNUTLS_E_MEMORY_ERROR;
     }
 
-  _gnutls_dump_mpi ("SRP B: ", B);
+  _gnutls_mpi_log ("SRP B: ", B);
 
   _gnutls_mpi_release (&_b);
   _gnutls_mpi_release (&V);
@@ -395,8 +394,8 @@ _gnutls_proc_srp_client_kx (gnutls_session_t session, opaque * data,
       return GNUTLS_E_MPI_SCAN_FAILED;
     }
 
-  _gnutls_dump_mpi ("SRP A: ", A);
-  _gnutls_dump_mpi ("SRP B: ", B);
+  _gnutls_mpi_log ("SRP A: ", A);
+  _gnutls_mpi_log ("SRP B: ", B);
 
   /* Checks if A % n == 0.
    */
@@ -416,7 +415,7 @@ _gnutls_proc_srp_client_kx (gnutls_session_t session, opaque * data,
       return GNUTLS_E_MEMORY_ERROR;
     }
 
-  _gnutls_dump_mpi ("SRP U: ", session->key->u);
+  _gnutls_mpi_log ("SRP U: ", session->key->u);
 
   /* S = (A * v^u) ^ b % N 
    */
@@ -427,7 +426,7 @@ _gnutls_proc_srp_client_kx (gnutls_session_t session, opaque * data,
       return GNUTLS_E_MEMORY_ERROR;
     }
 
-  _gnutls_dump_mpi ("SRP S: ", S);
+  _gnutls_mpi_log ("SRP S: ", S);
 
   _gnutls_mpi_release (&A);
   _gnutls_mpi_release (&_b);
@@ -613,7 +612,7 @@ group_check_g_n (gnutls_session_t session, bigint_t g, bigint_t n)
    */
   if (_gnutls_prime_check (n) != 0)
     {
-      _gnutls_dump_mpi ("no prime N: ", n);
+      _gnutls_mpi_log ("no prime N: ", n);
       gnutls_assert ();
       return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER;
     }
@@ -646,7 +645,7 @@ group_check_g_n (gnutls_session_t session, bigint_t g, bigint_t n)
     {
       /* N was not on the form N=2q+1, where q = prime
        */
-      _gnutls_dump_mpi ("no prime Q: ", q);
+      _gnutls_mpi_log ("no prime Q: ", q);
       gnutls_assert ();
       return GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER;
     }
index 8ef29d38e4a9f7fd3063a3529e3fed7a6eca6a98..4ab8d95ee5ce8a75067e37289e8113cb6a8a912d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation
+ * Copyright (C) 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation
  *
  * Author: Nikos Mavrogiannopoulos
  *
 #include <stdlib.h>
 #include "debug.h"
 
-#ifdef DEBUG
-
-
-void
-_gnutls_print_state (gnutls_session_t session)
-{
-
-  _gnutls_debug_log ("GNUTLS State:\n");
-  _gnutls_debug_log ("Connection End: %d\n",
-                    session->security_parameters.entity);
-  _gnutls_debug_log ("Cipher Algorithm: %d\n",
-                    session->security_parameters.read_bulk_cipher_algorithm);
-  _gnutls_debug_log ("MAC algorithm: %d\n",
-                    session->security_parameters.read_mac_algorithm);
-  _gnutls_debug_log ("Compression Algorithm: %d\n",
-                    session->security_parameters.read_compression_algorithm);
-  _gnutls_debug_log ("\n");
-
-}
-
-#endif
-
 const char *
 _gnutls_packet2str (content_type_t packet)
 {
@@ -115,17 +93,3 @@ _gnutls_handshake2str (gnutls_handshake_description_t handshake)
 
     }
 }
-
-void
-_gnutls_dump_mpi (const char *prefix, bigint_t a)
-{
-  opaque mpi_buf[1024];
-  opaque buf[1024];
-  size_t n = sizeof buf;
-
-  if (_gnutls_mpi_print (a, mpi_buf, &n) < 0)
-    strcpy (buf, "[can't print value]");       /* Flawfinder: ignore */
-  else
-    _gnutls_bin2hex (mpi_buf, n, buf, sizeof (buf));
-  _gnutls_hard_log ("MPI: length: %d\n\t%s%s\n", n, prefix, buf);
-}
index 6832ed7284d2364269a3eccba99c2dcd9ee2290b..5fd78917c7f5265e8d7384f212a53dd889c78fd4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2000, 2001, 2003, 2004, 2005 Free Software Foundation
+ * Copyright (C) 2000, 2001, 2003, 2004, 2005, 2009 Free Software Foundation
  *
  * Author: Nikos Mavrogiannopoulos
  *
@@ -22,9 +22,5 @@
  *
  */
 
-#ifdef DEBUG
-void _gnutls_print_state (gnutls_session_t session);
-#endif
 const char *_gnutls_packet2str (content_type_t packet);
 const char *_gnutls_handshake2str (gnutls_handshake_description_t handshake);
-void _gnutls_dump_mpi (const char *prefix, bigint_t a);
index 50d8fceb977ce2c1767db95231b3aa08d833f525..01a59de12d2e42bb5e1a3099cd0f87a5d1213939 100644 (file)
@@ -418,6 +418,65 @@ _gnutls_asn2err (int asn_err)
     }
 }
 
+void
+_gnutls_mpi_log (const char *prefix, bigint_t a)
+{
+  size_t binlen = 0;
+  void *binbuf;
+  size_t hexlen;
+  char *hexbuf;
+  int res;
+
+  res = _gnutls_mpi_print (a, NULL, &binlen);
+  if (res != 0)
+    {
+      gnutls_assert ();
+      _gnutls_hard_log ("MPI: can't print value (%d/%d)\n", res, binlen);
+      return;
+    }
+
+  if (binlen > 1024*1024)
+    {
+      gnutls_assert ();
+      _gnutls_hard_log ("MPI: too large mpi (%d)\n", binlen);
+      return;
+    }
+
+  binbuf = gnutls_malloc (binlen);
+  if (!binbuf)
+    {
+      gnutls_assert ();
+      _gnutls_hard_log ("MPI: out of memory (%d)\n", binlen);
+      return;
+    }
+
+  res = _gnutls_mpi_print (a, binbuf, &binlen);
+  if (res != 0)
+    {
+      gnutls_assert ();
+      _gnutls_hard_log ("MPI: can't print value (%d/%d)\n", res, binlen);
+      gnutls_free (binbuf);
+      return;
+    }
+
+  hexlen = 2 * binlen + 1;
+  hexbuf = gnutls_malloc (hexlen);
+
+  if (!hexbuf)
+    {
+      gnutls_assert ();
+      _gnutls_hard_log ("MPI: out of memory (hex %d)\n", hexlen);
+      gnutls_free (binbuf);
+      return;
+    }
+
+  _gnutls_bin2hex (binbuf, binlen, hexbuf, hexlen);
+
+  _gnutls_hard_log ("MPI: length: %d\n\t%s%s\n", binlen, prefix, hexbuf);
+
+  gnutls_free (hexbuf);
+  gnutls_free (binbuf);
+}
 
 /* this function will output a message using the
  * caller provided function
index 4b21550c9dd3c2a0e4ff82e17a737873103e52f9..6f47169b967b75c64a4ce89f771c687091611cd5 100644 (file)
@@ -48,6 +48,8 @@ __attribute__ ((format (printf, 2, 3)));
 ;
 #endif
 
+void _gnutls_mpi_log (const char *prefix, bigint_t a);
+
 #ifdef C99_MACROS
 #define LEVEL(l, ...) if (_gnutls_log_level >= l || _gnutls_log_level > 9) \
        _gnutls_log( l, __VA_ARGS__)
index b6f7c67ae0342c168cefbeea038602aa870605ab..73dc6aa33bb4e11258950564032698522fb22297 100644 (file)
@@ -604,7 +604,7 @@ GNUTLS_PRIVATE {
     # Internal symbols needed by tests/mpi:
     _gnutls_mpi_ops;
     _gnutls_mpi_randomize;
-    _gnutls_dump_mpi;
+    _gnutls_mpi_log;
     # Internal symbols needed by tests/pkcs12_s2k:
     _gnutls_pkcs12_string_to_key;
     _gnutls_bin2hex;
index 861117b41162586143fbfb9ac61c801dc39efba1..330fbfb3a8b0adf53cdf55165f07d105efff7fbe 100644 (file)
@@ -33,7 +33,6 @@
 #include <gnutls_datum.h>
 #include <gnutls_global.h>
 #include <gnutls_num.h>
-#include "debug.h"
 #include <x509/x509_int.h>
 #include <x509/common.h>
 #include <random.h>
@@ -609,11 +608,11 @@ _dsa_generate_params (bigint_t * resarr, int *resarr_len, int bits)
   gcry_sexp_release (list);
   gcry_sexp_release (key);
 
-  _gnutls_dump_mpi ("p: ", resarr[0]);
-  _gnutls_dump_mpi ("q: ", resarr[1]);
-  _gnutls_dump_mpi ("g: ", resarr[2]);
-  _gnutls_dump_mpi ("y: ", resarr[3]);
-  _gnutls_dump_mpi ("x: ", resarr[4]);
+  _gnutls_mpi_log ("p: ", resarr[0]);
+  _gnutls_mpi_log ("q: ", resarr[1]);
+  _gnutls_mpi_log ("g: ", resarr[2]);
+  _gnutls_mpi_log ("y: ", resarr[3]);
+  _gnutls_mpi_log ("x: ", resarr[4]);
 
   *resarr_len = 5;
 
@@ -715,12 +714,12 @@ _rsa_generate_params (bigint_t * resarr, int *resarr_len, int bits)
   gcry_sexp_release (list);
   gcry_sexp_release (key);
 
-  _gnutls_dump_mpi ("n: ", resarr[0]);
-  _gnutls_dump_mpi ("e: ", resarr[1]);
-  _gnutls_dump_mpi ("d: ", resarr[2]);
-  _gnutls_dump_mpi ("p: ", resarr[3]);
-  _gnutls_dump_mpi ("q: ", resarr[4]);
-  _gnutls_dump_mpi ("u: ", resarr[5]);
+  _gnutls_mpi_log ("n: ", resarr[0]);
+  _gnutls_mpi_log ("e: ", resarr[1]);
+  _gnutls_mpi_log ("d: ", resarr[2]);
+  _gnutls_mpi_log ("p: ", resarr[3]);
+  _gnutls_mpi_log ("q: ", resarr[4]);
+  _gnutls_mpi_log ("u: ", resarr[5]);
 
   *resarr_len = 6;
 
index ba47377d91d86b140446bb04faf2e545f8a65a53..5772da81de083fd7fde3a1a33781aaf14eecbd86 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007 Free Software Foundation
+ * Copyright (C) 2007, 2009 Free Software Foundation
  *
  * Author: Simon Josefsson
  *
@@ -63,7 +63,7 @@ doit (void)
 
   _gnutls_mpi_randomize (n1, RND_BITS, GNUTLS_RND_NONCE);
 
-  _gnutls_dump_mpi ("rand:", n1);
+  _gnutls_mpi_log ("rand:", n1);
 
   rc = _gnutls_mpi_get_nbits (n1);
   if (rc > RND_BITS)