From 98b930d0dd2c7b2e92c782164d84dc258d12b191 Mon Sep 17 00:00:00 2001 From: Iker Pedrosa Date: Sun, 1 Feb 2026 10:46:18 +0100 Subject: [PATCH] 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 --- tests/unit/test_chkhash.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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); -- 2.47.3