+/*
+ * This file is part of secnet.
+ * See README for full list of copyright holders.
+ *
+ * secnet is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * secnet is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 3 along with secnet; if not, see
+ * https://www.gnu.org/licenses/gpl.html.
+ */
+
#ifndef util_h
#define util_h
extern void buf_append_string(struct buffer_if *buf, cstring_t s);
+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.
+ */
+
+extern bool_t hex_decode(uint8_t *buffer, int32_t buflen, int32_t *outlen,
+ cstring_t hb, bool_t allow_odd_nibble);
+ /* Convert a hex string to binary, storing the result in buffer. If
+ * allow_odd_nibble then it is acceptable if the input is an odd number of
+ * digits, and an additional leading zero digit is assumed; otherwise, this
+ * is not acceptable and the conversion fails.
+ *
+ * The input is processed left to right until it is consumed, the buffer is
+ * full, or an error is encountered in the input. The length of output
+ * produced is stored in *outlen. Returns true if the entire input was
+ * processed without error; otherwise false.
+ */
+
extern void read_mpbin(MP_INT *a, uint8_t *bin, int binsize);
extern char *write_mpstring(MP_INT *a);