26static const char base32_char[32] =
"0123456789bcdfghjklmnpqrstuvwxyz";
28static const uint8 base32_map[128] = {
30 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
31 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
32 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,
33 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,99,99,99,99,99,99,
34 99,99,10,11,12,99,13,14,15,99,16,17,18,19,20,99,
35 21,22,23,24,25,26,27,28,29,30,31,99,99,99,99,99,
36 99,99,10,11,12,99,13,14,15,99,16,17,18,19,20,99,
37 21,22,23,24,25,26,27,28,29,30,31,99,99,99,99,99
43 return len + (
len + 49) / 50;
56 for (i = 0; i <
len; ++i) {
57 if (in[i] & 0x80)
return 0;
58 x = base32_map[(uint8) in[i]];
60 v |= ((unsigned)
x) << bits;
71 }
else if (bits >= 5 || v)
86 for (i = 0; i <
len; ++i) {
87 v |= ((
unsigned int) (uint8) in[i]) << bits;
91 out[++
x] = base32_char[v & 31];
102 if (bits)
out[++
x] = base32_char[v & 31];
112 byte_copy(
out,4,
"\66x1a");
116 for (i = 0; i < 32; ++i) {
117 v |= ((
unsigned int) (uint8) key[i]) << bits;
120 *
out++ = base32_char[v & 31];
132 unsigned int bits = 0;
135 v |= ((uint8) in[j++]) << bits;
139 out[i++] = base32_char[v & 31];
146 out[i++] = base32_char[v & 31];
unsigned int base32_bytessize(unsigned int len)
void base32_clientkey(uint8 *out, const char *key)
unsigned int base32_decode(uint8 *out, const char *in, unsigned int len, int mode)
void base32_encode(uint8 *out, const char *in, unsigned int len)
unsigned int base32_serverkey(uint8 *out, const char *in, unsigned int len)
void out(const char *s, unsigned int len)