Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Unpacks data
- void IMG::UnpackData(
- eCompressionType compressionType,
- eEncryptionType encryptionType,
- const char* encryptionKey,
- void* UnpackedPtr,
- unsigned long UnpackedSize,
- const void *PackedPtr,
- size_t MaxPackedSize
- )
- {
- switch(encryptionType)
- {
- case ENCRYPTION_TYPE_NONE:
- {
- memcpy(UnpackedPtr, PackedPtr, UnpackedSize);
- break;
- }
- case ENCRYPTION_TYPE_GTAIV_AES:
- {
- CRijndael oRijndael;
- oRijndael.MakeKey(encryptionKey, CRijndael::sm_chain0, 32, 16);
- char* xPackedPtr = new char[MaxPackedSize];
- memcpy(xPackedPtr, PackedPtr, MaxPackedSize);
- unsigned long DecryptionSize = MaxPackedSize / 16 * 16;
- unsigned long RemainderSize = MaxPackedSize % 16;
- for(int i = 0; i < 16; i++)
- {
- oRijndael.Decrypt((const char*)xPackedPtr, (char*)UnpackedPtr, DecryptionSize, CRijndael::ECB);
- memcpy(xPackedPtr, UnpackedPtr, MaxPackedSize);
- }
- memcpy((char*)UnpackedPtr + DecryptionSize, (char*)PackedPtr + DecryptionSize, RemainderSize);
- delete xPackedPtr;
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement