Important Notice Concerning the Software
Important Notice Concerning the Software
/* crypto/md5/md5.h */
Copyright (C) 1995-1998 Eric Young
(email@example.com) All rights reserved.
This package is an SSL implementation written
by Eric Young (firstname.lastname@example.org).
The implementation was written so as to conform
with Netscape's SSL.
This library is free for commercial and non-com-
mercial use as long as the following conditions are
adhered to. The following conditions apply to all
code found in this distribution, be it the RC4, RSA,
lhash, DES, etc., code; not just the SSL code. The SSL
documentation included with this distribution is
covered by the same copyright terms except that
the holder is Tim Hudson (email@example.com).
Copyright remains Eric Young's, and as such
any Copyright notices in the code are not to be
If this package is used in a product, Eric Young
should be given attribution as the author of the
parts of the library used.
This can be in the form of a textual message at
program startup or in documentation (online or
textual) provided with the package.
Redistribution and use in source and binary forms,
with or without modification, are permitted provid-
ed that the following conditions are met:
1. Redistributions of source code must retain the
copyright notice, this list of conditions and the
2. Redistributions in binary form must reproduce
the above copyright notice, this list of conditions
and the following disclaimer in the documen-
tation and/or other materials provided with the
3. All advertising materials mentioning features or
use of this software must display the following
"This product includes cryptographic software
written by Eric Young (firstname.lastname@example.org)"
The word 'cryptographic' can be left out if the
routines from the library being used are not
cryptographic related :-).
If you include any Windows specific code (or
a derivative thereof ) from the apps directo-
ry (application code) you must include an
"This product includes software written by Tim
THIS SOFTWARE IS PROVIDED BY ERIC YOUNG "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WAR-
RANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIA-
BILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
The license and distribution terms for any publicly
available version or derivative of this code cannot
be changed. i.e. this code cannot simply be copied
and put under another distribution license [includ-
ing the GNU Public License].
COPYRIGHT (C) 1986 Gary S. Brown. You may use
this program, or code or tables extracted from it, as
desired without restriction.
First, the polynomial itself and its table of feedback
terms. The polynomial is X^32+X^26+X^23+
Note that we take it "backwards" and put the
highest-order term in the lowest-order bit. The
X^32 term is "implied"; the LSB is the X^31 term,
etc. The X^0 term (usually shown as "+1") results in
the MSB being 1.
Note that the usual hardware shift register imple-
mentation, which is what we're using (we're merely
optimizing it by doing eight-bit chunks at a time)
shifts bits into the lowest-order term. In our imple-
mentation, that means shifting towards the right.
Why do we do it this way? Because the calculated
CRC must be transmitted in order from highest-order
term to lowest-order term. UARTs transmit characters
in order from LSB to MSB. By storing the CRC this way
we hand it to the UART in the order low-byte to high-
byte; the UART sends each low-bit to high-bit; and
the result is transmission bit by bit from highest- to
lowest-order term without requiring any bit shuffling
on our part. Reception works similarly.
The feedback terms table consists of 256, 32-bit
The table can be generated at runtime if desired;
code to do so is shown later. It might not be obvi-
ous, but the feedback terms simply represent the
results of eight shift/xor operations for all combina-
tions of data and CRC register values.
The values must be right-shifted by eight bits by
the "updcrc logic"; the shift must be unsigned
(bring in zeroes). On some hardware you could
probably optimize the shift in assembler by using
byte-swap instructions polynomial $edb88320
CRC32 code derived from work by Gary S. Brown.
About Open Source Software included in
the viewer software
This viewer software includes certain open
source or other software originating from third
parties that is subject to the GNU General Public
License version 3 (GPLv3) and different copyright
licensees, disclaimers and notices. The source
code of software licensed under GPLv3 and
different copyright licenses, disclaimers and
notices are distributed at the website below,
Important notices regarding software
This product uses software components (licensed
software) in accordance with the software license
agreements granted by third parties. For details,
see the support information for this product at