@@ -43,7 +43,7 @@ def compress(self, data, signature: int, file_version: int = None) -> bytes:
4343 uncompressed_size = len (data )
4444
4545 if file_version is None :
46- file_version = 2 if zstandard and not (Signatures .SCLZ & signature ) else 1
46+ file_version = 3 if zstandard and not (Signatures .SCLZ & signature ) else 1
4747
4848 if Signatures .ZSTD & signature and not zstandard or \
4949 Signatures .SCLZ & signature and not lzham :
@@ -52,7 +52,7 @@ def compress(self, data, signature: int, file_version: int = None) -> bytes:
5252 super ().__init__ ('little' )
5353 if signature is Signatures .NONE :
5454 return data
55- elif ((Signatures .LZMA | Signatures .SIG ) & signature ) or (Signatures .SC & signature and file_version != 2 ):
55+ elif ((Signatures .LZMA | Signatures .SIG ) & signature ) or (Signatures .SC & signature and file_version != 3 ):
5656 compressed = lzma .compress (data , format = lzma .FORMAT_ALONE , filters = self .lzma_filters )
5757
5858 self .write (compressed [:5 ])
@@ -71,20 +71,23 @@ def compress(self, data, signature: int, file_version: int = None) -> bytes:
7171 self .write (compressed )
7272
7373 compressed = self .buffer
74- elif (Signatures .SC | Signatures .ZSTD ) & signature and file_version == 2 :
74+ elif (Signatures .SC | Signatures .ZSTD ) & signature and file_version == 3 :
7575 compressor = zstandard .ZstdCompressor ()
7676 compressed = compressor .compress (data )
7777 else :
7878 raise TypeError ('Unknown Signature!' )
7979
8080 super ().__init__ ('big' )
8181 if (Signatures .SC | Signatures .SCLZ ) & signature :
82- data_hash = md5 (data )
82+ data_hash = md5 (data ). digest ()
8383
8484 self .write (b'SC' )
8585 self .writeInt32 (file_version )
86- self .writeInt32 (16 )
87- compressed = self .buffer + data_hash .digest () + compressed
86+ if file_version == 4 :
87+ self .writeInt32 (1 )
88+ self .writeInt32 (len (data_hash ))
89+ self .write (data_hash )
90+ compressed = self .buffer + compressed
8891 elif signature == Signatures .SIG :
8992 self .write (b'Sig:' )
9093 self .write (b'\x00 ' * 64 ) # sha64
0 commit comments