Mercurial > pidgin
changeset 18023:2188c95d0311
applied changes from 4b489c7fd0ca6d775558656ce19ba53d7209bb26
through ff100777af0314cd00df42f69ae90121a3eee728
- Add purple_base16_encode_chunked
author | William Ehlhardt <williamehlhardt@gmail.com> |
---|---|
date | Wed, 30 May 2007 03:59:52 +0000 |
parents | b1e453e4e62a |
children | 92e27556160c |
files | libpurple/util.c libpurple/util.h |
diffstat | 2 files changed, 40 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/util.c Mon May 28 08:10:38 2007 +0000 +++ b/libpurple/util.c Wed May 30 03:59:52 2007 +0000 @@ -155,6 +155,31 @@ return data; } +gchar * +purple_base16_encode_chunked(const guchar *data, gsize len) +{ + int i; + gchar *ascii = NULL; + + g_return_val_if_fail(data != NULL, NULL); + g_return_val_if_fail(len > 0, NULL); + + /* For each byte of input, we need 2 bytes for the hex representation + * and 1 for the colon. + * The final colon will be replaced by a terminating NULL + */ + ascii = g_malloc(len * 3 + 1); + + for (i = 0; i < len; i++) + g_snprintf(&ascii[i * 3], 4, "%02hhx:", data[i]); + + /* Replace the final colon with NULL */ + ascii[len * 3 - 1] = 0; + + return ascii; +} + + /************************************************************************** * Base64 Functions **************************************************************************/
--- a/libpurple/util.h Mon May 28 08:10:38 2007 +0000 +++ b/libpurple/util.h Wed May 30 03:59:52 2007 +0000 @@ -118,6 +118,21 @@ */ guchar *purple_base16_decode(const char *str, gsize *ret_len); +/** + * Converts a chunk of binary data to a chunked base-16 representation + * (handy for key fingerprints) + * + * Example output: 01:23:45:67:89:AB:CD:EF + * + * @param data The data to convert. + * @param len The length of the data. + * + * @return The base-16 string in the ASCII chunked encoding. Must be + * g_free'd when no longer needed. + */ +gchar *purple_base16_encode_chunked(const guchar *data, gsize len); + + /*@}*/ /**************************************************************************/