]>
git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/Common/Crc32.c
3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 CalcuateCrc32 routine.
25 UINT32 mCrcTable
[256] = {
288 IN OUT UINT32
*CrcOut
294 The CalculateCrc32 routine.
298 Data - The buffer contaning the data to be processed
299 DataSize - The size of data to be processed
300 CrcOut - A pointer to the caller allocated UINT32 that on
301 contains the CRC32 checksum of Data
305 EFI_SUCCESS - Calculation is successful.
306 EFI_INVALID_PARAMETER - Data / CrcOut = NULL, or DataSize = 0
314 if ((DataSize
== 0) || (Data
== NULL
) || (CrcOut
== NULL
)) {
315 return EFI_INVALID_PARAMETER
;
319 for (Index
= 0, Ptr
= Data
; Index
< DataSize
; Index
++, Ptr
++) {
320 Crc
= (Crc
>> 8) ^ mCrcTable
[(UINT8
) Crc
^ *Ptr
];
323 *CrcOut
= Crc
^ 0xffffffff;