dirmngr: Fix license note in server.c
[gnupg.git] / dirmngr / misc.c
index 244919e..1716141 100644 (file)
@@ -27,7 +27,7 @@
 #include <errno.h>
 
 #include "dirmngr.h"
-#include "util.h"
+#include "../common/util.h"
 #include "misc.h"
 
 
@@ -36,7 +36,7 @@
    buffer will be returned.  The caller should provide RESULT of at
    least strlen(STRING)/2 bytes.  There is no error detection, the
    parsing stops at the first non hex character.  With RESULT given as
-   NULL, the fucntion does only return the size of the buffer which
+   NULL, the function does only return the size of the buffer which
    would be needed.  */
 size_t
 unhexify (unsigned char *result, const char *string)
@@ -59,17 +59,25 @@ hashify_data( const char* data, size_t len )
 {
   unsigned char buf[20];
   gcry_md_hash_buffer (GCRY_MD_SHA1, buf, data, len);
-  return hexify_data( buf, 20 );
+  return hexify_data (buf, 20, 0);
 }
 
+
+/* FIXME: Replace this by hextobin.  */
 char*
-hexify_data( const unsigned char* data, size_t len )
+hexify_data (const unsigned char* data, size_t len, int with_prefix)
 {
   int i;
-  char* result = xmalloc( sizeof( char ) * (2*len+1));
+  char *result = xmalloc (2*len + (with_prefix?2:0) + 1);
+  char *p;
+
+  if (with_prefix)
+    p = stpcpy (result, "0x");
+  else
+    p = result;
 
-  fori = 0; i < 2*len; i+=2 )
-    sprintf( result+i, "%02X", *data++);
+  for (i = 0; i < 2*len; i+=2 )
+    snprintf (p+i, 3, "%02X", *data++);
   return result;
 }
 
@@ -290,6 +298,7 @@ dump_cert (const char *text, ksba_cert_t cert)
   ksba_sexp_t sexp;
   char *p;
   ksba_isotime_t t;
+  int idx;
 
   log_debug ("BEGIN Certificate '%s':\n", text? text:"");
   if (cert)
@@ -320,6 +329,13 @@ dump_cert (const char *text, ksba_cert_t cert)
       dump_string (p);
       ksba_free (p);
       log_printf ("\n");
+      for (idx=1; (p = ksba_cert_get_subject (cert, idx)); idx++)
+        {
+          log_debug ("        aka: ");
+          dump_string (p);
+          ksba_free (p);
+          log_printf ("\n");
+        }
 
       log_debug ("  hash algo: %s\n", ksba_cert_get_digest_algo (cert));