Man Linux: Main Page and Category List

NAME

       tthsum - generates or checks TTH message digests

SYNOPSIS

       tthsum [-bhmpvVw] [-c [file]] | [file...]

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://www.open-content.net/specs/draft-jchapweske-thex-.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:

              <TTH CHECKSUM>  <FILENAME>

              So, for example, if a file were created and its  message  digest
              calculated like so:

              echo foo > tth-test-file; tthsum tth-test-file

              tthsum would report:

              A2MPPCGS5CPJV6AOAP37ICDCFV3WYU7PBREC6FY  tth-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 (<COMPLETED>/<TOTAL>) every 10  MiB  on
              standard error while hashing. The numbers are in MiB.

       -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.

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".

AUTHOR

       tthsum    and    this   manpage   were   written   by   Walter   Doekes
       (walter@djcvt.net).  The hashing code was copied directly from DC++, an
       open   source   peer-to-peer   file  sharing  program  by  Jacek  Sieka
       (jacek@creatio.se) who had based the hashing code on the  one  used  in
       BCDC++  (a  modified  DC++)  by  Dustin  Brody (blackclaw@parsoma.net).
       After version 1.1.0, the hashing code from the Tiger  hash  authors  is
       used  instead,  to  support  big endian architectures and to remove the
       need for C++ compilers and libraries.  The md5sum manpage,  written  by
       Juho  Vuori  (javuori@cc.helsinki.fi),  was  used  as  a template. This
       manpage was proofread by Dustin Brody.

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)