summaryrefslogtreecommitdiff
path: root/src/libzrtpcpp/ZrtpCrc32.h
blob: ad57edd98f0f38303ecb1b599e3828791b88dd3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
  Copyright (C) 2006-2010 Werner Dittmann

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef _ZRTPCRC32_H_
#define _ZRTPCRC32_H_

/**
 *
 * @file ZrtpCrc32.h
 * @brief Methods to compute the CRC32 checksum for ZRTP packets
 * 
 * @ingroup GNU_ZRTP
 * @{
 * 
 * @see ZrtpCallback
 */

/**
 * Check if a buffer matches a given CRC32 checksum.
 * 
 * @param buffer
 *     Pointer to the data buffer.
 * @param length
 *     Length in bytes of the data buffer.
 * @param crc32
 *     The CRC32 checksum.
 * 
 * @return
 *    @c true if the CRC32 checksum matches the computed checksum of the
 *    buffer, @c false otherwise.
 */
bool zrtpCheckCksum(uint8_t *buffer, uint16_t length, uint32_t crc32);

/**
 * Generate a CRC32 checksum of a data buffer
 * 
 * @param buffer
 *    Pointer to the buffer.
 * @param length
 *     Lenght of the buffer in bytes.
 * 
 * @return
 *    A preliminary CRC32 checksum
 */
uint32_t zrtpGenerateCksum(uint8_t *buffer, uint16_t length);

/**
 * Close CRC32 computation.
 * 
 * @param crc32
 *    A preliminary CRC32 checksum.
 * 
 * @return
 *    The ready to use CRC32 checksum in host order.
 */
uint32_t zrtpEndCksum(uint32_t crc32);

/**
 * @}
 */
#endif