dirmngr: Pass Tor credentials to libdns.
[gnupg.git] / dirmngr / misc.c
index 93f051c..ac3856e 100644 (file)
@@ -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,23 @@ 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);
 }
 
 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;
 }
 
@@ -125,7 +131,7 @@ serial_to_buffer (const ksba_sexp_t serial, size_t *length)
 }
 
 
-/* Do an in-place percent unescaping of STRING. Returns STRING. Noet
+/* Do an in-place percent unescaping of STRING. Returns STRING. Note
    that this function does not do a '+'-to-space unescaping.*/
 char *
 unpercent_string (char *string)