public void kirk_CMD4(byte* outbuff, byte* inbuff, int size)
{
check_initialized();
KIRK_AES128CBC_HEADER *header = (KIRK_AES128CBC_HEADER*)inbuff;
if (header->Mode != KirkMode.EncryptCbc)
{
throw (new KirkException(ResultEnum.PSP_KIRK_INVALID_MODE));
}
if (header->Datasize == 0)
{
throw (new KirkException(ResultEnum.PSP_KIRK_DATA_SIZE_IS_ZERO));
}
kirk_4_7_get_key(header->KeySeed, (key) =>
{
// Set the key
Crypto.AES_ctx aesKey;
Crypto.AES_set_key(&aesKey, key, 128);
Crypto.AES_cbc_encrypt(&aesKey, inbuff + sizeof(KIRK_AES128CBC_HEADER), outbuff, size);
});
}