1
/* Small test program to test the base64 encoding and decoding */
13
string_encode_decode (char *s)
19
n = base64_encode (s, strlen (s), encoded, sizeof (encoded) - 1, 0);
22
g_print ("base64 encoding failed for '%s'", s);
25
g_print ("'%s' -> '%s' (%d) ", s, encoded, n);
26
n = base64_decode (encoded, strlen (encoded), decoded, sizeof (decoded) - 1,
30
g_print ("\nbase64 decoding failed for '%s'", s);
33
if (! strcmp (s, decoded))
34
g_print ("-> '%s' (%d)\n", decoded, n);
37
g_print ("-> '%s' (%d) MISMATCH!\n", decoded, n);
38
g_print ("decoded buffer does not match original!\n");
45
buffer_encode_decode (char *buf,
53
n = base64_encode (buf, buf_len, encoded, sizeof (encoded) - 1, columns);
56
g_print ("base64 encoding failed");
59
g_print ("buffer length %d -> encoded %d (columns: %d) ", buf_len, n,
61
n = base64_decode (encoded, strlen (encoded), decoded, sizeof (decoded) - 1,
65
g_print ("\nbase64 decoding failed");
68
if ((n == buf_len) && ! memcmp (buf, decoded, n))
69
g_print ("-> decoded %d match OK\n", n);
72
g_print ("-> decoded %d MISMATCH!\n", n);
73
g_print ("decoded buffer does not match original!\n");
80
test_decode (char *encoded,
83
gboolean ignore_errors)
88
n = base64_decode (encoded, strlen (encoded), decoded, sizeof (decoded) - 1,
93
g_print ("'%s' failed as expected\n", encoded);
96
g_print ("'%s' could not be decoded (length: %d, expected %d)\n",
97
encoded, n, expected_len);
101
else if ((n == expected_len) && ! memcmp (expected, decoded, n))
104
g_print ("'%s' decoded OK (%d) - invalid chars ignored\n", encoded, n);
106
g_print ("'%s' decoded OK (%d)\n", encoded, n);
110
g_print ("'%s' not decoded as expected (length: %d, expected %d)\n",
111
encoded, n, expected_len);
125
g_print ("Testing base64 encoding ...\n");
126
failed += string_encode_decode ("");
127
failed += string_encode_decode ("A");
128
failed += string_encode_decode ("AB");
129
failed += string_encode_decode ("ABC");
130
failed += string_encode_decode ("ABCD");
131
failed += string_encode_decode ("ABCDE");
132
failed += string_encode_decode ("ABCDEF");
133
failed += string_encode_decode ("ABCDEFG");
134
failed += string_encode_decode ("ABCDEFGH");
135
failed += string_encode_decode ("ABCDEFGHI");
136
failed += string_encode_decode ("abcdefghik");
137
failed += string_encode_decode ("1234567890abcdefghijklmnopqrstuvwxyz");
138
failed += string_encode_decode ("«© Raphaël»");
139
for (i = 0; i < sizeof (buf); i++)
140
buf[i] = (char) (i % 0xff);
141
failed += buffer_encode_decode (buf, sizeof (buf), 0);
142
failed += buffer_encode_decode (buf, sizeof (buf), 76);
143
failed += buffer_encode_decode (buf, sizeof (buf), 4);
144
failed += buffer_encode_decode (buf, sizeof (buf), 1);
145
for (i = 0; i < sizeof (buf); i++)
146
buf[i] = (char) (0xff - (i % 0xff));
147
failed += buffer_encode_decode (buf, 600, 0);
148
failed += buffer_encode_decode (buf, 500, 0);
149
failed += buffer_encode_decode (buf, 400, 0);
150
failed += test_decode ("QUJD", "ABC", 3, FALSE);
151
failed += test_decode (" Q\tU J\nDR\rA==", "ABCD", 4, FALSE);
152
failed += test_decode ("?", "", -1, FALSE);
153
failed += test_decode ("?", "", 0, TRUE);
154
failed += test_decode ("////", "\377\377\377", 3, FALSE);
155
failed += test_decode ("---/./(/)/*", "", -1, FALSE);
156
failed += test_decode ("---/./(/)/*", "\377\377\377", 3, TRUE);
157
failed += test_decode ("AA==", "\0", 1, FALSE);
158
failed += test_decode ("AAA=", "\0\0", 2, FALSE);
161
g_print ("%d test(s) failed!\n", failed);
164
g_print ("No problems detected.\n");