]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
tests/unit/test_chkhash.c: add SHA-256 hash validation tests
authorIker Pedrosa <ipedrosa@redhat.com>
Wed, 4 Feb 2026 09:22:29 +0000 (10:22 +0100)
committerAlejandro Colomar <foss+github@alejandro-colomar.es>
Tue, 17 Feb 2026 23:30:57 +0000 (00:30 +0100)
Add comprehensive SHA-256 algorithm validation tests covering rounds and
salt cases.

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
tests/unit/test_chkhash.c

index 66a6ed6019491dc82d168e0b1ab2536e98ab07f1..cdd4a37b4f4e474cef3d9b1eb4ebe513d509db10 100644 (file)
@@ -87,6 +87,29 @@ test_is_valid_hash_ok_sha512(void **)
 }
 
 
+static void
+test_is_valid_hash_ok_sha256(void **)
+{
+       // Basic SHA-256 hash: $5$ + salt + $ + 43 character hash
+       assert_true(is_valid_hash("$5$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ"));
+
+       // SHA-256 with rounds parameter
+       assert_true(is_valid_hash("$5$rounds=5000$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ"));
+
+       // SHA-256 with minimum rounds (1000)
+       assert_true(is_valid_hash("$5$rounds=1000$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ"));
+
+       // SHA-256 with maximum rounds (999999999)
+       assert_true(is_valid_hash("$5$rounds=999999999$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ"));
+
+       // SHA-256 with minimum salt length (1 character)
+       assert_true(is_valid_hash("$5$a$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ"));
+
+       // SHA-256 with maximum salt length (16 characters)
+       assert_true(is_valid_hash("$5$sixteencharsaltx$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQ"));
+}
+
+
 int
 main(void)
 {
@@ -94,6 +117,7 @@ main(void)
         cmocka_unit_test(test_is_valid_hash_ok_yescrypt),
         cmocka_unit_test(test_is_valid_hash_ok_bcrypt),
         cmocka_unit_test(test_is_valid_hash_ok_sha512),
+        cmocka_unit_test(test_is_valid_hash_ok_sha256),
     };
 
     return cmocka_run_group_tests(tests, NULL, NULL);