aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPádraig Brady <P@draigBrady.com>2025-09-02 15:28:21 +0100
committerPádraig Brady <P@draigBrady.com>2025-09-04 14:49:07 +0100
commitaba9800995e28be6ffa130d57dc1531237f9e5f7 (patch)
tree310362663b19b8ffe261eb06f195482845a94d43 /tests
parentcksum: add support for SHA-3 (diff)
downloadcoreutils-aba9800995e28be6ffa130d57dc1531237f9e5f7.tar.gz
coreutils-aba9800995e28be6ffa130d57dc1531237f9e5f7.zip
cksum: prefer -a sha2 -l ###, to -a sha###
To make the interface more concise and consistent, while being backwards compatible. * src/digest.c (main): Continue to support -a "sha###" but also support -a "sha2" and treat it like "sha3", except in... (output_file): ... maintain the legacy tags for better compatability. * doc/coreutils.texi (cksum invocation): Document the -a sha2 option. * tests/cksum/cksum-base64.pl: Adjust as per modified --help. * tests/cksum/cksum-c.sh: Add new supported SHA2-### tagged variant. * NEWS: Mention the new feature.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/cksum/cksum-a.sh9
-rwxr-xr-xtests/cksum/cksum-base64.pl9
-rwxr-xr-xtests/cksum/cksum-c.sh7
3 files changed, 19 insertions, 6 deletions
diff --git a/tests/cksum/cksum-a.sh b/tests/cksum/cksum-a.sh
index 5cbaa71c7..4fa078102 100755
--- a/tests/cksum/cksum-a.sh
+++ b/tests/cksum/cksum-a.sh
@@ -41,6 +41,15 @@ while read algo prog mode; do
cksum --untagged $cmode --algorithm=$algo /dev/null > out-c || fail=1
case "$algo" in
+ sha224|sha256|sha384|sha512)
+ bits=$(echo "$algo" | cut -c4-)
+ cksum --algorithm=$algo /dev/null > out-t1 || fail=1
+ cksum --algorithm=sha2 --length=$bits /dev/null > out-t2 || fail=1
+ compare out-t1 out-t2 || fail=1 ;;
+ *) ;;
+ esac
+
+ case "$algo" in
bsd) ;;
sysv) ;;
crc) ;;
diff --git a/tests/cksum/cksum-base64.pl b/tests/cksum/cksum-base64.pl
index fe629c124..32f3cae51 100755
--- a/tests/cksum/cksum-base64.pl
+++ b/tests/cksum/cksum-base64.pl
@@ -32,10 +32,7 @@ my @pairs =
['crc32b', "0 0 f"],
['md5', "1B2M2Y8AsgTpgAmY7PhCfg=="],
['sha1', "2jmj7l5rSw0yVb/vlWAYkK/YBwk="],
- ['sha224', "0UoCjCo6K8lHYQK7KII0xBWisB+CjqYqxbPkLw=="],
- ['sha256', "47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="],
- ['sha384', "OLBgp1GsljhM2TJ+sbHjaiH9txEUvgdDTAzHv2P24donTt6/529l+9Ua0vFImLlb"],
- ['sha512', "z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg=="],
+ ['sha2', "z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg=="],
['sha3', "pp9zzKI6msXItWfcGFp1bpfJghZP4lhZ4NHcwUdcgKYVshI68fX5TBHj6UAsOsVY9QAZnZW20+MBdYWGKB3NJg=="],
['blake2b', "eGoC90IBWQPGxv2FJVLScpEvR0DhWEdhiobiF/cfVBnSXhAxr+5YUxOJZESTTrBLkDpoWxRIt1XVb3Aa/pvizg=="],
['sm3', "GrIdg1XPoX+OYRlIMegajyK+yMco/vt0ftA161CCqis="],
@@ -48,8 +45,9 @@ sub fmt ($$) {
$h !~ m{^(sysv|bsd|crc|crc32b)$} and $v = uc($h). " (f) = $v";
# BLAKE2b is inconsistent:
$v =~ s{BLAKE2B}{BLAKE2b};
- # Our tests use 'cksum -a sha3 --length=512'.
+ # Our tests use 'cksum -a sha{2,3} --length=512'.
$v =~ s/^SHA3\b/SHA3-512/;
+ $v =~ s/^SHA2\b/SHA512/;
return "$v"
}
@@ -58,6 +56,7 @@ my @Tests =
# Ensure that each of the above works with --base64:
(map {my ($h,$v)= @$_; my $o=fmt $h,$v;
(my $opts = $h) =~ s/^sha3$/sha3 --length=512/;
+ $opts =~ s/^sha2$/sha512/;
[$h, "--base64 -a $opts", {IN=>{f=>''}}, {OUT=>"$o\n"}]} @pairs),
# For each that accepts --check, ensure that works with base64 digests:
diff --git a/tests/cksum/cksum-c.sh b/tests/cksum/cksum-c.sh
index 4c5008483..2e3675717 100755
--- a/tests/cksum/cksum-c.sh
+++ b/tests/cksum/cksum-c.sh
@@ -21,11 +21,16 @@ print_ver_ cksum shuf
shuf -i 1-10 > input || framework_failure_
-for args in '-a sha384' '-a blake2b' '-a blake2b -l 384' '-a sm3'; do
+for args in '-a sha2 -l 384' '-a blake2b' '-a blake2b -l 384' '-a sm3'; do
cksum $args 'input' >> CHECKSUMS || fail=1
done
cksum --strict --check CHECKSUMS || fail=1
+# We don't output but do support SHA2-### tagged format
+cksum -a sha2 -l 384 input |
+ sed 's/^SHA/SHA2-/' > sha2-tag.sum || framework_failure_
+cksum --check sha2-tag.sum || fail=1
+
# Ensure leading whitespace and \ ignored
sed 's/^/ \\/' CHECKSUMS | cksum --strict -c || fail=1