162b43b7fSSimon J. Gerraty #include <sys/cdefs.h>
262b43b7fSSimon J. Gerraty #include <sys/types.h>
362b43b7fSSimon J. Gerraty #include <crypt.h>
462b43b7fSSimon J. Gerraty #include <unistd.h>
562b43b7fSSimon J. Gerraty
662b43b7fSSimon J. Gerraty #include <atf-c.h>
762b43b7fSSimon J. Gerraty
862b43b7fSSimon J. Gerraty #define LEET "0.s0.l33t"
962b43b7fSSimon J. Gerraty
1062b43b7fSSimon J. Gerraty ATF_TC(md5);
ATF_TC_HEAD(md5,tc)1162b43b7fSSimon J. Gerraty ATF_TC_HEAD(md5, tc)
1262b43b7fSSimon J. Gerraty {
1362b43b7fSSimon J. Gerraty
1462b43b7fSSimon J. Gerraty atf_tc_set_md_var(tc, "descr", "Tests the MD5 based password hash");
1562b43b7fSSimon J. Gerraty }
1662b43b7fSSimon J. Gerraty
ATF_TC_BODY(md5,tc)1762b43b7fSSimon J. Gerraty ATF_TC_BODY(md5, tc)
1862b43b7fSSimon J. Gerraty {
1962b43b7fSSimon J. Gerraty const char want[] = "$1$deadbeef$0Huu6KHrKLVWfqa4WljDE0";
2062b43b7fSSimon J. Gerraty char *pw;
2162b43b7fSSimon J. Gerraty
2262b43b7fSSimon J. Gerraty pw = crypt(LEET, want);
2362b43b7fSSimon J. Gerraty ATF_CHECK_STREQ(pw, want);
2462b43b7fSSimon J. Gerraty }
2562b43b7fSSimon J. Gerraty
2662b43b7fSSimon J. Gerraty ATF_TC(invalid);
ATF_TC_HEAD(invalid,tc)2762b43b7fSSimon J. Gerraty ATF_TC_HEAD(invalid, tc)
2862b43b7fSSimon J. Gerraty {
2962b43b7fSSimon J. Gerraty
3062b43b7fSSimon J. Gerraty atf_tc_set_md_var(tc, "descr", "Tests that invalid password fails");
3162b43b7fSSimon J. Gerraty }
3262b43b7fSSimon J. Gerraty
ATF_TC_BODY(invalid,tc)3362b43b7fSSimon J. Gerraty ATF_TC_BODY(invalid, tc)
3462b43b7fSSimon J. Gerraty {
3562b43b7fSSimon J. Gerraty const char want[] = "$1$cafebabe$0Huu6KHrKLVWfqa4WljDE0";
3662b43b7fSSimon J. Gerraty char *pw;
3762b43b7fSSimon J. Gerraty
3862b43b7fSSimon J. Gerraty pw = crypt(LEET, want);
3962b43b7fSSimon J. Gerraty ATF_CHECK(strcmp(pw, want) != 0);
4062b43b7fSSimon J. Gerraty }
4162b43b7fSSimon J. Gerraty
4262b43b7fSSimon J. Gerraty /*
4362b43b7fSSimon J. Gerraty * This function must not do anything except enumerate
44*ec0e2ac6SRui Paulo * the test cases, per atf-c-api(3).
4562b43b7fSSimon J. Gerraty */
ATF_TP_ADD_TCS(tp)4662b43b7fSSimon J. Gerraty ATF_TP_ADD_TCS(tp)
4762b43b7fSSimon J. Gerraty {
4862b43b7fSSimon J. Gerraty
4962b43b7fSSimon J. Gerraty ATF_TP_ADD_TC(tp, md5);
5062b43b7fSSimon J. Gerraty ATF_TP_ADD_TC(tp, invalid);
5162b43b7fSSimon J. Gerraty return atf_no_error();
5262b43b7fSSimon J. Gerraty }
53