Lines 4-9
__FBSDID("$FreeBSD: head/lib/libcrypt/tests/crypt_tests.c 256365 2013-10-12 06:0
Link Here
|
4 |
#include <sys/types.h> |
4 |
#include <sys/types.h> |
5 |
#include <crypt.h> |
5 |
#include <crypt.h> |
6 |
#include <unistd.h> |
6 |
#include <unistd.h> |
|
|
7 |
#include <stdio.h> |
7 |
|
8 |
|
8 |
#include <atf-c.h> |
9 |
#include <atf-c.h> |
9 |
|
10 |
|
Lines 25-38
ATF_TC_BODY(md5, tc)
Link Here
|
25 |
ATF_CHECK_STREQ(pw, want); |
26 |
ATF_CHECK_STREQ(pw, want); |
26 |
} |
27 |
} |
27 |
|
28 |
|
28 |
ATF_TC(invalid); |
29 |
ATF_TC(md5invalid); |
29 |
ATF_TC_HEAD(invalid, tc) |
30 |
ATF_TC_HEAD(md5invalid, tc) |
30 |
{ |
31 |
{ |
31 |
|
32 |
|
32 |
atf_tc_set_md_var(tc, "descr", "Tests that invalid password fails"); |
33 |
atf_tc_set_md_var(tc, "descr", "Tests that md5invalid password fails"); |
33 |
} |
34 |
} |
34 |
|
35 |
|
35 |
ATF_TC_BODY(invalid, tc) |
36 |
ATF_TC_BODY(md5invalid, tc) |
36 |
{ |
37 |
{ |
37 |
const char want[] = "$1$cafebabe$0Huu6KHrKLVWfqa4WljDE0"; |
38 |
const char want[] = "$1$cafebabe$0Huu6KHrKLVWfqa4WljDE0"; |
38 |
char *pw; |
39 |
char *pw; |
Lines 41-54
ATF_TC_BODY(invalid, tc)
Link Here
|
41 |
ATF_CHECK(strcmp(pw, want) != 0); |
42 |
ATF_CHECK(strcmp(pw, want) != 0); |
42 |
} |
43 |
} |
43 |
|
44 |
|
|
|
45 |
ATF_TC(sha256_vector_1); |
46 |
ATF_TC_HEAD(sha256_vector_1, tc) |
47 |
{ |
48 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
49 |
} |
50 |
|
51 |
ATF_TC_BODY(sha256_vector_1, tc) |
52 |
{ |
53 |
const char want[] = "$5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5"; |
54 |
char *pw; |
55 |
|
56 |
pw = crypt("Hello world!", "$5$saltstring"); |
57 |
ATF_CHECK_STREQ(pw, want); |
58 |
} |
59 |
|
60 |
ATF_TC(sha256_vector_2); |
61 |
ATF_TC_HEAD(sha256_vector_2, tc) |
62 |
{ |
63 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
64 |
} |
65 |
|
66 |
ATF_TC_BODY(sha256_vector_2, tc) |
67 |
{ |
68 |
const char want[] = "$5$rounds=10000$saltstringsaltst$3xv.VbSHBb41AL9AvLeujZkZRBAwqFMz2." |
69 |
"opqey6IcA"; |
70 |
char *pw; |
71 |
|
72 |
pw = crypt("Hello world!", "$5$rounds=10000$saltstringsaltstring"); |
73 |
ATF_CHECK_STREQ(pw, want); |
74 |
} |
75 |
|
76 |
ATF_TC(sha256_vector_3); |
77 |
ATF_TC_HEAD(sha256_vector_3, tc) |
78 |
{ |
79 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
80 |
} |
81 |
|
82 |
ATF_TC_BODY(sha256_vector_3, tc) |
83 |
{ |
84 |
const char want[] = "$5$rounds=5000$toolongsaltstrin$Un/5jzAHMgOGZ5.mWJpuVolil07guHPvOW8" |
85 |
"mGRcvxa5"; |
86 |
char *pw; |
87 |
|
88 |
pw = crypt("This is just a test", "$5$rounds=5000$toolongsaltstring"); |
89 |
ATF_CHECK_STREQ(pw, want); |
90 |
} |
91 |
|
92 |
ATF_TC(sha256_vector_4); |
93 |
ATF_TC_HEAD(sha256_vector_4, tc) |
94 |
{ |
95 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
96 |
} |
97 |
|
98 |
ATF_TC_BODY(sha256_vector_4, tc) |
99 |
{ |
100 |
const char want[] = "$5$rounds=1400$anotherlongsalts$Rx.j8H.h8HjEDGomFU8bDkXm3XIUnzyxf12" |
101 |
"oP84Bnq1"; |
102 |
char *pw; |
103 |
|
104 |
pw = crypt("a very much longer text to encrypt. This one even stretches over more" |
105 |
"than one line.", "$5$rounds=1400$anotherlongsaltstring"); |
106 |
ATF_CHECK_STREQ(pw, want); |
107 |
} |
108 |
|
109 |
ATF_TC(sha256_vector_5); |
110 |
ATF_TC_HEAD(sha256_vector_5, tc) |
111 |
{ |
112 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
113 |
} |
114 |
|
115 |
ATF_TC_BODY(sha256_vector_5, tc) |
116 |
{ |
117 |
const char want[] = "$5$rounds=77777$short$JiO1O3ZpDAxGJeaDIuqCoEFysAe1mZNJRs3pw0KQRd/"; |
118 |
char *pw; |
119 |
|
120 |
pw = crypt("we have a short salt string but not a short password", "$5$rounds=77777$short"); |
121 |
ATF_CHECK_STREQ(pw, want); |
122 |
} |
123 |
|
124 |
ATF_TC(sha256_vector_6); |
125 |
ATF_TC_HEAD(sha256_vector_6, tc) |
126 |
{ |
127 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
128 |
} |
129 |
|
130 |
ATF_TC_BODY(sha256_vector_6, tc) |
131 |
{ |
132 |
const char want[] = "$5$rounds=123456$asaltof16chars..$gP3VQ/6X7UUEW3HkBn2w1/Ptq2jxPyzV/" |
133 |
"cZKmF/wJvD"; |
134 |
char *pw; |
135 |
|
136 |
pw = crypt("a short string", "$5$rounds=123456$asaltof16chars.."); |
137 |
ATF_CHECK_STREQ(pw, want); |
138 |
} |
139 |
|
140 |
ATF_TC(sha256_vector_7); |
141 |
ATF_TC_HEAD(sha256_vector_7, tc) |
142 |
{ |
143 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha256.c"); |
144 |
} |
145 |
|
146 |
ATF_TC_BODY(sha256_vector_7, tc) |
147 |
{ |
148 |
const char want[] = "$5$rounds=1000$roundstoolow$yfvwcWrQ8l/K0DAWyuPMDNHpIVlTQebY9l/gL97" |
149 |
"2bIC"; |
150 |
char *pw; |
151 |
|
152 |
pw = crypt("the minimum number is still observed", "$5$rounds=10$roundstoolow"); |
153 |
ATF_CHECK_STREQ(pw, want); |
154 |
} |
155 |
|
156 |
ATF_TC(sha512_vector_1); |
157 |
ATF_TC_HEAD(sha512_vector_1, tc) |
158 |
{ |
159 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
160 |
} |
161 |
|
162 |
ATF_TC_BODY(sha512_vector_1, tc) |
163 |
{ |
164 |
const char want[] = "$6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJu" |
165 |
"esI68u4OTLiBFdcbYEdFCoEOfaS35inz1"; |
166 |
char *pw; |
167 |
|
168 |
pw = crypt("Hello world!", "$6$saltstring"); |
169 |
ATF_CHECK_STREQ(pw, want); |
170 |
} |
171 |
|
172 |
ATF_TC(sha512_vector_2); |
173 |
ATF_TC_HEAD(sha512_vector_2, tc) |
174 |
{ |
175 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
176 |
} |
177 |
|
178 |
ATF_TC_BODY(sha512_vector_2, tc) |
179 |
{ |
180 |
const char want[] = "$6$rounds=10000$saltstringsaltst$OW1/O6BYHV6BcXZu8QVeXbDWra3Oeqh0sb" |
181 |
"HbbMCVNSnCM/UrjmM0Dp8vOuZeHBy/YTBmSK6H9qs/y3RnOaw5v."; |
182 |
char *pw; |
183 |
|
184 |
pw = crypt("Hello world!", "$6$rounds=10000$saltstringsaltstring"); |
185 |
ATF_CHECK_STREQ(pw, want); |
186 |
} |
187 |
|
188 |
ATF_TC(sha512_vector_3); |
189 |
ATF_TC_HEAD(sha512_vector_3, tc) |
190 |
{ |
191 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
192 |
} |
193 |
|
194 |
ATF_TC_BODY(sha512_vector_3, tc) |
195 |
{ |
196 |
const char want[] = "$6$rounds=5000$toolongsaltstrin$lQ8jolhgVRVhY4b5pZKaysCLi0QBxGoNeKQ" |
197 |
"zQ3glMhwllF7oGDZxUhx1yxdYcz/e1JSbq3y6JMxxl8audkUEm0"; |
198 |
char *pw; |
199 |
|
200 |
pw = crypt("This is just a test", "$6$rounds=5000$toolongsaltstring"); |
201 |
ATF_CHECK_STREQ(pw, want); |
202 |
} |
203 |
|
204 |
ATF_TC(sha512_vector_4); |
205 |
ATF_TC_HEAD(sha512_vector_4, tc) |
206 |
{ |
207 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
208 |
} |
209 |
|
210 |
ATF_TC_BODY(sha512_vector_4, tc) |
211 |
{ |
212 |
const char want[] = "$6$rounds=1400$anotherlongsalts$POfYwTEok97VWcjxIiSOjiykti.o/pQs.wP" |
213 |
"vMxQ6Fm7I6IoYN3CmLs66x9t0oSwbtEW7o7UmJEiDwGqd8p4ur1"; |
214 |
char *pw; |
215 |
|
216 |
pw = crypt("a very much longer text to encrypt. This one even stretches over more" |
217 |
"than one line.", "$6$rounds=1400$anotherlongsaltstring"); |
218 |
ATF_CHECK_STREQ(pw, want); |
219 |
} |
220 |
|
221 |
ATF_TC(sha512_vector_5); |
222 |
ATF_TC_HEAD(sha512_vector_5, tc) |
223 |
{ |
224 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
225 |
} |
226 |
|
227 |
ATF_TC_BODY(sha512_vector_5, tc) |
228 |
{ |
229 |
const char want[] = "$6$rounds=77777$short$WuQyW2YR.hBNpjjRhpYD/ifIw05xdfeEyQoMxIXbkvr0g" |
230 |
"ge1a1x3yRULJ5CCaUeOxFmtlcGZelFl5CxtgfiAc0"; |
231 |
char *pw; |
232 |
|
233 |
pw = crypt("we have a short salt string but not a short password", "$6$rounds=77777$short"); |
234 |
ATF_CHECK_STREQ(pw, want); |
235 |
} |
236 |
|
237 |
ATF_TC(sha512_vector_6); |
238 |
ATF_TC_HEAD(sha512_vector_6, tc) |
239 |
{ |
240 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
241 |
} |
242 |
|
243 |
ATF_TC_BODY(sha512_vector_6, tc) |
244 |
{ |
245 |
const char want[] = "$6$rounds=123456$asaltof16chars..$BtCwjqMJGx5hrJhZywWvt0RLE8uZ4oPwc" |
246 |
"elCjmw2kSYu.Ec6ycULevoBK25fs2xXgMNrCzIMVcgEJAstJeonj1"; |
247 |
char *pw; |
248 |
|
249 |
pw = crypt("a short string", "$6$rounds=123456$asaltof16chars.."); |
250 |
ATF_CHECK_STREQ(pw, want); |
251 |
} |
252 |
|
253 |
ATF_TC(sha512_vector_7); |
254 |
ATF_TC_HEAD(sha512_vector_7, tc) |
255 |
{ |
256 |
atf_tc_set_md_var(tc, "descr", "Test vector from crypt-sha512.c"); |
257 |
} |
258 |
|
259 |
ATF_TC_BODY(sha512_vector_7, tc) |
260 |
{ |
261 |
const char want[] = "$6$rounds=1000$roundstoolow$kUMsbe306n21p9R.FRkW3IGn.S9NPN0x50YhH1x" |
262 |
"hLsPuWGsUSklZt58jaTfF4ZEQpyUNGc0dqbpBYYBaHHrsX."; |
263 |
char *pw; |
264 |
|
265 |
pw = crypt("the minimum number is still observed", "$6$rounds=10$roundstoolow"); |
266 |
ATF_CHECK_STREQ(pw, want); |
267 |
} |
268 |
|
269 |
#ifdef HAS_BLOWFISH |
270 |
ATF_TC(blf_vector_1); |
271 |
ATF_TC_HEAD(blf_vector_1, tc) |
272 |
{ |
273 |
atf_tc_set_md_var(tc, "descr", "Solar Designer wrapper.c test vector 1"); |
274 |
} |
275 |
|
276 |
ATF_TC_BODY(blf_vector_1, tc) |
277 |
{ |
278 |
const char want[] = "$2a$05$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW"; |
279 |
char *pw; |
280 |
|
281 |
pw = crypt("U*U", want); |
282 |
|
283 |
ATF_CHECK_STREQ(pw, want); |
284 |
} |
285 |
|
286 |
ATF_TC(blf_vector_2); |
287 |
ATF_TC_HEAD(blf_vector_2, tc) |
288 |
{ |
289 |
atf_tc_set_md_var(tc, "descr", "Solar Designer wrapper.c test vector 2"); |
290 |
} |
291 |
|
292 |
ATF_TC_BODY(blf_vector_2, tc) |
293 |
{ |
294 |
const char want[] = "$2a$05$CCCCCCCCCCCCCCCCCCCCC.VGOzA784oUp/Z0DY336zx7pLYAy0lwK"; |
295 |
char *pw; |
296 |
|
297 |
pw = crypt("U*U*", want); |
298 |
|
299 |
ATF_CHECK_STREQ(pw, want); |
300 |
} |
301 |
|
302 |
ATF_TC(blf_vector_3); |
303 |
ATF_TC_HEAD(blf_vector_3, tc) |
304 |
{ |
305 |
atf_tc_set_md_var(tc, "descr", "Solar Designer wrapper.c test vector 3 - long password"); |
306 |
} |
307 |
|
308 |
ATF_TC_BODY(blf_vector_3, tc) |
309 |
{ |
310 |
const char want[] = "$2a$05$abcdefghijklmnopqrstuu5s2v8.iXieOjg/.AySBTTZIIVFJeBui"; |
311 |
char *pw; |
312 |
|
313 |
pw = crypt("0123456789abcdefghijklmnopqrstuvwxyz" |
314 |
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" |
315 |
"chars after 72 are ignored", want); |
316 |
|
317 |
ATF_CHECK_STREQ(pw, want); |
318 |
} |
319 |
|
320 |
ATF_TC(blf_vector_4); |
321 |
ATF_TC_HEAD(blf_vector_4, tc) |
322 |
{ |
323 |
atf_tc_set_md_var(tc, "descr", "Solar Designer wrapper.c test vector 4"); |
324 |
} |
325 |
|
326 |
ATF_TC_BODY(blf_vector_4, tc) |
327 |
{ |
328 |
const char want[] = "$2b$05$/OK.fbVrR/bpIqNJ5ianF.CE5elHaaO4EbggVDjb8P19RukzXSM3e"; |
329 |
char *pw; |
330 |
|
331 |
pw = crypt("\xff\xff\xa3", want); |
332 |
|
333 |
ATF_CHECK_STREQ(pw, want); |
334 |
} |
335 |
|
336 |
ATF_TC(blf_vector_5); |
337 |
ATF_TC_HEAD(blf_vector_5, tc) |
338 |
{ |
339 |
atf_tc_set_md_var(tc, "descr", "Solar Designer wrapper.c test vector 5 - ensure our $2a$05$ matches the $2y$05$"); |
340 |
} |
341 |
|
342 |
ATF_TC_BODY(blf_vector_5, tc) |
343 |
{ |
344 |
const char want[] = "$2a$05$/OK.fbVrR/bpIqNJ5ianF.nRht2l/HRhr6zmCp9vYUvvsqynflf9e"; |
345 |
char *pw; |
346 |
|
347 |
pw = crypt("\xff\xa3" "345", want); |
348 |
|
349 |
ATF_CHECK_STREQ(pw, want); |
350 |
} |
351 |
|
352 |
#endif |
353 |
|
44 |
/* |
354 |
/* |
45 |
* This function must not do anything except enumerate |
355 |
* This function must not do anything except enumerate |
46 |
* the test cases, per atf-c-api(3). |
356 |
* the test cases, per atf-c-api(3). |
47 |
*/ |
357 |
*/ |
48 |
ATF_TP_ADD_TCS(tp) |
358 |
ATF_TP_ADD_TCS(tp) |
49 |
{ |
359 |
{ |
50 |
|
|
|
51 |
ATF_TP_ADD_TC(tp, md5); |
360 |
ATF_TP_ADD_TC(tp, md5); |
52 |
ATF_TP_ADD_TC(tp, invalid); |
361 |
ATF_TP_ADD_TC(tp, md5invalid); |
|
|
362 |
|
363 |
ATF_TP_ADD_TC(tp, sha256_vector_1); |
364 |
ATF_TP_ADD_TC(tp, sha256_vector_2); |
365 |
ATF_TP_ADD_TC(tp, sha256_vector_3); |
366 |
ATF_TP_ADD_TC(tp, sha256_vector_4); |
367 |
/* |
368 |
ATF_TP_ADD_TC(tp, sha256_vector_5); |
369 |
ATF_TP_ADD_TC(tp, sha256_vector_6); |
370 |
*/ |
371 |
ATF_TP_ADD_TC(tp, sha256_vector_7); |
372 |
|
373 |
ATF_TP_ADD_TC(tp, sha512_vector_1); |
374 |
ATF_TP_ADD_TC(tp, sha512_vector_2); |
375 |
ATF_TP_ADD_TC(tp, sha512_vector_3); |
376 |
ATF_TP_ADD_TC(tp, sha512_vector_4); |
377 |
/* |
378 |
ATF_TP_ADD_TC(tp, sha512_vector_5); |
379 |
ATF_TP_ADD_TC(tp, sha512_vector_6); |
380 |
*/ |
381 |
ATF_TP_ADD_TC(tp, sha512_vector_7); |
382 |
|
383 |
#ifdef HAS_BLOWFISH |
384 |
ATF_TP_ADD_TC(tp, blf_vector_1); |
385 |
ATF_TP_ADD_TC(tp, blf_vector_2); |
386 |
ATF_TP_ADD_TC(tp, blf_vector_3); |
387 |
ATF_TP_ADD_TC(tp, blf_vector_4); |
388 |
ATF_TP_ADD_TC(tp, blf_vector_5); |
389 |
#endif |
390 |
|
53 |
return atf_no_error(); |
391 |
return atf_no_error(); |
54 |
} |
392 |
} |