Provided by: tcllib_2.0+dfsg-4_all bug

NAME

       crc16 - Perform a 16bit Cyclic Redundancy Check

SYNOPSIS

       package require Tcl 8.5 9

       package require crc16 ?1.1.5?

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::kermit ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::kermit ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::modbus ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::modbus ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::mcrf4xx ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::mcrf4xx ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::genibus ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::genibus ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-x25 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-x25 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-sdlc ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-sdlc ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-usb ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-usb ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::buypass ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::buypass ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::umts ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::umts ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::gsm ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::gsm ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::unknown2 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::unknown2 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::maxim ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::maxim ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::unknown3 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::unknown3 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::unknown4 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::unknown4 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::cms ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::cms ?-format format? ?-seed value? ?-implementation procname? -filename file

________________________________________________________________________________________________________________

DESCRIPTION

       This  package provides a Tcl-only implementation of the CRC algorithms based upon information provided at
       http://www.microconsultants.com/tips/crc/crc.txt  There  are  a  number  of  permutations  available  for
       calculating  CRC  checksums  and  this  package  can handle all of them. Defaults are set up for the most
       common cases.

COMMANDS

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc16 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-ccitt ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::xmodem ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::kermit ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::kermit ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::modbus ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::modbus ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::mcrf4xx ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::mcrf4xx ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::genibus ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::genibus ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-x25 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-x25 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-sdlc ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-sdlc ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::crc-usb ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::crc-usb ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::buypass ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::buypass ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::umts ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::umts ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::gsm ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::gsm ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::unknown2 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::unknown2 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::maxim ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::maxim ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::unknown3 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::unknown3 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::unknown4 ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::unknown4 ?-format format? ?-seed value? ?-implementation procname? -filename file

       ::crc::cms ?-format format? ?-seed value? ?-implementation procname? -- message

       ::crc::cms ?-format format? ?-seed value? ?-implementation procname? -filename file
              The command takes either string data or a file name and returns a checksum value calculated  using
              the CRC algorithm. The command used sets up the CRC polynomial, initial value and bit ordering for
              the  desired  standard  checksum  calculation.  The  result  is  formatted  using the format(3tcl)
              specifier provided or as an unsigned integer (%u) by default.

              A number of common polynomials are in use with the CRC algorithm and the  most  commonly  used  of
              these  are  included in this package. For convenience each of these has a command alias in the crc
              namespace.

              It is possible to implement the CRC-32 checksum using this crc16 package as the implementation  is
              sufficiently  generic  to  extend  to 32 bit checksums. As an example this has been done already -
              however this is not the fastest method to implement this algorithm in Tcl  and  a  separate  crc32
              package is available.

OPTIONS

       -filename name
              Return a checksum for the file contents instead of for parameter data.

       -format string
              Return the checksum using an alternative format template.

       -seed value
              Select  an  alternative  seed  value  for  the  CRC  calculation.  The  default is 0 for the CRC16
              calculation and 0xFFFF for the CCITT version.  This can be useful for calculating the CRC for data
              structures without first converting the whole structure into a string. The  CRC  of  the  previous
              member  can  be  used  as the seed for calculating the CRC of the next member. It is also used for
              accumulating a checksum from fragments of a large message (or file)

       -implementation procname
              This hook is provided to allow users to provide their own implementation  (perhaps  a  C  compiled
              extension).  The  procedure  specfied  is  called with two parameters. The first is the data to be
              checksummed and the second is the seed value. An integer is expected as the result.

              The package provides some implementations of standard CRC polynomials for the  XMODEM,  CCITT  and
              the  usual  CRC-16 checksum. For convenience, additional commands have been provided that make use
              of these implementations.

       --     Terminate option processing. Please note that using the option termination flag is important  when
              processing data from parameters. If the binary data looks like one of the options given above then
              the  data  will  be  read  as  an option if this marker is not included.  Always use the -- option
              termination flag before giving the data argument.

EXAMPLES

              % crc::crc16 -- "Hello, World!"
              64077

              % crc::crc-ccitt -- "Hello, World!"
              26586

              % crc::crc16 -format 0x%X -- "Hello, World!"
              0xFA4D

              % crc::crc16 -file crc16.tcl
              51675

AUTHORS

       Pat Thoyts

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes, will undoubtedly contain bugs and  other  problems.   Please
       report  such  in  the category crc of the Tcllib Trackers [http://core.tcl.tk/tcllib/reportlist].  Please
       also report any ideas for enhancements you may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments  can  be  made  by
       going  to the Edit form of the ticket immediately after its creation, and then using the left-most button
       in the secondary navigation bar.

SEE ALSO

       cksum(3tcl), crc32(3tcl), sum(3tcl)

KEYWORDS

       checksum, cksum, crc, crc16, crc32, cyclic redundancy check, data integrity, security

CATEGORY

       Hashes, checksums, and encryption

COPYRIGHT

       Copyright (c) 2002, 2017, Pat Thoyts

tcllib                                                1.1.5                                          crc16(3tcl)