[edk2-devel] [Patch V1] [Patch V1][edk2-basetools]BaseTools:Convert the C tool of calculating the crc32 into a python tool

liwenzha posted 1 patch 1 year, 6 months ago
Failed in applying to current master (apply log)
edk2basetools/GenCrc32/GenCrc32.py | 262 ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 file changed, 2 insertions(+), 260 deletions(-)
[edk2-devel] [Patch V1] [Patch V1][edk2-basetools]BaseTools:Convert the C tool of calculating the crc32 into a python tool
Posted by liwenzha 1 year, 6 months ago
description

This patch converts the C tool of calculating the crc32 value of file into

a python file. To realize this,after reading the data into the file in

binary form from an original file,a lookup table is listed to do XOR and

shifting calculation for each bit in the file.The 32-bit result is placed

at the beginning of the file as the header.The verification part will

recalculate the crc32 value of the data behind the header again.When header

is equal to the recalculating result,which means the crc32 value of this file

is correct and the file is valid.In the unit testing part,some files which

have been preprocessed by C tool are placed in a folder.The file after processing

by python tool will be compared with these files to check whether the result is correct.

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Signed-off-by: Yuwei Chen <yuwei.chen@intel.com>
---
 edk2basetools/GenCrc32/GenCrc32.py | 262 ++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1 file changed, 2 insertions(+), 260 deletions(-)

diff --git a/edk2basetools/GenCrc32/GenCrc32.py b/edk2basetools/GenCrc32/GenCrc32.py
index e27e4b0..982d2e7 100644
--- a/edk2basetools/GenCrc32/GenCrc32.py
+++ b/edk2basetools/GenCrc32/GenCrc32.py
@@ -14,263 +14,8 @@
 import argparse
 import os
 import sys
+from binascii import crc32
 
-mCrcTable=[0x00000000,
-  0x77073096,
-  0xEE0E612C,
-  0x990951BA,
-  0x076DC419,
-  0x706AF48F,
-  0xE963A535,
-  0x9E6495A3,
-  0x0EDB8832,
-  0x79DCB8A4,
-  0xE0D5E91E,
-  0x97D2D988,
-  0x09B64C2B,
-  0x7EB17CBD,
-  0xE7B82D07,
-  0x90BF1D91,
-  0x1DB71064,
-  0x6AB020F2,
-  0xF3B97148,
-  0x84BE41DE,
-  0x1ADAD47D,
-  0x6DDDE4EB,
-  0xF4D4B551,
-  0x83D385C7,
-  0x136C9856,
-  0x646BA8C0,
-  0xFD62F97A,
-  0x8A65C9EC,
-  0x14015C4F,
-  0x63066CD9,
-  0xFA0F3D63,
-  0x8D080DF5,
-  0x3B6E20C8,
-  0x4C69105E,
-  0xD56041E4,
-  0xA2677172,
-  0x3C03E4D1,
-  0x4B04D447,
-  0xD20D85FD,
-  0xA50AB56B,
-  0x35B5A8FA,
-  0x42B2986C,
-  0xDBBBC9D6,
-  0xACBCF940,
-  0x32D86CE3,
-  0x45DF5C75,
-  0xDCD60DCF,
-  0xABD13D59,
-  0x26D930AC,
-  0x51DE003A,
-  0xC8D75180,
-  0xBFD06116,
-  0x21B4F4B5,
-  0x56B3C423,
-  0xCFBA9599,
-  0xB8BDA50F,
-  0x2802B89E,
-  0x5F058808,
-  0xC60CD9B2,
-  0xB10BE924,
-  0x2F6F7C87,
-  0x58684C11,
-  0xC1611DAB,
-  0xB6662D3D,
-  0x76DC4190,
-  0x01DB7106,
-  0x98D220BC,
-  0xEFD5102A,
-  0x71B18589,
-  0x06B6B51F,
-  0x9FBFE4A5,
-  0xE8B8D433,
-  0x7807C9A2,
-  0x0F00F934,
-  0x9609A88E,
-  0xE10E9818,
-  0x7F6A0DBB,
-  0x086D3D2D,
-  0x91646C97,
-  0xE6635C01,
-  0x6B6B51F4,
-  0x1C6C6162,
-  0x856530D8,
-  0xF262004E,
-  0x6C0695ED,
-  0x1B01A57B,
-  0x8208F4C1,
-  0xF50FC457,
-  0x65B0D9C6,
-  0x12B7E950,
-  0x8BBEB8EA,
-  0xFCB9887C,
-  0x62DD1DDF,
-  0x15DA2D49,
-  0x8CD37CF3,
-  0xFBD44C65,
-  0x4DB26158,
-  0x3AB551CE,
-  0xA3BC0074,
-  0xD4BB30E2,
-  0x4ADFA541,
-  0x3DD895D7,
-  0xA4D1C46D,
-  0xD3D6F4FB,
-  0x4369E96A,
-  0x346ED9FC,
-  0xAD678846,
-  0xDA60B8D0,
-  0x44042D73,
-  0x33031DE5,
-  0xAA0A4C5F,
-  0xDD0D7CC9,
-  0x5005713C,
-  0x270241AA,
-  0xBE0B1010,
-  0xC90C2086,
-  0x5768B525,
-  0x206F85B3,
-  0xB966D409,
-  0xCE61E49F,
-  0x5EDEF90E,
-  0x29D9C998,
-  0xB0D09822,
-  0xC7D7A8B4,
-  0x59B33D17,
-  0x2EB40D81,
-  0xB7BD5C3B,
-  0xC0BA6CAD,
-  0xEDB88320,
-  0x9ABFB3B6,
-  0x03B6E20C,
-  0x74B1D29A,
-  0xEAD54739,
-  0x9DD277AF,
-  0x04DB2615,
-  0x73DC1683,
-  0xE3630B12,
-  0x94643B84,
-  0x0D6D6A3E,
-  0x7A6A5AA8,
-  0xE40ECF0B,
-  0x9309FF9D,
-  0x0A00AE27,
-  0x7D079EB1,
-  0xF00F9344,
-  0x8708A3D2,
-  0x1E01F268,
-  0x6906C2FE,
-  0xF762575D,
-  0x806567CB,
-  0x196C3671,
-  0x6E6B06E7,
-  0xFED41B76,
-  0x89D32BE0,
-  0x10DA7A5A,
-  0x67DD4ACC,
-  0xF9B9DF6F,
-  0x8EBEEFF9,
-  0x17B7BE43,
-  0x60B08ED5,
-  0xD6D6A3E8,
-  0xA1D1937E,
-  0x38D8C2C4,
-  0x4FDFF252,
-  0xD1BB67F1,
-  0xA6BC5767,
-  0x3FB506DD,
-  0x48B2364B,
-  0xD80D2BDA,
-  0xAF0A1B4C,
-  0x36034AF6,
-  0x41047A60,
-  0xDF60EFC3,
-  0xA867DF55,
-  0x316E8EEF,
-  0x4669BE79,
-  0xCB61B38C,
-  0xBC66831A,
-  0x256FD2A0,
-  0x5268E236,
-  0xCC0C7795,
-  0xBB0B4703,
-  0x220216B9,
-  0x5505262F,
-  0xC5BA3BBE,
-  0xB2BD0B28,
-  0x2BB45A92,
-  0x5CB36A04,
-  0xC2D7FFA7,
-  0xB5D0CF31,
-  0x2CD99E8B,
-  0x5BDEAE1D,
-  0x9B64C2B0,
-  0xEC63F226,
-  0x756AA39C,
-  0x026D930A,
-  0x9C0906A9,
-  0xEB0E363F,
-  0x72076785,
-  0x05005713,
-  0x95BF4A82,
-  0xE2B87A14,
-  0x7BB12BAE,
-  0x0CB61B38,
-  0x92D28E9B,
-  0xE5D5BE0D,
-  0x7CDCEFB7,
-  0x0BDBDF21,
-  0x86D3D2D4,
-  0xF1D4E242,
-  0x68DDB3F8,
-  0x1FDA836E,
-  0x81BE16CD,
-  0xF6B9265B,
-  0x6FB077E1,
-  0x18B74777,
-  0x88085AE6,
-  0xFF0F6A70,
-  0x66063BCA,
-  0x11010B5C,
-  0x8F659EFF,
-  0xF862AE69,
-  0x616BFFD3,
-  0x166CCF45,
-  0xA00AE278,
-  0xD70DD2EE,
-  0x4E048354,
-  0x3903B3C2,
-  0xA7672661,
-  0xD06016F7,
-  0x4969474D,
-  0x3E6E77DB,
-  0xAED16A4A,
-  0xD9D65ADC,
-  0x40DF0B66,
-  0x37D83BF0,
-  0xA9BCAE53,
-  0xDEBB9EC5,
-  0x47B2CF7F,
-  0x30B5FFE9,
-  0xBDBDF21C,
-  0xCABAC28A,
-  0x53B39330,
-  0x24B4A3A6,
-  0xBAD03605,
-  0xCDD70693,
-  0x54DE5729,
-  0x23D967BF,
-  0xB3667A2E,
-  0xC4614AB8,
-  0x5D681B02,
-  0x2A6F2B94,
-  0xB40BBE37,
-  0xC30C8EA1,
-  0x5A05DF1B,
-  0x2D02EF8D]
 
 
 parser=argparse.ArgumentParser(description='''
@@ -307,10 +52,7 @@ def CalculateCrc32(inputfile:str, outputfile:str, filebytes=b''):
             with open(inputfile,'rb') as fin:             
                 temp=fin.read()
                 
-        DataSize = len(temp)
-        for Index in range(DataSize):                 
-            Crc=(Crc>>8)^mCrcTable[(Crc&0xff)^temp[Index]]
-        CrcOut=Crc^0xffffffff
+        CrcOut = crc32(temp)
         CrcOut=CrcOut.to_bytes(4,byteorder="little")
         with open(outputfile,'wb') as fout:        
             if status==0:
-- 
2.37.0.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#93739): https://edk2.groups.io/g/devel/message/93739
Mute This Topic: https://groups.io/mt/93673305/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-