genericized the hex printing capabilities.
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Mon, 16 Jun 2008 14:24:39 +0000 (10:24 -0400)
committerDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Mon, 16 Jun 2008 14:24:39 +0000 (10:24 -0400)
src/keytrans/gnutls-helpers.c
src/keytrans/gnutls-helpers.h

index d5f3719c90f9480d7c7cbb83e3afd1818e4296d1..5b4c46af187a2c662fb8ea97f66a54355cd1a5c2 100644 (file)
@@ -15,6 +15,8 @@
 /* for exit() */
 #include <unistd.h>
 
+#include <assert.h>
+
 /* higher levels allow more frivolous error messages through. 
    this is set with the MONKEYSPHERE_DEBUG variable */
 static int loglevel = 0;
@@ -40,14 +42,21 @@ void init_keyid(gnutls_openpgp_keyid_t keyid) {
 
 
 void make_keyid_printable(printable_keyid out, gnutls_openpgp_keyid_t keyid)
+{
+  assert(sizeof(out) >= 2*sizeof(keyid));
+  hex_print_data((char*)out, (const char*)keyid, sizeof(keyid));
+}
+
+/* you must have twice as many bytes in the out buffer as in the in buffer */
+void hex_print_data(char* out, const char* in, size_t incount)
 {
   static const char hex[16] = "0123456789ABCDEF";
-  unsigned int kix = 0, outix = 0;
+  unsigned int inix = 0, outix = 0;
   
-  while (kix < sizeof(gnutls_openpgp_keyid_t)) {
-    out[outix] = hex[(keyid[kix] >> 4) & 0x0f];
-    out[outix + 1] = hex[keyid[kix] & 0x0f];
-    kix++;
+  while (inix < incount) {
+    out[outix] = hex[(in[inix] >> 4) & 0x0f];
+    out[outix + 1] = hex[in[inix] & 0x0f];
+    inix++;
     outix += 2;
   }
 }
index 670d5ff71644c28c44a28ff42feb7e058f3bcb9c..f196456c58cf58f3453975c56d5bba75d6216fe1 100644 (file)
@@ -48,6 +48,8 @@ void collapse_printable_keyid(gnutls_openpgp_keyid_t out, printable_keyid in);
 int convert_string_to_keyid(gnutls_openpgp_keyid_t out, const char* str);
 int convert_string_to_printable_keyid(printable_keyid out, const char* str);
 
+/* you must have twice as many bytes in the out buffer as in the in buffer */
+void hex_print_data(char* out, const char* in, size_t incount);
 
 /* functions to get data into datum objects: */