aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/taler_util.h24
-rw-r--r--src/util/util.c32
2 files changed, 56 insertions, 0 deletions
diff --git a/src/include/taler_util.h b/src/include/taler_util.h
index 00397cc88..b6dd9596a 100644
--- a/src/include/taler_util.h
+++ b/src/include/taler_util.h
@@ -74,6 +74,30 @@ TALER_gcrypt_init (void);
/**
+ * Convert a buffer to an 8-character string
+ * representative of the contents. This is used
+ * for logging binary data when debugging.
+ *
+ * @param buf buffer to log
+ * @param buf_size number of bytes in @a buf
+ * @return text representation of buf, valid until next
+ * call to this function
+ */
+const char *
+TALER_b2s (const void *buf,
+ size_t buf_size);
+
+/**
+ * Convert a fixed-sized object to a string using
+ * #TALER_b2s().
+ *
+ * @param obj address of object to convert
+ * @return string representing the binary obj buffer
+ */
+#define TALER_B2S(obj) TALER_b2s (obj, sizeof (*obj))
+
+
+/**
* Round a time value so that it is suitable for transmission
* via JSON encodings.
*
diff --git a/src/util/util.c b/src/util/util.c
index f45598b0c..08438cfab 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -28,6 +28,38 @@
/**
+ * Convert a buffer to an 8-character string
+ * representative of the contents. This is used
+ * for logging binary data when debugging.
+ *
+ * @param buf buffer to log
+ * @param buf_size number of bytes in @a buf
+ * @return text representation of buf, valid until next
+ * call to this function
+ */
+const char *
+TALER_b2s (const void *buf,
+ size_t buf_size)
+{
+ static char ret[9];
+ struct GNUNET_HashCode hc;
+ char *tmp;
+
+ GNUNET_CRYPTO_hash (buf,
+ buf_size,
+ &hc);
+ tmp = GNUNET_STRINGS_data_to_string_alloc (&hc,
+ sizeof (hc));
+ memcpy (ret,
+ tmp,
+ 8);
+ GNUNET_free (tmp);
+ ret[8] = '\0';
+ return ret;
+}
+
+
+/**
* Obtain denomination amount from configuration file.
*
* @param cfg configuration to use