From: Iker Pedrosa Date: Sun, 1 Feb 2026 09:46:18 +0000 (+0100) Subject: tests/unit/test_chkhash.c: add bcrypt hash validation tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98b930d0dd2c7b2e92c782164d84dc258d12b191;p=thirdparty%2Fshadow.git tests/unit/test_chkhash.c: add bcrypt hash validation tests Add comprehensive bcrypt algorithm validation tests covering all variants ($2a$, $2b$, $2x$, $2y$) with different cost factors. Signed-off-by: Iker Pedrosa --- diff --git a/tests/unit/test_chkhash.c b/tests/unit/test_chkhash.c index 753083794..34820eabd 100644 --- a/tests/unit/test_chkhash.c +++ b/tests/unit/test_chkhash.c @@ -44,11 +44,32 @@ test_is_valid_hash_ok_yescrypt(void **) } +static void +test_is_valid_hash_ok_bcrypt(void **) +{ + // Basic bcrypt hash: $2a$ + cost + $ + 53 character hash + assert_true(is_valid_hash("$2a$12$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.")); + + // Bcrypt $2b$ variant with different cost + assert_true(is_valid_hash("$2b$10$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.")); + + // Bcrypt $2x$ variant with minimum cost + assert_true(is_valid_hash("$2x$04$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.")); + + // Bcrypt $2y$ variant with high cost + assert_true(is_valid_hash("$2y$15$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.")); + + // Bcrypt with numeric characters in hash portion + assert_true(is_valid_hash("$2a$08$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.")); +} + + int main(void) { const struct CMUnitTest tests[] = { cmocka_unit_test(test_is_valid_hash_ok_yescrypt), + cmocka_unit_test(test_is_valid_hash_ok_bcrypt), }; return cmocka_run_group_tests(tests, NULL, NULL);