2 ** Copyright 1998 - 2008 Double Precision, Inc.
3 ** See COPYING for distribution information.
8 static const char decode64tab
[256]= {
9 100, 100, 100, 100, 100, 100, 100, 100,
10 100, 100, 100, 100, 100, 100, 100, 100,
11 100, 100, 100, 100, 100, 100, 100, 100,
12 100, 100, 100, 100, 100, 100, 100, 100,
13 100, 100, 100, 100, 100, 100, 100, 100,
14 100, 100, 100, 62, 100, 100, 100, 63,
15 52, 53, 54, 55, 56, 57, 58, 59,
16 60, 61, 100, 100, 100, 100, 100, 100,
17 100, 0, 1, 2, 3, 4, 5, 6,
18 7, 8, 9, 10, 11, 12, 13, 14,
19 15, 16, 17, 18, 19, 20, 21, 22,
20 23, 24, 25, 100, 100, 100, 100, 100,
21 100, 26, 27, 28, 29, 30, 31, 32,
22 33, 34, 35, 36, 37, 38, 39, 40,
23 41, 42, 43, 44, 45, 46, 47, 48,
24 49, 50, 51, 100, 100, 100, 100, 100,
25 100, 100, 100, 100, 100, 100, 100, 100,
26 100, 100, 100, 100, 100, 100, 100, 100,
27 100, 100, 100, 100, 100, 100, 100, 100,
28 100, 100, 100, 100, 100, 100, 100, 100,
29 100, 100, 100, 100, 100, 100, 100, 100,
30 100, 100, 100, 100, 100, 100, 100, 100,
31 100, 100, 100, 100, 100, 100, 100, 100,
32 100, 100, 100, 100, 100, 100, 100, 100,
33 100, 100, 100, 100, 100, 100, 100, 100,
34 100, 100, 100, 100, 100, 100, 100, 100,
35 100, 100, 100, 100, 100, 100, 100, 100,
36 100, 100, 100, 100, 100, 100, 100, 100,
37 100, 100, 100, 100, 100, 100, 100, 100,
38 100, 100, 100, 100, 100, 100, 100, 100,
39 100, 100, 100, 100, 100, 100, 100, 100,
40 100, 100, 100, 100, 100, 100, 100, 100};
42 int authsasl_frombase64(char *base64buf
)
46 for (j
=0; base64buf
[j
]; j
++)
47 if (decode64tab
[(unsigned char)base64buf
[j
]] >= 100)
50 if (base64buf
[j
] && base64buf
[j
+1] && base64buf
[j
+2])
52 while (base64buf
[j
] == '=') ++j
;
53 if (j
% 4) return (-1);
57 for (j
=0; j
<i
; j
+= 4)
59 int w
=decode64tab
[(int)(unsigned char)base64buf
[j
]];
60 int x
=decode64tab
[(int)(unsigned char)base64buf
[j
+1]];
61 int y
=decode64tab
[(int)(unsigned char)base64buf
[j
+2]];
62 int z
=decode64tab
[(int)(unsigned char)base64buf
[j
+3]];
65 a
= (w
<< 2) | (x
>> 4);
66 b
= (x
<< 4) | (y
>> 2);
69 if ( base64buf
[j
+2] != '=')
71 if ( base64buf
[j
+3] != '=')