forked from github/server
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
92038aae1a
|
@ -38,8 +38,8 @@ char *password_gensalt(char *salt, size_t salt_len) {
|
|||
return salt;
|
||||
}
|
||||
|
||||
static bool password_is_implemented(int algo) {
|
||||
return algo == PASSWORD_PLAINTEXT || algo == PASSWORD_BCRYPT || algo == PASSWORD_NOCRYPT || algo == PASSWORD_MD5 || algo == PASSWORD_APACHE_MD5;
|
||||
bool password_is_implemented(int algo) {
|
||||
return algo == PASSWORD_PLAINTEXT;// || algo == PASSWORD_BCRYPT || algo == PASSWORD_NOCRYPT || algo == PASSWORD_MD5 || algo == PASSWORD_APACHE_MD5;
|
||||
}
|
||||
|
||||
static const char * password_hash_i(const char * passwd, const char *input, int algo, char *result, size_t len) {
|
||||
|
|
|
@ -14,3 +14,4 @@
|
|||
#define VERIFY_UNKNOWN 2 // hashing algorithm not supported
|
||||
int password_verify(const char *hash, const char *passwd);
|
||||
const char * password_encode(const char *passwd, int algo);
|
||||
bool password_is_implemented(int algo);
|
||||
|
|
|
@ -7,36 +7,56 @@ static void test_passwords(CuTest *tc) {
|
|||
const char *hash, *expect;
|
||||
|
||||
expect = "$apr1$FqQLkl8g$.icQqaDJpim4BVy.Ho5660";
|
||||
if (password_is_implemented(PASSWORD_APACHE_MD5)) {
|
||||
CuAssertIntEquals(tc, VERIFY_OK, password_verify(expect, "Hodor"));
|
||||
hash = password_encode("Hodor", PASSWORD_APACHE_MD5);
|
||||
CuAssertPtrNotNull(tc, hash);
|
||||
CuAssertIntEquals(tc, 0, strncmp(hash, expect, 6));
|
||||
} else {
|
||||
CuAssertIntEquals(tc, VERIFY_UNKNOWN, password_verify(expect, "Hodor"));
|
||||
}
|
||||
|
||||
expect = "$1$ZouUn04i$yNnT1Oy8azJ5V.UM9ppP5/";
|
||||
if (password_is_implemented(PASSWORD_MD5)) {
|
||||
CuAssertIntEquals(tc, VERIFY_OK, password_verify(expect, "jollygood"));
|
||||
hash = password_encode("jollygood", PASSWORD_MD5);
|
||||
CuAssertPtrNotNull(tc, hash);
|
||||
CuAssertIntEquals(tc, 0, strncmp(hash, expect, 3));
|
||||
} else {
|
||||
CuAssertIntEquals(tc, VERIFY_UNKNOWN, password_verify(expect, "jollygood"));
|
||||
}
|
||||
|
||||
expect = "password";
|
||||
if (password_is_implemented(PASSWORD_PLAINTEXT)) {
|
||||
hash = password_encode("password", PASSWORD_PLAINTEXT);
|
||||
CuAssertPtrNotNull(tc, hash);
|
||||
CuAssertStrEquals(tc, hash, expect);
|
||||
CuAssertIntEquals(tc, VERIFY_OK, password_verify(expect, "password"));
|
||||
CuAssertIntEquals(tc, VERIFY_FAIL, password_verify(expect, "arseword"));
|
||||
} else {
|
||||
CuAssertIntEquals(tc, VERIFY_UNKNOWN, password_verify(expect, "password"));
|
||||
}
|
||||
|
||||
expect = "$0$password";
|
||||
if (password_is_implemented(PASSWORD_NOCRYPT)) {
|
||||
hash = password_encode("password", PASSWORD_NOCRYPT);
|
||||
CuAssertPtrNotNull(tc, hash);
|
||||
CuAssertStrEquals(tc, hash, expect);
|
||||
CuAssertIntEquals(tc, VERIFY_OK, password_verify(expect, "password"));
|
||||
CuAssertIntEquals(tc, VERIFY_FAIL, password_verify(expect, "arseword"));
|
||||
} else {
|
||||
CuAssertIntEquals(tc, VERIFY_UNKNOWN, password_verify(expect, "password"));
|
||||
}
|
||||
|
||||
expect = "$2y$05$RJ8qAhu.foXyJLdc2eHTLOaK4MDYn3/v4HtOVCq0Plv2yxcrEB7Wm";
|
||||
if (password_is_implemented(PASSWORD_BCRYPT)) {
|
||||
CuAssertIntEquals(tc, VERIFY_OK, password_verify(expect, "Hodor"));
|
||||
hash = password_encode("Hodor", PASSWORD_BCRYPT);
|
||||
CuAssertPtrNotNull(tc, hash);
|
||||
CuAssertIntEquals(tc, 0, strncmp(hash, expect, 7));
|
||||
} else {
|
||||
CuAssertIntEquals(tc, VERIFY_UNKNOWN, password_verify(expect, "Hodor"));
|
||||
}
|
||||
|
||||
CuAssertIntEquals(tc, VERIFY_UNKNOWN, password_verify("$9$saltyfish$password", "password"));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue