5 static const base64_charset encs
[] = { BASE64_STANDARD
, BASE64_URL
};
9 static void check_base64 (char *out
, const size_t out_sz
, const char *in
, const size_t in_len
, const base64_charset enc
) {
10 force_assert(out_sz
== li_to_base64_no_padding(out
, out_sz
, (const unsigned char *)in
, in_len
, enc
));
13 force_assert(NULL
!= buffer_append_base64_decode(check
, out
, out_sz
, enc
));
14 force_assert(buffer_is_equal_string(check
, in
, in_len
));
17 static void check_all_len_0 (const base64_charset enc
) {
18 check_base64(NULL
, 0, "", 0, enc
);
21 static void check_all_len_1 (const base64_charset enc
) {
23 for (c1
= 0; c1
< 256; ++c1
) {
24 unsigned char in
[] = { c1
};
25 char out
[2] = { 0, 0 };
26 check_base64(out
, sizeof(out
), (char *)in
, sizeof(in
), enc
);
30 static void check_all_len_2 (const base64_charset enc
) {
32 for (c1
= 0; c1
< 256; ++c1
) for (c2
= 0; c2
< 256; ++c2
) {
33 unsigned char in
[] = { c1
, c2
};
34 char out
[3] = { 0, 0, 0 };
35 check_base64(out
, sizeof(out
), (char *)in
, sizeof(in
), enc
);
39 static void check_all_len_3 (const base64_charset enc
) {
40 unsigned int c1
, c2
, c3
;
41 for (c1
= 0; c1
< 256; ++c1
) for (c2
= 0; c2
< 256; ++c2
) for (c3
= 0; c3
< 256; ++c3
) {
42 unsigned char in
[] = { c1
, c2
, c3
};
43 char out
[4] = { 0, 0, 0, 0 };
44 check_base64(out
, sizeof(out
), (char *)in
, sizeof(in
), enc
);
49 check
= buffer_init();
51 for (unsigned int enc
= 0; enc
< sizeof(encs
)/sizeof(*encs
); ++enc
) {
52 check_all_len_0(encs
[enc
]);
53 check_all_len_1(encs
[enc
]);
54 check_all_len_2(encs
[enc
]);
55 check_all_len_3(encs
[enc
]);