1 /* Self tests for base64.
2 Copyright (C) 2004 Free Software Foundation, Inc.
3 Written by Simon Josefsson.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License along
16 with this program; if not, write to the Free Software Foundation,
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
31 main (int argc, char *argv[])
33 const char *in = "abcdefghijklmnop";
34 const char *b64in = "YWJjZGVmZw==";
39 memset (out, 0x42, sizeof (out));
40 base64_encode (in, 0, out, 0);
42 fprintf (stderr, "failure\n");
44 memset (out, 0x42, sizeof (out));
45 base64_encode (in, 1, out, 1);
46 if (memcmp (out, "YQ==", 1) != 0)
49 fprintf (stderr, "failure (%s)\n", out);
52 memset (out, 0x42, sizeof (out));
53 base64_encode (in, 1, out, 2);
54 if (memcmp (out, "YQ==", 2) != 0)
57 fprintf (stderr, "failure (%s)\n", out);
60 memset (out, 0x42, sizeof (out));
61 base64_encode (in, 1, out, 3);
62 if (memcmp (out, "YQ==", 3) != 0)
65 fprintf (stderr, "failure (%s)\n", out);
68 memset (out, 0x42, sizeof (out));
69 base64_encode (in, 1, out, 4);
70 if (memcmp (out, "YQ==", 4) != 0)
73 fprintf (stderr, "failure (%s)\n", out);
76 memset (out, 0x42, sizeof (out));
77 base64_encode (in, 1, out, 8);
78 if (memcmp (out, "YQ==", 4) != 0)
81 fprintf (stderr, "failure (%s)\n", out);
84 memset (out, 0x42, sizeof (out));
85 base64_encode (in, 2, out, 4);
86 if (memcmp (out, "YWI=", 4) != 0)
89 fprintf (stderr, "failure (%s)\n", out);
92 memset (out, 0x42, sizeof (out));
93 base64_encode (in, 3, out, 4);
94 if (memcmp (out, "YWJj", 4) != 0)
97 fprintf (stderr, "failure (%s)\n", out);
100 memset (out, 0x42, sizeof (out));
101 base64_encode (in, 4, out, 5);
102 if (memcmp (out, "YWJjZA==", 5) != 0)
105 fprintf (stderr, "failure (%s)\n", out);
108 memset (out, 0x42, sizeof (out));
109 base64_encode (in, 4, out, 100);
110 if (memcmp (out, "YWJjZA==", 6) != 0)
113 fprintf (stderr, "failure (%s)\n", out);
118 memset (out, 0x42, sizeof (out));
120 ok = base64_decode (b64in, 4, out, &len);
122 fprintf (stderr, "decode failed\n");
124 fprintf (stderr, "failure (%d)\n", len);
126 memset (out, 0x42, sizeof (out));
128 ok = base64_decode (b64in, 4, out, &len);
130 fprintf (stderr, "decode failed\n");
131 if (len != 1 || memcmp (out, "abcdefg", 1) != 0)
134 fprintf (stderr, "failure (%d: %s)\n", len, out);
137 memset (out, 0x42, sizeof (out));
139 ok = base64_decode (b64in, 4, out, &len);
141 fprintf (stderr, "decode failed\n");
142 if (len != 2 || memcmp (out, "abcdefg", 2) != 0)
145 fprintf (stderr, "failure (%d: %s)\n", len, out);
148 memset (out, 0x42, sizeof (out));
150 ok = base64_decode (b64in, 4, out, &len);
152 fprintf (stderr, "decode failed\n");
153 if (len != 3 || memcmp (out, "abcdefg", 3) != 0)
156 fprintf (stderr, "failure (%d: %s)\n", len, out);
159 memset (out, 0x42, sizeof (out));
161 ok = base64_decode (b64in, 4, out, &len);
163 fprintf (stderr, "decode failed\n");
164 if (len != 3 || memcmp (out, "abcdefg", 3) != 0)
167 fprintf (stderr, "failure (%d: %s)\n", len, out);
170 memset (out, 0x42, sizeof (out));
172 ok = base64_decode (b64in, strlen (b64in), out, &len);
174 fprintf (stderr, "decode failed\n");
175 if (len != 7 || memcmp (out, "abcdefg", 7) != 0)
178 fprintf (stderr, "failure (%d: %s)\n", len, out);