public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [Patch V1] [Patch V1][edk2-basetools]BaseTools:Convert the C tool of calculating the crc32 into a python tool
@ 2022-09-14  7:31 liwenzha
  0 siblings, 0 replies; only message in thread
From: liwenzha @ 2022-09-14  7:31 UTC (permalink / raw)
  To: devel; +Cc: Bob Feng, Liming Gao, Yuwei Chen

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


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2022-09-14  7:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-14  7:31 [Patch V1] [Patch V1][edk2-basetools]BaseTools:Convert the C tool of calculating the crc32 into a python tool liwenzha

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox