3 const char b64_table
[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
5 u32
b64_encode (u8
*base64_hash
, const u32 len
, const u8
*base64_plain
)
7 u8
*out_ptr
= (u8
*) base64_hash
;
8 u8
*in_ptr
= (u8
*) base64_plain
;
12 for (i
= 0; i
< (len
- 2); i
+= 3)
14 char out_val0
= b64_table
[ ((in_ptr
[0] >> 2) & 0x3f)];
15 char out_val1
= b64_table
[((in_ptr
[0] << 4) & 0x30) | ((in_ptr
[1] >> 4) & 0x0f)];
16 char out_val2
= b64_table
[((in_ptr
[1] << 2) & 0x3c) | ((in_ptr
[2] >> 6) & 0x03)];
17 char out_val3
= b64_table
[ ((in_ptr
[2] >> 0) & 0x3f)];
19 out_ptr
[0] = out_val0
& 0x7f;
20 out_ptr
[1] = out_val1
& 0x7f;
21 out_ptr
[2] = out_val2
& 0x7f;
22 out_ptr
[3] = out_val3
& 0x7f;
28 char out_val0
= b64_table
[ ((in_ptr
[0] >> 2) & 0x3f)];
29 char out_val1
= b64_table
[((in_ptr
[0] << 4) & 0x30) ];
31 out_ptr
[0] = out_val0
& 0x7f;
32 out_ptr
[1] = out_val1
& 0x7f;
40 char out_val0
= b64_table
[ ((in_ptr
[0] >> 2) & 0x3f)];
41 char out_val1
= b64_table
[((in_ptr
[0] << 4) & 0x30) | ((in_ptr
[1] >> 4) & 0x0f)];
42 char out_val2
= b64_table
[((in_ptr
[1] << 2) & 0x3c) ];
44 out_ptr
[0] = out_val0
& 0x7f;
45 out_ptr
[1] = out_val1
& 0x7f;
46 out_ptr
[2] = out_val2
& 0x7f;
53 return (out_ptr
- base64_hash
+ 0);