diff options
author | Michael Mann <mmann78@netscape.net> | 2016-10-31 01:10:56 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2016-11-02 04:34:44 +0000 |
commit | 26e883a75c37e18f633e47dcd85e2648ee1f03ae (patch) | |
tree | 802c9fd06f99561f23715a071ca2dc681173a7bd /epan/dissectors/packet-fc00.c | |
parent | 8ba444b8438395efe352da8c66dd64e9449c60bb (diff) |
Move Base32_encode from packet-fc00.c to wsutil (as ws_base32_decode)
There could be some reuse out of it, so but it with the rest of the
general utilities.
Change-Id: I404c135b933660a82678510b9ca2701985c5632a
Reviewed-on: https://code.wireshark.org/review/18589
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-fc00.c')
-rw-r--r-- | epan/dissectors/packet-fc00.c | 47 |
1 files changed, 2 insertions, 45 deletions
diff --git a/epan/dissectors/packet-fc00.c b/epan/dissectors/packet-fc00.c index d40c1a3c29..5ea01b9d8c 100644 --- a/epan/dissectors/packet-fc00.c +++ b/epan/dissectors/packet-fc00.c @@ -31,6 +31,7 @@ #include <epan/expert.h> #include <epan/packet.h> +#include <wsutil/base32.h> /* Prototypes */ /* (Required to prevent [-Wmissing-prototypes] warnings */ @@ -86,50 +87,6 @@ static const value_string session_states[] = { { 0, NULL } }; -/* - * Cjdns style base32 encoding - */ - -/** Returned by Base32_decode() if the input is not valid base32. */ -#define Base32_BAD_INPUT -1 -/** Returned by Base32_decode() or Base32_encode() if the output buffer is too small. */ -#define Base32_TOO_BIG -2 - -static inline int Base32_encode(guint8* output, - const guint32 outputLength, - const guint8* in, - const guint32 inputLength) -{ - guint32 outIndex = 0; - guint32 inIndex = 0; - guint32 work = 0; - guint32 bits = 0; - static const guint8* kChars = (guint8*) "0123456789bcdfghjklmnpqrstuvwxyz"; - while (inIndex < inputLength) { - work |= ((unsigned) in[inIndex++]) << bits; - bits += 8; - while (bits >= 5) { - if (outIndex >= outputLength) { - return Base32_TOO_BIG; - } - output[outIndex++] = kChars[work & 31]; - bits -= 5; - work >>= 5; - } - } - if (bits) { - if (outIndex >= outputLength) { - return Base32_TOO_BIG; - } - output[outIndex++] = kChars[work & 31]; - } - if (outIndex < outputLength) { - output[outIndex] = '\0'; - } - return outIndex; -} - - /* Code to actually dissect the packets */ static int dissect_cryptoauth(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) @@ -191,7 +148,7 @@ dissect_cryptoauth(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da tvb_memcpy(tvb, raw_key, PUBLIC_KEY_OFF, PUBLIC_KEY_LEN); - Base32_encode((guint8*)encoded_key, 53, raw_key, PUBLIC_KEY_LEN); + ws_base32_decode((guint8*)encoded_key, 53, raw_key, PUBLIC_KEY_LEN); g_checksum_update(hash, (guchar*)raw_key, PUBLIC_KEY_LEN); g_checksum_get_digest(hash, ip_buf, &digest_len); |