/src/sleuthkit/tsk/fs/btrfs_csum.cpp
Line | Count | Source |
1 | | /* |
2 | | ** The Sleuth Kit |
3 | | ** |
4 | | ** Brian Carrier [carrier <at> sleuthkit [dot] org] |
5 | | ** Copyright (c) 2003-2011 Brian Carrier. All rights reserved |
6 | | ** |
7 | | ** TASK |
8 | | ** Copyright (c) 2015 Stefan Pöschel. All rights reserved |
9 | | ** |
10 | | ** This software is distributed under the Common Public License 1.0 |
11 | | */ |
12 | | |
13 | | /* |
14 | | * Contains the checksum part for Btrfs file system support. |
15 | | */ |
16 | | |
17 | | #include "tsk/base/crc.h" |
18 | | |
19 | | /** |
20 | | * Returns the CRC32C checksum of a specific amount of data. |
21 | | * @param a_data pointer to data |
22 | | * @param a_len data len |
23 | | * @return calculated checksum |
24 | | */ |
25 | | extern "C" unsigned long |
26 | | btrfs_csum_crc32c(const unsigned char *a_data, const int a_len) |
27 | 105 | { |
28 | 105 | cm_t cm; |
29 | 105 | cm.cm_width = 32; |
30 | 105 | cm.cm_poly = 0x1EDC6F41; |
31 | 105 | cm.cm_init = 0xFFFFFFFF; |
32 | 105 | cm.cm_refin = true; |
33 | 105 | cm.cm_refot = true; |
34 | 105 | cm.cm_xorot = 0xFFFFFFFF; |
35 | | |
36 | 105 | cm_ini(&cm); |
37 | 105 | cm_blk(&cm, (unsigned char *) a_data, a_len); |
38 | 105 | return cm_crc(&cm); |
39 | 105 | } |