11# based on: https://github.com/Razmoth/PGRStudio/blob/master/AssetStudio/PGR/PGR.cs
22import re
3- from typing import Tuple , Union
3+ from typing import Optional , Tuple , Union
44
55from ..streams import EndianBinaryReader
66
1010 UnityPyBoost = None
1111
1212UNITY3D_SIGNATURE = b"#$unity3dchina!@"
13- DECRYPT_KEY : bytes = None
13+ DECRYPT_KEY : Optional [ bytes ] = None
1414
1515
1616def set_assetbundle_decrypt_key (key : Union [bytes , str ]):
@@ -66,7 +66,7 @@ class ArchiveStorageDecryptor:
6666 index : bytes
6767 substitute : bytes = bytes (0x10 )
6868
69- def __init__ (self , reader : EndianBinaryReader ) -> None :
69+ def __init__ (self , reader : EndianBinaryReader ):
7070 self .unknown_1 = reader .read_u_int ()
7171
7272 # read vector data/key vectors
@@ -100,7 +100,6 @@ def __init__(self, reader: EndianBinaryReader) -> None:
100100 )
101101
102102 def decrypt_block (self , data : bytes , index : int ):
103-
104103 if UnityPyBoost :
105104 return UnityPyBoost .decrypt_block (self .index , self .substitute , data , index )
106105
@@ -113,7 +112,7 @@ def decrypt_block(self, data: bytes, index: int):
113112 index += 1
114113 return data
115114
116- def decrypt_byte (self , view : bytearray , offset : int , index : int ):
115+ def decrypt_byte (self , view : Union [ bytearray , memoryview ] , offset : int , index : int ):
117116 b = (
118117 self .substitute [((index >> 2 ) & 3 ) + 4 ]
119118 + self .substitute [index & 3 ]
@@ -127,7 +126,7 @@ def decrypt_byte(self, view: bytearray, offset: int, index: int):
127126 b = view [offset ]
128127 return b , offset + 1 , index + 1
129128
130- def decrypt (self , data : bytearray , index : int , remaining : int ):
129+ def decrypt (self , data : Union [ bytearray , memoryview ] , index : int , remaining : int ):
131130 offset = 0
132131
133132 curByte , offset , index = self .decrypt_byte (data , offset , index )
0 commit comments