]>
git.ipfire.org Git - thirdparty/squid.git/blob - helpers/negotiate_auth/wrapper/nw_base64.cc
2 * Markus Moeller has modified the following code from Squid
11 static void nw_base64_init(void);
13 static int base64_initialized
= 0;
14 #define BASE64_VALUE_SZ 256
15 int base64_value
[BASE64_VALUE_SZ
];
16 const char base64_code
[] =
17 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
25 for (i
= 0; i
< BASE64_VALUE_SZ
; i
++)
28 for (i
= 0; i
< 64; i
++)
29 base64_value
[(int) base64_code
[i
]] = i
;
30 base64_value
[(int)'='] = 0;
32 base64_initialized
= 1;
36 nw_base64_decode(char *result
, const char *data
, int result_size
)
43 if (!base64_initialized
)
47 for (j
= 0; *data
; data
++) {
48 unsigned int k
= ((unsigned char) *data
) % BASE64_VALUE_SZ
;
49 if (base64_value
[k
] < 0)
52 val
+= base64_value
[k
];
55 /* One quantum of four encoding characters/24 bit */
58 result
[j
++] = val
>> 16; /* High 8 bits */
61 result
[j
++] = (val
>> 8) & 0xff; /* Mid 8 bits */
64 result
[j
++] = val
& 0xff; /* Low 8 bits */
71 nw_base64_decode_len(const char *data
)
76 for (i
= strlen(data
) - 1; i
>= 0; i
--) {
82 return strlen(data
) / 4 * 3 - j
;