ssh: Support ECDSA keys.
[gnupg.git] / common / convert.c
index 0a0c46f..e86ccec 100644 (file)
@@ -3,12 +3,22 @@
  *
  * This file is part of GnuPG.
  *
- * GnuPG is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of either
  *
- * GnuPG is distributed in the hope that it will be useful,
+ *   - the GNU Lesser General Public License as published by the Free
+ *     Software Foundation; either version 3 of the License, or (at
+ *     your option) any later version.
+ *
+ * or
+ *
+ *   - the GNU General Public License as published by the Free
+ *     Software Foundation; either version 2 of the License, or (at
+ *     your option) any later version.
+ *
+ * or both in parallel, as here.
+ *
+ * This file is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
@@ -23,7 +33,6 @@
 #include <ctype.h>
 
 #include "util.h"
-#include "gcrypt.h"
 
 
 #define tohex(n) ((n) < 10 ? ((n) + '0') : (((n) - 10) + 'A'))
@@ -107,14 +116,14 @@ do_bin2hex (const void *buffer, size_t length, char *stringbuf, int with_colon)
 {
   const unsigned char *s;
   char *p;
-  
+
   if (!stringbuf)
     {
       /* Not really correct for with_colon but we don't care about the
          one wasted byte. */
-      size_t n = with_colon? 3:2; 
-      size_t nbytes = n * length + 1; 
-      if (length &&  (nbytes-1) / n != length) 
+      size_t n = with_colon? 3:2;
+      size_t nbytes = n * length + 1;
+      if (length &&  (nbytes-1) / n != length)
         {
           gpg_err_set_errno (ENOMEM);
           return NULL;
@@ -123,7 +132,7 @@ do_bin2hex (const void *buffer, size_t length, char *stringbuf, int with_colon)
       if (!stringbuf)
         return NULL;
     }
-  
+
   for (s = buffer, p = stringbuf; length; length--, s++)
     {
       if (with_colon && s != buffer)
@@ -172,7 +181,7 @@ bin2hexcolon (const void *buffer, size_t length, char *stringbuf)
    buffer, the function returns NULL and won't change the existing
    conent of buffer.  In-place conversion is possible as long as
    BUFFER points to HEXSTRING.
-   
+
    If BUFFER is NULL and bufsize is 0 the function scans HEXSTRING but
    does not store anything.  This may be used to find the end of
    hexstring.
@@ -205,7 +214,7 @@ hex2str (const char *hexstring, char *buffer, size_t bufsize, size_t *buflen)
     {
       if (count > bufsize)
         return NULL; /* Too long.  */
-      
+
       for (s=hexstring, idx=0; hexdigitp (s) && hexdigitp (s+1); s += 2)
         ((unsigned char*)buffer)[idx++] = xtoi_2 (s);
       if (need_nul)
@@ -245,32 +254,3 @@ hex2str_alloc (const char *hexstring, size_t *r_count)
     BUG ();
   return result;
 }
-
-/* returns hex representation of the MPI; 
- * caller must free with xfree 
- * Returns NULL on error, never throws
- */
-char *mpi2hex( gcry_mpi_t m )  {
-  size_t nbytes;
-  size_t nbytes2;
-  int rc;
-  byte *p;
-
-  nbytes = (mpi_get_nbits ( m )+7)/8;
-  if( nbytes == 0 )
-    return NULL;
-  p = xtrymalloc( nbytes*3+1 );
-  if( p==NULL )
-    return NULL;
-  rc = gcry_mpi_print (GCRYMPI_FMT_USG, p+2*nbytes+1, nbytes, &nbytes2, m);
-  if( rc )  {
-      xfree( p );
-      return NULL;
-  }
-
-  bin2hex( p+2*nbytes+1, nbytes2, p );
-  p[nbytes2*2] = '\0';
-//printf("%s:%d>>>> Created the string %s from %d bytes %02x %02x ..., MPI was %d bytes\n", __FILE__, __LINE__, p, nbytes2, p[2*nbytes+1], p[2*nbytes+2], nbytes);
-  return p;
-}    
-