diff options
Diffstat (limited to 'Master/tlpkg/tlperl0/bin/shasum')
-rwxr-xr-x | Master/tlpkg/tlperl0/bin/shasum | 268 |
1 files changed, 0 insertions, 268 deletions
diff --git a/Master/tlpkg/tlperl0/bin/shasum b/Master/tlpkg/tlperl0/bin/shasum deleted file mode 100755 index 3c0185892fa..00000000000 --- a/Master/tlpkg/tlperl0/bin/shasum +++ /dev/null @@ -1,268 +0,0 @@ -#!perl -w - - # shasum: filter for computing SHA digests (analogous to sha1sum) - # - # Copyright (C) 2003-2010 Mark Shelor, All Rights Reserved - # - # Version: 5.48 - # Mon Jan 4 16:32:52 MST 2010 - -=head1 NAME - -shasum - Print or Check SHA Checksums - -=head1 SYNOPSIS - - Usage: shasum [OPTION] [FILE]... - or: shasum [OPTION] --check [FILE] - Print or check SHA checksums. - With no FILE, or when FILE is -, read standard input. - - -a, --algorithm 1 (default), 224, 256, 384, 512 - -b, --binary read files in binary mode (default on DOS/Windows) - -c, --check check SHA sums against given list - -p, --portable read files in portable mode - produces same digest on Windows/Unix/Mac - -t, --text read files in text mode (default) - - The following two options are useful only when verifying checksums: - - -s, --status don't output anything, status code shows success - -w, --warn warn about improperly formatted SHA checksum lines - - -h, --help display this help and exit - -v, --version output version information and exit - - The sums are computed as described in FIPS PUB 180-2. When checking, - the input should be a former output of this program. The default mode - is to print a line with checksum, a character indicating type (`*' - for binary, `?' for portable, ` ' for text), and name for each FILE. - -=head1 DESCRIPTION - -The I<shasum> script provides the easiest and most convenient way to -compute SHA message digests. Rather than writing a program, the user -simply feeds data to the script via the command line, and waits for -the results to be printed on standard output. Data can be fed to -I<shasum> through files, standard input, or both. - -The following command shows how easy it is to compute digests for typical -inputs such as the NIST test vector "abc": - - perl -e "print qq(abc)" | shasum - -Or, if you want to use SHA-256 instead of the default SHA-1, simply say: - - perl -e "print qq(abc)" | shasum -a 256 - -Since I<shasum> uses the same interface employed by the familiar -I<sha1sum> program (and its somewhat outmoded anscestor I<md5sum>), -you can install this script as a convenient drop-in replacement. - -=head1 AUTHOR - -Copyright (c) 2003-2010 Mark Shelor <mshelor@cpan.org>. - -=head1 SEE ALSO - -shasum is implemented using the Perl module L<Digest::SHA> or -L<Digest::SHA::PurePerl>. - -=cut - -use strict; -use FileHandle; -use Getopt::Long; - -my $VERSION = "5.48"; - - - # Try to use Digest::SHA, since it's faster. If not installed, - # use Digest::SHA::PurePerl instead. - -my $MOD_PREFER = "Digest::SHA"; -my $MOD_SECOND = "Digest::SHA::PurePerl"; - -my $module = $MOD_PREFER; -eval "require $module"; -if ($@) { - $module = $MOD_SECOND; - eval "require $module"; - die "Unable to find $MOD_PREFER or $MOD_SECOND\n" if $@; -} - - - # Usage statement adapted from Ulrich Drepper's md5sum. - # Include an "-a" option for algorithm selection, - # and a "-p" option for portable digest computation. - -sub usage { - my($err, $msg) = @_; - - $msg = "" unless defined $msg; - if ($err) { - warn($msg . "Type shasum -h for help\n"); - exit($err); - } - print <<'END_OF_USAGE'; -Usage: shasum [OPTION] [FILE]... - or: shasum [OPTION] --check [FILE] -Print or check SHA checksums. -With no FILE, or when FILE is -, read standard input. - - -a, --algorithm 1 (default), 224, 256, 384, 512 - -b, --binary read files in binary mode (default on DOS/Windows) - -c, --check check SHA sums against given list - -p, --portable read files in portable mode - produces same digest on Windows/Unix/Mac - -t, --text read files in text mode (default) - -The following two options are useful only when verifying checksums: - -s, --status don't output anything, status code shows success - -w, --warn warn about improperly formatted SHA checksum lines - - -h, --help display this help and exit - -v, --version output version information and exit - -The sums are computed as described in FIPS PUB 180-2. When checking, the -input should be a former output of this program. The default mode is to -print a line with checksum, a character indicating type (`*' for binary, -`?' for portable, ` ' for text), and name for each FILE. - -Report bugs to <mshelor@cpan.org>. -END_OF_USAGE - exit($err); -} - - - # Collect options from command line - -my ($alg, $binary, $check, $text, $status, $warn, $help, $version); -my ($portable); - -eval { Getopt::Long::Configure ("bundling") }; -GetOptions( - 'b|binary' => \$binary, 'c|check' => \$check, - 't|text' => \$text, 'a|algorithm=i' => \$alg, - 's|status' => \$status, 'w|warn' => \$warn, - 'h|help' => \$help, 'v|version' => \$version, - 'p|portable' => \$portable -) or usage(1, ""); - - - # Deal with help requests and incorrect uses - -usage(0) - if $help; -usage(1, "shasum: Ambiguous file mode\n") - if scalar(grep { defined $_ } ($binary, $portable, $text)) > 1; -usage(1, "shasum: --warn option used only when verifying checksums\n") - if $warn && !$check; -usage(1, "shasum: --status option used only when verifying checksums\n") - if $status && !$check; - - - # Default to SHA-1 unless overriden by command line option - -$alg = 1 unless defined $alg; -grep { $_ == $alg } (1, 224, 256, 384, 512) - or usage(1, "shasum: Unrecognized algorithm\n"); - - - # Display version information if requested - -if ($version) { - print "$VERSION\n"; - exit(0); -} - - - # Try to figure out if the OS is DOS-like. If it is, - # default to binary mode when reading files, unless - # explicitly overriden by command line "--text" or - # "--portable" options. - -my $isDOSish = ($^O =~ /^(MSWin\d\d|os2|dos|mint|cygwin)$/); -if ($isDOSish) { $binary = 1 unless $text || $portable } - -my $modesym = $binary ? '*' : ($portable ? '?' : ' '); - - - # Read from STDIN (-) if no files listed on command line - -@ARGV = ("-") unless @ARGV; - - - # sumfile($file): computes SHA digest of $file - -sub sumfile { - my $file = shift; - - my $mode = $portable ? 'p' : ($binary ? 'b' : ''); - my $digest = eval { $module->new($alg)->addfile($file, $mode) }; - if ($@) { - warn "shasum: $file: $!\n"; - return; - } - - $digest->hexdigest; -} - - - # %len2alg: maps hex digest length to SHA algorithm - -my %len2alg = (40 => 1, 56 => 224, 64 => 256, 96 => 384, 128 => 512); - - - # Verify checksums if requested - -if ($check) { - my $checkfile = shift(@ARGV); - my ($err, $read_errs, $match_errs) = (0, 0, 0); - my ($num_files, $num_checksums) = (0, 0); - my ($fh, $sum, $fname, $rsp, $digest); - - die "shasum: $checkfile: $!\n" - unless $fh = FileHandle->new($checkfile, "r"); - while (<$fh>) { - s/\s+$//; - ($sum, $modesym, $fname) = /^(\S+) (.)(.*)$/; - ($binary, $portable, $text) = - map { $_ eq $modesym } ('*', '?', ' '); - unless ($alg = $len2alg{length($sum)}) { - warn("shasum: $checkfile: $.: improperly " . - "formatted SHA checksum line\n") if $warn; - next; - } - $rsp = "$fname: "; $num_files++; - unless ($digest = sumfile($fname)) { - $rsp .= "FAILED open or read\n"; - $err = 1; $read_errs++; - } - else { - $num_checksums++; - if (lc($sum) eq $digest) { $rsp .= "OK\n" } - else { $rsp .= "FAILED\n"; $err = 1; $match_errs++ } - } - print $rsp unless $status; - } - $fh->close; - unless ($status) { - warn("shasum: WARNING: $read_errs of $num_files listed " . - "files could not be read\n") if $read_errs; - warn("shasum: WARNING: $match_errs of $num_checksums " . - "computed checksums did NOT match\n") if $match_errs; - } - exit($err); -} - - - # Compute and display SHA checksums of requested files - -my($file, $digest); - -for $file (@ARGV) { - if ($digest = sumfile($file)) { - print "$digest $modesym", "$file\n"; - } -} |