1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "courgette/crc.h"
6
7#ifdef COURGETTE_USE_CRC_LIB
8#  include "zlib.h"
9#else
10extern "C" {
11#  include "third_party/lzma_sdk/7zCrc.h"
12}
13#endif
14
15#include "base/basictypes.h"
16
17namespace courgette {
18
19uint32 CalculateCrc(const uint8* buffer, size_t size) {
20  uint32 crc;
21
22#ifdef COURGETTE_USE_CRC_LIB
23  // Calculate Crc by calling CRC method in zlib
24  crc = crc32(0, buffer, size);
25#else
26  // Calculate Crc by calling CRC method in LZMA SDK
27  CrcGenerateTable();
28  crc = CrcCalc(buffer, size);
29#endif
30
31  return ~crc;
32}
33
34}  // namespace
35