aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-fc00.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2016-10-31 01:10:56 -0400
committerAnders Broman <a.broman58@gmail.com>2016-11-02 04:34:44 +0000
commit26e883a75c37e18f633e47dcd85e2648ee1f03ae (patch)
tree802c9fd06f99561f23715a071ca2dc681173a7bd /epan/dissectors/packet-fc00.c
parent8ba444b8438395efe352da8c66dd64e9449c60bb (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.c47
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);