chiark / gitweb /
Headers: Guard inclusion of mLib headers.
[mLib] / crc32.3
CommitLineData
b6b9d458 1.\" -*-nroff-*-
d2a91066 2.ie t \{\
3. ds ss \s8\u
4. ds se \d\s0
5.\}
6.el \{\
7. ds ss ^
8. ds se
9.\}
fbf20b5b 10.TH crc32 3 "8 May 1999" "Straylight/Edgeware" "mLib utilities library"
b6b9d458 11.SH NAME
12crc32 \- calculate 32-bit CRC
08da152e 13.\" @crc32
b6b9d458 14.SH SYNOPSIS
15.nf
16.B "#include <mLib/crc32.h>"
17
cededfbe 18.BI "uint32 crc32(uint32 " crc ", const void *" buf ", size_t " sz );
b6b9d458 19.BI CRC32( result ", " crc ", " buf ", " sz )
20.fi
21.SH DESCRIPTION
22The
23.B crc32
24function calculates a 32-bit cyclic redundancy check of the data block
25at address
26.I buf
27and size
28.I sz
29passed to it.
30.PP
31The function is restartable. For a first call, pass zero as the value
32of the
33.I crc
34argument; for subsequent blocks, pass in the previous output. The final
35answer is equal to the result you'd get from computing a CRC over the
36concatenation of the individual blocks.
37.PP
38The
39.B CRC32
40macro calculates a CRC inline. The calculated CRC value is placed in
41the variable named by
42.IR result .
43Only use the macro version when efficiency is a major concern: it makes
44the code rather harder to read.
45.PP
46Note that a CRC is not cryptographically strong: it's fairly easy for an
47adversary to construct blocks of data with any desired CRC, or to modify
48a given block in a way which doesn't change its (unknown) CRC.
49.PP
50The exact behaviour of the CRC is beyond the scope of this manual;
51suffice to say that the result is, in some suitable representation, the
0e141703 52remainder after division by a degree-32 polynomial in GF(2)[x].
b6b9d458 53.SH "RETURN VALUE"
54The return value is the 32-bit CRC of the input block.
08da152e 55.SH "SEE ALSO"
c5775f49 56.BR unihash (3),
08da152e 57.BR mLib (3).
b6b9d458 58.SH AUTHOR
9b5ac6ff 59Mark Wooding, <mdw@distorted.org.uk>