diff options
Diffstat (limited to '')
| -rw-r--r-- | src/regress/lib/libcrypto/base64/base64test.c | 98 |
1 files changed, 97 insertions, 1 deletions
diff --git a/src/regress/lib/libcrypto/base64/base64test.c b/src/regress/lib/libcrypto/base64/base64test.c index 9b8ac91e72..cfe7922267 100644 --- a/src/regress/lib/libcrypto/base64/base64test.c +++ b/src/regress/lib/libcrypto/base64/base64test.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: base64test.c,v 1.7 2020/03/10 11:10:53 inoguchi Exp $ */ | 1 | /* $OpenBSD: base64test.c,v 1.8 2020/03/10 11:13:28 inoguchi Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2014 Joel Sing <jsing@openbsd.org> |
| 4 | * | 4 | * |
| @@ -119,6 +119,102 @@ struct base64_test base64_nl_tests[] = { | |||
| 119 | 74, | 119 | 74, |
| 120 | 0, | 120 | 0, |
| 121 | }, | 121 | }, |
| 122 | |||
| 123 | /* OpenSSL-1.1.1d test */ | ||
| 124 | /* canonical */ | ||
| 125 | { "", 0, "", 0, 0, }, | ||
| 126 | /* canonical */ | ||
| 127 | { "h", 1, "aA==\n", 5, 1, }, | ||
| 128 | /* canonical */ | ||
| 129 | { "hello", 5, "aGVsbG8=\n", 9, 5, }, | ||
| 130 | /* canonical */ | ||
| 131 | { "hello world!", 12, "aGVsbG8gd29ybGQh\n", 17, 12, }, | ||
| 132 | /* canonical */ | ||
| 133 | { "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\xa0\xb0\xc0\xd0\xe0\xf0\x00", 17, "AAECAwQFBgcICaCwwNDg8AA=\n", 25, 17, }, | ||
| 134 | /* invalid # Missing padding */ | ||
| 135 | { "", -1, "aGVsbG8", 7, 0, }, | ||
| 136 | /* invalid */ | ||
| 137 | { "", -1, "aGVsbG8\n", 8, 0, }, | ||
| 138 | /* valid # Tolerate missing newline */ | ||
| 139 | { "hello", -1, "aGVsbG8=", 8, 5, }, | ||
| 140 | /* invalid # Don't tolerate extra trailing '=' */ | ||
| 141 | { "", -1, "aGVsbG8==\n", 10, 0, }, | ||
| 142 | /* invalid */ | ||
| 143 | { "", -1, "aGVsbG8===\n", 11, 0, }, | ||
| 144 | /* invalid # Don't tolerate data after '=' */ | ||
| 145 | { "", -1, "aGV=sbG8=\n", 10, 0, }, | ||
| 146 | /* valid # Newlines are ignored */ | ||
| 147 | { "hello", -1, "aGV\nsbG8=\n", 10, 5, }, | ||
| 148 | /* canonical */ | ||
| 149 | { "hello", 5, "\x61\x47\x56\x73\x62\x47\x38\x3d\x0a", 9, 5, }, | ||
| 150 | /* invalid # Invalid characters */ | ||
| 151 | { "", -1, "\x61\x47\x56\x73\x62\x47\x38\x3d\x0a\x00", 10, 0, }, | ||
| 152 | /* invalid */ | ||
| 153 | { "", -1, "\x61\x47\x56\x00\x73\x62\x47\x38\x3d\x0a", 10, 0, }, | ||
| 154 | /* invalid */ | ||
| 155 | { "", -1, "\x61\x47\x56\x01\x73\x62\x47\x38\x3d\x0a", 10, 0, }, | ||
| 156 | /* invalid */ | ||
| 157 | { "", -1, "\x61\x47\x56\x80\x73\x62\x47\x38\x3d\x0a", 10, 0, }, | ||
| 158 | /* invalid */ | ||
| 159 | { "", -1, "\xe1\x47\x56\x73\x62\x47\x38\x3d\x0a", 9, 0, }, | ||
| 160 | /* canonical */ | ||
| 161 | { "OpenSSLOpenSSL\n", 15, "T3BlblNTTE9wZW5TU0wK\n", 21, 15, }, | ||
| 162 | /* valid */ | ||
| 163 | { "OpenSSLOpenSSL\n", -1, "T3BlblNTTE9wZW5TU0wK", 20, 15, }, | ||
| 164 | /* invalid # Truncate 1-3 chars */ | ||
| 165 | { "", -1, "T3BlblNTTE9wZW5TU0w", 19, 0, }, | ||
| 166 | /* invalid */ | ||
| 167 | { "", -1, "T3BlblNTTE9wZW5TU0", 18, 0, }, | ||
| 168 | /* invalid */ | ||
| 169 | { "", -1, "T3BlblNTTE9wZW5TU", 17, 0, }, | ||
| 170 | /* invalid */ | ||
| 171 | { "", -1, "T3BlblNTTE9wZW5TU0wK====", 24, 0, }, | ||
| 172 | /* invalid */ | ||
| 173 | { "", -1, "T3BlblNTTE9wZW5TU0wK============================================\n", 65, 0, }, | ||
| 174 | /* invalid */ | ||
| 175 | { "", -1, "YQ==YQ==YQ==\n", 13, 0, }, | ||
| 176 | /* invalid */ | ||
| 177 | { "", -1, "A", 1, 0, }, | ||
| 178 | /* invalid */ | ||
| 179 | { "", -1, "A\n", 2, 0, }, | ||
| 180 | /* invalid */ | ||
| 181 | { "", -1, "A=", 2, 0, }, | ||
| 182 | /* invalid */ | ||
| 183 | { "", -1, "A==\n", 4, 0, }, | ||
| 184 | /* invalid */ | ||
| 185 | { "", -1, "A===\n", 5, 0, }, | ||
| 186 | /* invalid */ | ||
| 187 | { "", -1, "A====\n", 6, 0, }, | ||
| 188 | /* valid */ | ||
| 189 | { "OpenSSLOpenSSL\n", -1, "T3BlblNTTE9wZW5TU0wK\n\n", 22, 15, }, | ||
| 190 | /* valid */ | ||
| 191 | { "OpenSSLOpenSSL\n", -1, "T3BlblNTTE\n9wZW5TU0wK", 21, 15, }, | ||
| 192 | /* invalid # CVE 2015-0292 */ | ||
| 193 | { "", -1, "ZW5jb2RlIG1lCg==================================================================\n", 81, 0, }, | ||
| 194 | /* canonical */ | ||
| 195 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 46, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==\n", 65, 46, }, | ||
| 196 | /* valid */ | ||
| 197 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA\n==\n", 66, 46, }, | ||
| 198 | /* valid */ | ||
| 199 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA=\n=\n", 66, 46, }, | ||
| 200 | /* invalid */ | ||
| 201 | { "", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA====\n", 67, 0, }, | ||
| 202 | /* canonical # Multiline output without padding */ | ||
| 203 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 60, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\neHh4eHh4eHh4eHh4\n", 82, 60, }, | ||
| 204 | /* canonical # Multiline output with padding */ | ||
| 205 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 64, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\neHh4eHh4eHh4eHh4eHh4eA==\n", 90, 64, }, | ||
| 206 | /* valid # Multiline output with line break in the middle of a b64 block is accepted */ | ||
| 207 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh\n4eHh4eHh4eHh4eHh4eHh4eA==\n", 90, 64, }, | ||
| 208 | /* valid # Long lines are accepted */ | ||
| 209 | { "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==\n", 89, 64, }, | ||
| 210 | /* invalid # Multiline input with data after '='. */ | ||
| 211 | { "", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eA==\neHh4eHh4eHh4eHh4eHh4eHh4\n", 90, 0, }, | ||
| 212 | /* invalid */ | ||
| 213 | { "", -1, "eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4\neA==eHh4eHh4eHh4eHh4eHh4\n", 90, 0, }, | ||
| 214 | /* valid # B64_EOF ('-') terminates input and trailing bytes are ignored */ | ||
| 215 | { "OpenSSLOpenSSL\n", -1, "T3BlblNTTE9wZW5TU0wK\n-abcd", 26, 15, }, | ||
| 216 | /* valid */ | ||
| 217 | { "OpenSSLOpenSSL\n", -1, "T3BlblNTTE9wZW5TU0wK-abcd", 25, 15, }, | ||
| 122 | }; | 218 | }; |
| 123 | 219 | ||
| 124 | #define N_NL_TESTS (sizeof(base64_nl_tests) / sizeof(*base64_nl_tests)) | 220 | #define N_NL_TESTS (sizeof(base64_nl_tests) / sizeof(*base64_nl_tests)) |
