mirror of
https://github.com/cathugger/mkp224o.git
synced 2025-05-04 20:30:34 +00:00
improvements all over the place
This commit is contained in:
parent
59c07f0fdf
commit
7887d086f2
7 changed files with 250 additions and 70 deletions
|
@ -4,14 +4,44 @@
|
|||
#include "base32.h"
|
||||
|
||||
static const u8 base32f[256] = {
|
||||
['a'] = 0, ['b'] = 1, ['c'] = 2, ['d'] = 3,
|
||||
['e'] = 4, ['f'] = 5, ['g'] = 6, ['h'] = 7,
|
||||
['i'] = 8, ['j'] = 9, ['k'] = 10, ['l'] = 11,
|
||||
['m'] = 12, ['n'] = 13, ['o'] = 14, ['p'] = 15,
|
||||
['q'] = 16, ['r'] = 17, ['s'] = 18, ['t'] = 19,
|
||||
['u'] = 20, ['v'] = 21, ['w'] = 22, ['x'] = 23,
|
||||
['y'] = 24, ['z'] = 25, ['2'] = 26, ['3'] = 27,
|
||||
['4'] = 28, ['5'] = 29, ['6'] = 30, ['7'] = 31,
|
||||
//00 01 02 03 04 05 06 07
|
||||
//08 09 0A 0B 0C 0D 0E 0F
|
||||
// 0x00..0x3F
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x00
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x08
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x10
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x18
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x20
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x28
|
||||
0xFF, 0xFF, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, // 0x30
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x38
|
||||
// 0x40..0x7F
|
||||
0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // 0x40
|
||||
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, // 0x48
|
||||
0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, // 0x50
|
||||
0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x58
|
||||
0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, // 0x60
|
||||
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, // 0x68
|
||||
0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, // 0x70
|
||||
0x17, 0x18, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, // 0x78
|
||||
// 0x80..0xBF
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
// 0xC0..0xFF
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
};
|
||||
/*
|
||||
+--first octet--+-second octet--+--third octet--+--forth octet--+--fifth octet--+
|
||||
|
@ -20,20 +50,19 @@ static const u8 base32f[256] = {
|
|||
|4 3 2 1 0|4 3 2 1 0|4 3 2 1 0|4 3 2 1 0|4 3 2 1 0|4 3 2 1 0|4 3 2 1 0|4 3 2 1 0|
|
||||
+-1.index-+-2.index-+-3.index-+-4.index-+-5.index-+-6.index-+-7.index-+-8.index-+
|
||||
*/
|
||||
size_t base32_from(u8 *dst, u8 *dmask, const char *src)
|
||||
size_t base32_from(u8 *dst,u8 *dmask,const char *src)
|
||||
{
|
||||
int i, j, k = -1, l, sk = 0;
|
||||
size_t i, j, k = (size_t)-1, l, sk = 0;
|
||||
u8 mask = 0, cmask = 0;
|
||||
for (i = 0;;i += 5) {
|
||||
j = i/5;
|
||||
l = i%8;
|
||||
if (!src[j]) {
|
||||
if (k >= 0)
|
||||
if (k != (size_t)-1)
|
||||
dst[k] &= cmask;
|
||||
//printf("dst[k]:%02X mask:%02X l:%d\n", dst[k], (cmask & 0xFF), l);
|
||||
*dmask = cmask;
|
||||
return (size_t)(k + 1);
|
||||
return k + 1;
|
||||
}
|
||||
l = i%8;
|
||||
k = i/8;
|
||||
if (k != sk)
|
||||
cmask = 0;
|
||||
|
@ -57,3 +86,14 @@ size_t base32_from(u8 *dst, u8 *dmask, const char *src)
|
|||
//printf("mask1: %02x\n", ((0x1F << 8) >> (i%8+5-8)) & 0xFF);
|
||||
}
|
||||
}
|
||||
|
||||
int base32_valid(const char *src,size_t *count)
|
||||
{
|
||||
const char *p;
|
||||
|
||||
for (p = src;base32f[(u8)*p] != 0xFF;++p) ;
|
||||
|
||||
if (count)
|
||||
*count = p - src;
|
||||
return !*p;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue