/* Append a two-byte length and the string to the buffer. Length is in
* network byte order. */
-extern string_t hex_encode(const uint8_t *bin, int binsize);
- /* Convert a byte array to hex, returning the result in a freshly allocated
- * string. */
+static inline int hex_encode_size(int binsize) { return binsize*2 + 1; }
+extern void hex_encode(const uint8_t *bin, int binsize, char *buf);
+ /* Convert a byte array to hex into a supplied buffer. */
+extern string_t hex_encode_alloc(const uint8_t *bin, int binsize);
+ /* Returns the result in a freshly allocated string. */
extern bool_t hex_decode(uint8_t *buffer, int32_t buflen, int32_t *outlen,
cstring_t hb, bool_t allow_odd_nibble);
extern int consttime_memeq(const void *s1, const void *s2, size_t n);
+void hash_hash(const struct hash_if *hashi, const void *msg, int32_t len,
+ uint8_t *digest /* hi->hlen bytes */);
+
const char *iaddr_to_string(const union iaddr *ia);
int iaddr_socklen(const union iaddr *ia);