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

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

index 34820eabd7d48377b9acfa6c3284e4d489a53df0..66a6ed6019491dc82d168e0b1ab2536e98ab07f1 100644 (file)
@@ -64,12 +64,36 @@ test_is_valid_hash_ok_bcrypt(void **)
 }
 
 
+static void
+test_is_valid_hash_ok_sha512(void **)
+{
+       // Basic SHA-512 hash: $6$ + salt + $ + 86 character hash
+       assert_true(is_valid_hash("$6$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv"));
+
+       // SHA-512 with rounds parameter
+       assert_true(is_valid_hash("$6$rounds=5000$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv"));
+
+       // SHA-512 with minimum rounds (1000)
+       assert_true(is_valid_hash("$6$rounds=1000$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv"));
+
+       // SHA-512 with maximum rounds (999999999)
+       assert_true(is_valid_hash("$6$rounds=999999999$salt$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv"));
+
+       // SHA-512 with minimum salt length (1 character)
+       assert_true(is_valid_hash("$6$a$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv"));
+
+       // SHA-512 with maximum salt length (16 characters)
+       assert_true(is_valid_hash("$6$sixteencharsaltx$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./abcdefghijklmnopqrstuv"));
+}
+
+
 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),
+        cmocka_unit_test(test_is_valid_hash_ok_sha512),
     };
 
     return cmocka_run_group_tests(tests, NULL, NULL);