68 lines
2.0 KiB
C#
68 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Security.Cryptography;
|
|
|
|
namespace ExitGames.Client.Photon.EncryptorManaged
|
|
{
|
|
// Token: 0x0200003C RID: 60
|
|
public class Decryptor : CryptoBase
|
|
{
|
|
// Token: 0x060002C3 RID: 707 RVA: 0x00013F10 File Offset: 0x00012110
|
|
public byte[] DecryptBufferWithIV(byte[] data, int offset, int len, out int outLen)
|
|
{
|
|
Buffer.BlockCopy(data, offset, this.IV, 0, 16);
|
|
this.encryptor.IV = this.IV;
|
|
byte[] array;
|
|
using (ICryptoTransform cryptoTransform = this.encryptor.CreateDecryptor())
|
|
{
|
|
using (MemoryStream memoryStream = new MemoryStream(data, offset + 16, len - 16))
|
|
{
|
|
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Read))
|
|
{
|
|
using (MemoryStream memoryStream2 = new MemoryStream(len - 16))
|
|
{
|
|
int num;
|
|
do
|
|
{
|
|
num = cryptoStream.Read(this.readBuffer, 0, 16);
|
|
bool flag = num != 0;
|
|
if (flag)
|
|
{
|
|
memoryStream2.Write(this.readBuffer, 0, num);
|
|
}
|
|
}
|
|
while (num != 0);
|
|
outLen = (int)memoryStream2.Length;
|
|
array = memoryStream2.ToArray();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x060002C4 RID: 708 RVA: 0x00014024 File Offset: 0x00012224
|
|
public bool CheckHMAC(byte[] data, int len)
|
|
{
|
|
this.hmacsha256.ComputeHash(data, 0, len - 32);
|
|
byte[] hash = this.hmacsha256.Hash;
|
|
bool flag = true;
|
|
int num = 0;
|
|
while (num < 4 && flag)
|
|
{
|
|
int num2 = len - 32 + num * 8;
|
|
int num3 = num * 8;
|
|
flag = data[num2] == hash[num3] && data[num2 + 1] == hash[num3 + 1] && data[num2 + 2] == hash[num3 + 2] && data[num2 + 3] == hash[num3 + 3] && data[num2 + 4] == hash[num3 + 4] && data[num2 + 5] == hash[num3 + 5] && data[num2 + 6] == hash[num3 + 6] && data[num2 + 7] == hash[num3 + 7];
|
|
num++;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
// Token: 0x04000184 RID: 388
|
|
private readonly byte[] IV = new byte[16];
|
|
|
|
// Token: 0x04000185 RID: 389
|
|
private readonly byte[] readBuffer = new byte[16];
|
|
}
|
|
}
|