+/****f* silcutil/SilcUtilAPI/silc_fingerprint
+ *
+ * SYNOPSIS
+ *
+ * char *silc_fingerprint(const unsigned char *data, SilcUInt32 data_len);
+ *
+ * DESCRIPTION
+ *
+ * Return a textual representation of the fingerprint in *data, the
+ * caller must free the returned string. Returns NULL on error. If
+ * the `data_len' is longer than 255 bytes, only the first 255 bytes are
+ * used to create the fingerprint.
+ *
+ ***/
+char *silc_fingerprint(const unsigned char *data, SilcUInt32 data_len);
+
+/****f* silcutil/SilcUtilAPI/silc_string_is_ascii
+ *
+ * SYNOPSIS
+ *
+ * SilcBool silc_string_is_ascii(const unsigned char *data,
+ * SilcUInt32 data_len);
+ *
+ * DESCRIPTION
+ *
+ * Return TRUE if the `data' is ASCII string.
+ *
+ ***/
+SilcBool silc_string_is_ascii(const unsigned char *data, SilcUInt32 data_len);
+
+/****f* silcutil/SilcUtilAPI/silc_get_input
+ *
+ * SYNOPSIS
+ *
+ * char *silc_get_input(const char *prompt, SilcBool echo_off);
+ *
+ * DESCRIPTION
+ *
+ * Displays input prompt on command line and takes input data from user.
+ *
+ ***/
+char *silc_get_input(const char *prompt, SilcBool echo_off);
+
+/* System dependant prototypes */
+
+/****f* silcutil/SilcUtilAPI/silc_get_username
+ *
+ * SYNOPSIS
+ *
+ * char *silc_get_username();
+ *
+ * DESCRIPTION
+ *
+ * Returns the username of the user. If the global variable LOGNAME
+ * does not exists we will get the name from the passwd file. The
+ * caller must free the returned name.
+ *
+ * This function is system dependant.
+ *
+ ***/
+char *silc_get_username();
+
+/****f* silcutil/SilcUtilAPI/silc_get_real_name
+ *
+ * SYNOPSIS
+ *
+ * char *silc_get_real_name();
+ *
+ * DESCRIPTION
+ *
+ * Returns the real name of ther user from the passwd file. The
+ * caller must free the returned name.
+ *
+ * This function is system dependant.
+ *
+ ***/
+char *silc_get_real_name();
+
+/****f* silcutil/SilcUtilAPI/silc_va_copy
+ *
+ * SYNOPSIS
+ *
+ * void silc_va_copy(va_list dest, va_list src);
+ *
+ * DESCRIPTION
+ *
+ * Copies variable argument list. This must be called in case the
+ * variable argument list must be evaluated multiple times. For each
+ * evaluation the list must be copied and va_end must be called for
+ * each copied list.
+ *
+ ***/
+#if defined(HAVE_VA_COPY)
+#define silc_va_copy(dest, src) va_copy(dest, src);
+#elif defined(HAVE___VA_COPY)
+#define silc_va_copy(dest, src) __va_copy(dest, src);
+#elif defined(SILC_VA_COPY_ARRAY)
+#define silc_va_copy(dest, src) memmove(dest, src, sizeof(va_list));
+#else
+#define silc_va_copy(dest, src) dest = src;