diff options
Diffstat (limited to '')
| -rw-r--r-- | librecrypt_hash.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/librecrypt_hash.c b/librecrypt_hash.c index 18627d1..f62b03b 100644 --- a/librecrypt_hash.c +++ b/librecrypt_hash.c @@ -201,6 +201,9 @@ static const struct librecrypt_algorithm trunc_algo = { #define TEST_HASH_ROT4_TRUNC "8j93l0@@" #define TEST_HASH_ROT4_TRUNC6 "8j93l6lS" #define TEST_HASH_TRUNC_TRUNC6 "4ycQhg00" +#define WRONG_HASH_ROT4 "AAAAAAAAAAA#" +#define WRONG_HASH_TRUNC "000000@@" +#define WRONG_HASH_TRUNC6 "00000000" #define SP4 " " #define SP20 SP4 SP4 SP4 SP4 SP4 @@ -286,6 +289,16 @@ check(const char *phrase, const char *settings, const char *chain, } while (0) +#define CHECK_DIFF(PHRASE, CONF, HASHLEN, IS_DEFAULT_HASHLEN /* -1 if fixed */, HASH, DIFFHASH)\ + do {\ + size_t scratchsize = GET_SCRATCH_SIZE(HASHLEN);\ + if (IS_DEFAULT_HASHLEN >= 0)\ + check(PHRASE, CONF DIFFHASH, CONF "*" #HASHLEN ">" CONF DIFFHASH, HASH, scratchsize, ctx);\ + if (IS_DEFAULT_HASHLEN)\ + check(PHRASE, CONF DIFFHASH, CONF ">" CONF DIFFHASH, HASH, scratchsize, ctx);\ + } while (0) + + #define CHECK_BAD(ALGO)\ do {\ errno = 0;\ @@ -423,6 +436,18 @@ main(void) CHECK(TEST_PHRASE, "$trunc$*6>$trunc$", 4, 1, TEST_HASH_TRUNC); CHECK(TEST_PHRASE, "$trunc$*6>$trunc$", 6, 0, TEST_HASH_TRUNC6); CHECK(TEST_PHRASE, "$rot4$>$rot4$", 8, -1, TEST_PHRASE64_ROT4); + CHECK_DIFF(TEST_PHRASE, "$trunc$", 4, 1, TEST_HASH_TRUNC, WRONG_HASH_TRUNC); + CHECK_DIFF(TEST_PHRASE, "$trunc$", 6, 0, TEST_HASH_TRUNC6, WRONG_HASH_TRUNC6); + CHECK_DIFF(TEST_PHRASE, "$rot4$", 8, -1, TEST_HASH_ROT4, WRONG_HASH_ROT4); + CHECK_DIFF(TEST_PHRASE, "$rot4$>$trunc$", 4, 1, TEST_HASH_ROT4_TRUNC, WRONG_HASH_TRUNC); + CHECK_DIFF(TEST_PHRASE, "$rot4$>$trunc$", 6, 0, TEST_HASH_ROT4_TRUNC6, WRONG_HASH_TRUNC6); + CHECK_DIFF(TEST_PHRASE, "$trunc$>$rot4$", 8, -1, TEST_HASH_TRUNC_ROT4, WRONG_HASH_ROT4); + CHECK_DIFF(TEST_PHRASE, "$trunc$*6>$rot4$", 8, -1, TEST_HASH_TRUNC6_ROT4, WRONG_HASH_ROT4); + CHECK_DIFF(TEST_PHRASE, "$trunc$>$trunc$", 4, 1, TEST_HASH_TRUNC, WRONG_HASH_TRUNC); + CHECK_DIFF(TEST_PHRASE, "$trunc$>$trunc$", 6, 0, TEST_HASH_TRUNC_TRUNC6, WRONG_HASH_TRUNC6); + CHECK_DIFF(TEST_PHRASE, "$trunc$*6>$trunc$", 4, 1, TEST_HASH_TRUNC, WRONG_HASH_TRUNC); + CHECK_DIFF(TEST_PHRASE, "$trunc$*6>$trunc$", 6, 0, TEST_HASH_TRUNC6, WRONG_HASH_TRUNC6); + CHECK_DIFF(TEST_PHRASE, "$rot4$>$rot4$", 8, -1, TEST_PHRASE64_ROT4, WRONG_HASH_ROT4); #undef GET_SCRATCH_SIZE librecrypt_free_context(ctx); |
