tthsum ‐ generates or checks TTH message digests
Contents
Copyright
Copyright © 2009 Walter Doekes. License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent
permitted by law.
Description
tthsum generates or checks TTH checksums (roots of the Tiger/THEX hash tree). The Merkle Hash Tree,
invented by Ralph Merkle, is a hash construct that exhibits desirable properties for verifying the
integrity of files and file subranges in an incremental or out‐of‐order fashion. tthsum uses the Tiger
hash algorithm, by Ross Anderson and Eli Biham, for both the internal and the leaf nodes.
The specification of the THEX algorithm is at:
. http://tthsum.devs.nu/draft-jchapweske-thex-02.html
The specification of the Tiger hash algorithm is at:
. http://www.cs.technion.ac.il/~biham/Reports/Tiger/
Normally tthsum generates checksums of all files given to it as parameters and prints the checksums
followed by the filenames. If, however, -c is specified, only one filename parameter is allowed. This
file should contain checksums and filenames to which these checksums refer, and the files listed in that
file are checked against the checksums listed there. See option -c for more information.
If no file is specified data will be read from standard input.
OPTIONS-b An md5sum compatibility option. It does absolutely nothing. (md5sum uses -b to treat binary files
differently from texts files.)
-c Check tthsum of all files listed in file against the checksum listed in the same file. The actual
format of that file is the same as output of tthsum. That is, each line in the file describes a
file. A line looks like:
<TTHCHECKSUM><FILENAME>
So, for example, if a file were created and its message digest calculated like so:
echofoo>tth-test-file;tthsumtth-test-filetthsum would report:
A2MPPCGS5CPJV6AOAP37ICDCFV3WYU7PBREC6FYtth-test-file
See NOTES for more information on the digest file format.
-m Use mmap(2) instead of read(2) to read the contents of the files to hash. Normally, using read is
cheaper. This all depends on system load, I/O speed, CPU speed, L1 and/or L2 cache size and
whatnot.
-p Show the progress. Print the percentage of completeness while hashing on standard error. Prints
file position instead of percentage when the file size is unknown.
-v Be verbose. Print filenames when checking (with -c).
-w Warn on improperly formatted lines when checking (with -c).
-h,-V Print a small help text or the version, respectively, on standard out. If an unknown combination
of options is encountered, the small help is printed on standard error and tthsum will return non‐
zero.
Name
tthsum ‐ generates or checks TTH message digests
Notes
tthsum intentionally uses an interface identical to md5sum.
tthsum uses BASE32 encoding consisting of the following characters: ABCDEFGHIJKLMNOPQRSTUVWXYZ234567. It
will accept lower case letters in the digest input as well.
tthsum does not accept long options such as --help.
A digest file format line looks like: <BASE32><SPACES><FILENAME><EOL>. BASE32 is a 39 character long
BASE32 encoded string. SPACES is a set of two spaces (0x20). FILENAME is the name of the file, encoded
in UTF8 and with all control characters (those below 0x20) encoded as \xNN or \C C‐style escapes. (The
backslash is escaped as \\ as well. On Windows, backslashes in paths will be translated to slashes for
compatibility with real operating systems.) EOL may be CRLF (\r\n), just plain LF (\n) or even nothing
at end‐of‐file.
If you see warnings about an improper locale setup, check your LANG and/or LC_CTYPE environment
variables. If these are not set properly, tthsum cannot represent non‐ASCII characters (those above
0x7F) in UTF8. See locale(1) for more information or try to set LC_CTYPE to e.g. "en_US".
Reporting Bugs
Report bugs to <walter+tthsum@wjd.nu>.
Return Value
tthsum returns 0 if no error occurred or, when checking a digest, if at least one line is formatted
properly and the TTHs of all properly formatted lines match. tthsum returns 2 if an unknown combination
of options is encountered. In all other cases will tthsum return 1.
See Also
cksfv(1), md5sum(1), sha1sum(1) tthsum version 1.3.2 Dec 2009 TTHSUM(1)
Synopsis
tthsum [-bhmpvVw] [-c [file]] | [file...]
