#include "decrypt.h" #include "utils/decryptUtilities.h" struct DECRYPTION_DATA { uint32_t key0; uint32_t key1; uint32_t key2; }; struct DECRYPTION_DATA decryptor; void initDecryptor(uint32_t key0, uint32_t key1, uint32_t key2) { decryptor.key0 = key0; decryptor.key1 = key1; decryptor.key2 = key2; } /** Decrypts the given input in-place. The input buffer will be modified. */ void decrypt(uint8_t* chunk, unsigned long length) { for (unsigned long i = 0; i < length; i += 1) { uint8_t curChar = chunk[i]; curChar = curChar ^ decryptByte((uint16_t)((uint16_t)(decryptor.key2 & (uint16_t)0xFFFF) | (uint16_t)2)); updateKeys(&(decryptor.key0), &(decryptor.key1), &(decryptor.key2), curChar); chunk[i] = curChar; } }