389 lines
12 KiB
C#
389 lines
12 KiB
C#
using System;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
|
|
{
|
|
// Token: 0x02001C89 RID: 7305
|
|
[Token(Token = "0x2001C89")]
|
|
public sealed class Cast6Engine : Cast5Engine
|
|
{
|
|
// Token: 0x0600B740 RID: 46912 RVA: 0x002879F8 File Offset: 0x00285BF8
|
|
[Token(Token = "0x600B740")]
|
|
[Address(RVA = "0x1DC3B30", Offset = "0x1DC2930", VA = "0x181DC3B30")]
|
|
public Cast6Engine()
|
|
{
|
|
int[] array = new int[48];
|
|
this._Kr = array;
|
|
uint[] array2 = new uint[48];
|
|
this._Km = array2;
|
|
int[] array3 = new int[192];
|
|
this._Tr = array3;
|
|
uint[] array4 = new uint[192];
|
|
this._Tm = array4;
|
|
uint[] array5 = new uint[8];
|
|
this._workingKey = array5;
|
|
int[] array6 = new int[17];
|
|
this._Kr = array6;
|
|
uint[] array7 = new uint[17];
|
|
this._Km = array7;
|
|
int max_ROUNDS = Cast5Engine.MAX_ROUNDS;
|
|
this._rounds = max_ROUNDS;
|
|
this.Reset();
|
|
}
|
|
|
|
// Token: 0x17001CC2 RID: 7362
|
|
// (get) Token: 0x0600B741 RID: 46913 RVA: 0x00287A90 File Offset: 0x00285C90
|
|
[Token(Token = "0x17001CC2")]
|
|
public override string AlgorithmName
|
|
{
|
|
[Token(Token = "0x600B741")]
|
|
[Address(RVA = "0x1DC3C70", Offset = "0x1DC2A70", VA = "0x181DC3C70", Slot = "11")]
|
|
get
|
|
{
|
|
return "CAST6";
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600B742 RID: 46914 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x600B742")]
|
|
[Address(RVA = "0x402080", Offset = "0x400E80", VA = "0x180402080", Slot = "14")]
|
|
public override void Reset()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x0600B743 RID: 46915 RVA: 0x00287AA4 File Offset: 0x00285CA4
|
|
[Token(Token = "0x600B743")]
|
|
[Address(RVA = "0x4B6B10", Offset = "0x4B5910", VA = "0x1804B6B10", Slot = "15")]
|
|
public override int GetBlockSize()
|
|
{
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x0600B744 RID: 46916 RVA: 0x00287AB4 File Offset: 0x00285CB4
|
|
[Token(Token = "0x600B744")]
|
|
[Address(RVA = "0x1DC2B20", Offset = "0x1DC1920", VA = "0x181DC2B20", Slot = "16")]
|
|
internal override void SetKey(byte[] key)
|
|
{
|
|
int num = 0;
|
|
uint num2;
|
|
this._Tm[0] = num2;
|
|
num2 += (uint)1859775393;
|
|
uint num3;
|
|
this._Tr[0] = (int)num3;
|
|
num++;
|
|
num3 += (uint)(-15);
|
|
num += 8;
|
|
byte[] array = new byte[64];
|
|
uint[] workingKey = this._workingKey;
|
|
num++;
|
|
uint num4;
|
|
workingKey[0] = num4;
|
|
uint[] workingKey2 = this._workingKey;
|
|
int length = workingKey2.Length;
|
|
uint[] tm = this._Tm;
|
|
uint num5 = workingKey2[3];
|
|
uint num6 = tm[num];
|
|
int num7 = this._Tr[num];
|
|
uint num8 = Cast5Engine.F1(num5, num6, num7);
|
|
workingKey2[3] = num8;
|
|
uint[] workingKey3 = this._workingKey;
|
|
int length2 = workingKey3.Length;
|
|
uint[] tm2 = this._Tm;
|
|
int[] tr = this._Tr;
|
|
uint num10;
|
|
int num11;
|
|
uint num9 = Cast5Engine.F2(workingKey3[3], num10, num11);
|
|
workingKey3[2] = num9;
|
|
uint[] workingKey4 = this._workingKey;
|
|
int length3 = workingKey4.Length;
|
|
uint[] tm3 = this._Tm;
|
|
int[] tr2 = this._Tr;
|
|
uint num13;
|
|
int num14;
|
|
uint num12 = Cast5Engine.F3(workingKey4[2], num13, num14);
|
|
workingKey4[2] = num12;
|
|
uint[] workingKey5 = this._workingKey;
|
|
int length4 = workingKey5.Length;
|
|
uint[] tm4 = this._Tm;
|
|
int[] tr3 = this._Tr;
|
|
uint num16;
|
|
int num17;
|
|
uint num15 = Cast5Engine.F1(workingKey5[2], num16, num17);
|
|
workingKey5[1] = num15;
|
|
uint[] workingKey6 = this._workingKey;
|
|
int length5 = workingKey6.Length;
|
|
uint[] tm5 = this._Tm;
|
|
int[] tr4 = this._Tr;
|
|
uint num19;
|
|
int num20;
|
|
uint num18 = Cast5Engine.F2(workingKey6[1], num19, num20);
|
|
workingKey6[1] = num18;
|
|
uint[] workingKey7 = this._workingKey;
|
|
int length6 = workingKey7.Length;
|
|
uint[] tm6 = this._Tm;
|
|
int[] tr5 = this._Tr;
|
|
uint num22;
|
|
int num23;
|
|
uint num21 = Cast5Engine.F3(workingKey7[1], num22, num23);
|
|
workingKey7[0] = num21;
|
|
uint[] workingKey8 = this._workingKey;
|
|
int length7 = workingKey8.Length;
|
|
uint[] tm7 = this._Tm;
|
|
int[] tr6 = this._Tr;
|
|
uint num25;
|
|
int num26;
|
|
uint num24 = Cast5Engine.F1(workingKey8[0], num25, num26);
|
|
workingKey8[0] = num24;
|
|
uint[] workingKey9 = this._workingKey;
|
|
int length8 = workingKey9.Length;
|
|
uint[] tm8 = this._Tm;
|
|
int[] tr7 = this._Tr;
|
|
uint num28;
|
|
int num29;
|
|
uint num27 = Cast5Engine.F2(workingKey9[0], num28, num29);
|
|
workingKey9[3] = num27;
|
|
uint[] workingKey10 = this._workingKey;
|
|
int length9 = workingKey10.Length;
|
|
uint[] tm9 = this._Tm;
|
|
int[] tr8 = this._Tr;
|
|
uint num30 = Cast5Engine.F1(workingKey10[3], (uint)num, 8);
|
|
workingKey10[3] = num30;
|
|
uint[] workingKey11 = this._workingKey;
|
|
int length10 = workingKey11.Length;
|
|
uint[] tm10 = this._Tm;
|
|
int[] tr9 = this._Tr;
|
|
uint num32;
|
|
int num33;
|
|
uint num31 = Cast5Engine.F2(workingKey11[3], num32, num33);
|
|
workingKey11[2] = num31;
|
|
uint[] workingKey12 = this._workingKey;
|
|
int length11 = workingKey12.Length;
|
|
uint[] tm11 = this._Tm;
|
|
int[] tr10 = this._Tr;
|
|
uint num35;
|
|
int num36;
|
|
uint num34 = Cast5Engine.F3(workingKey12[2], num35, num36);
|
|
workingKey12[2] = num34;
|
|
uint[] workingKey13 = this._workingKey;
|
|
int length12 = workingKey13.Length;
|
|
uint[] tm12 = this._Tm;
|
|
int[] tr11 = this._Tr;
|
|
uint num38;
|
|
int num39;
|
|
uint num37 = Cast5Engine.F1(workingKey13[2], num38, num39);
|
|
workingKey13[1] = num37;
|
|
uint[] workingKey14 = this._workingKey;
|
|
int length13 = workingKey14.Length;
|
|
uint[] tm13 = this._Tm;
|
|
int[] tr12 = this._Tr;
|
|
uint num41;
|
|
int num42;
|
|
uint num40 = Cast5Engine.F2(workingKey14[1], num41, num42);
|
|
workingKey14[1] = num40;
|
|
uint[] workingKey15 = this._workingKey;
|
|
int length14 = workingKey15.Length;
|
|
uint[] tm14 = this._Tm;
|
|
int[] tr13 = this._Tr;
|
|
uint num44;
|
|
int num45;
|
|
uint num43 = Cast5Engine.F3(workingKey15[1], num44, num45);
|
|
workingKey15[0] = num43;
|
|
uint[] workingKey16 = this._workingKey;
|
|
int length15 = workingKey16.Length;
|
|
uint[] tm15 = this._Tm;
|
|
int[] tr14 = this._Tr;
|
|
uint num47;
|
|
int num48;
|
|
uint num46 = Cast5Engine.F1(workingKey16[0], num47, num48);
|
|
workingKey16[0] = num46;
|
|
uint[] workingKey17 = this._workingKey;
|
|
int length16 = workingKey17.Length;
|
|
uint[] tm16 = this._Tm;
|
|
num += 15;
|
|
int num49 = this._Tr[num];
|
|
uint num50 = workingKey17[0];
|
|
uint num51 = tm16[num];
|
|
uint num52 = Cast5Engine.F2(num50, num51, num49);
|
|
workingKey17[3] = num52;
|
|
uint[] workingKey18 = this._workingKey;
|
|
int[] kr = this._Kr;
|
|
uint num53 = workingKey18[0];
|
|
num.m_value = (int)num53;
|
|
uint[] workingKey19 = this._workingKey;
|
|
int[] kr2 = this._Kr;
|
|
uint num54 = workingKey19[1];
|
|
kr2[0] = (int)num54;
|
|
uint[] workingKey20 = this._workingKey;
|
|
int[] kr3 = this._Kr;
|
|
uint num55 = workingKey20[2];
|
|
kr3[0] = (int)num55;
|
|
uint[] workingKey21 = this._workingKey;
|
|
int[] kr4 = this._Kr;
|
|
uint num56 = workingKey21[3];
|
|
kr4[0] = (int)num56;
|
|
uint[] workingKey22 = this._workingKey;
|
|
uint[] km = this._Km;
|
|
uint num57 = workingKey22[3];
|
|
num.m_value = (int)num57;
|
|
uint[] workingKey23 = this._workingKey;
|
|
uint[] km2 = this._Km;
|
|
uint num58 = workingKey23[2];
|
|
km2[0] = num58;
|
|
uint[] workingKey24 = this._workingKey;
|
|
uint[] km3 = this._Km;
|
|
uint num59 = workingKey24[1];
|
|
km3[0] = num59;
|
|
uint[] workingKey25 = this._workingKey;
|
|
uint[] km4 = this._Km;
|
|
uint num60 = workingKey25[0];
|
|
num++;
|
|
km4[0] = num60;
|
|
}
|
|
|
|
// Token: 0x0600B745 RID: 46917 RVA: 0x0028804C File Offset: 0x0028624C
|
|
[Token(Token = "0x600B745")]
|
|
[Address(RVA = "0x1DC2970", Offset = "0x1DC1770", VA = "0x181DC2970", Slot = "17")]
|
|
internal override int EncryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
|
|
{
|
|
uint num = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint num2 = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint num3 = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint num4 = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint[] array = new uint[4];
|
|
this.CAST_Encipher(num, num2, num3, num4, array);
|
|
uint num5 = array[0];
|
|
uint num6 = array[0];
|
|
uint num7 = array[1];
|
|
uint num8 = array[1];
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x0600B746 RID: 46918 RVA: 0x002880C0 File Offset: 0x002862C0
|
|
[Token(Token = "0x600B746")]
|
|
[Address(RVA = "0x1DC27C0", Offset = "0x1DC15C0", VA = "0x181DC27C0", Slot = "18")]
|
|
internal override int DecryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
|
|
{
|
|
uint num = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint num2 = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint num3 = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint num4 = Pack.BE_To_UInt32(src, srcIndex);
|
|
uint[] array = new uint[4];
|
|
this.CAST_Decipher(num, num2, num3, num4, array);
|
|
uint num5 = array[0];
|
|
uint num6 = array[0];
|
|
uint num7 = array[1];
|
|
uint num8 = array[1];
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x0600B747 RID: 46919 RVA: 0x00288134 File Offset: 0x00286334
|
|
[Token(Token = "0x600B747")]
|
|
[Address(RVA = "0x1DC2330", Offset = "0x1DC1130", VA = "0x181DC2330")]
|
|
private void CAST_Encipher(uint A, uint B, uint C, uint D, uint[] result)
|
|
{
|
|
int num = 0;
|
|
uint[] km = this._Km;
|
|
int[] kr = this._Kr;
|
|
uint[] km2 = this._Km;
|
|
int[] kr2 = this._Kr;
|
|
uint num3;
|
|
int num4;
|
|
uint num2 = Cast5Engine.F2(C, num3, num4);
|
|
uint[] km3 = this._Km;
|
|
int[] kr3 = this._Kr;
|
|
uint[] km4 = this._Km;
|
|
num += 3;
|
|
int[] kr4 = this._Kr;
|
|
uint num5 = km4[num];
|
|
int num6 = kr4[num];
|
|
uint num7 = Cast5Engine.F1(A, num5, num6);
|
|
num += 4;
|
|
uint[] km5 = this._Km;
|
|
int[] kr5 = this._Kr;
|
|
uint num8 = Cast5Engine.F1(A, num5, num6);
|
|
uint[] km6 = this._Km;
|
|
int[] kr6 = this._Kr;
|
|
uint[] km7 = this._Km;
|
|
uint num10;
|
|
uint num9 = num10 + 1U;
|
|
int num11 = this._Kr[(int)num9];
|
|
uint num12 = km7[(int)num9];
|
|
uint num13 = Cast5Engine.F2(C, num12, num11);
|
|
uint[] km8 = this._Km;
|
|
int[] kr7 = this._Kr;
|
|
num10 += (uint)4;
|
|
}
|
|
|
|
// Token: 0x0600B748 RID: 46920 RVA: 0x00288234 File Offset: 0x00286434
|
|
[Token(Token = "0x600B748")]
|
|
[Address(RVA = "0x1DC1EA0", Offset = "0x1DC0CA0", VA = "0x181DC1EA0")]
|
|
private void CAST_Decipher(uint A, uint B, uint C, uint D, uint[] result)
|
|
{
|
|
uint[] km = this._Km;
|
|
int[] kr = this._Kr;
|
|
uint[] km2 = this._Km;
|
|
uint num2;
|
|
uint num = num2 + 1U;
|
|
int num3 = this._Kr[(int)num];
|
|
uint num4 = km2[(int)num];
|
|
uint num5 = Cast5Engine.F2(C, num4, num3);
|
|
uint[] km3 = this._Km;
|
|
int[] kr2 = this._Kr;
|
|
uint[] km4 = this._Km;
|
|
num2 += (uint)3;
|
|
int[] kr3 = this._Kr;
|
|
uint num6 = km4[(int)num2];
|
|
int num7 = kr3[(int)num2];
|
|
uint num8 = Cast5Engine.F1(A, num6, num7);
|
|
uint[] km5 = this._Km;
|
|
int[] kr4 = this._Kr;
|
|
uint num9 = Cast5Engine.F1(A, num6, num7);
|
|
uint[] km6 = this._Km;
|
|
int[] kr5 = this._Kr;
|
|
uint[] km7 = this._Km;
|
|
uint num11;
|
|
uint num10 = num11 + 1U;
|
|
int num12 = this._Kr[(int)num10];
|
|
uint num13 = km7[(int)num10];
|
|
uint num14 = Cast5Engine.F2(C, num13, num12);
|
|
uint[] km8 = this._Km;
|
|
int[] kr6 = this._Kr;
|
|
}
|
|
|
|
// Token: 0x04007438 RID: 29752
|
|
[Token(Token = "0x4007438")]
|
|
private const int ROUNDS = 12;
|
|
|
|
// Token: 0x04007439 RID: 29753
|
|
[Token(Token = "0x4007439")]
|
|
private const int BLOCK_SIZE = 16;
|
|
|
|
// Token: 0x0400743A RID: 29754
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x400743A")]
|
|
private int[] _Kr;
|
|
|
|
// Token: 0x0400743B RID: 29755
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x400743B")]
|
|
private uint[] _Km;
|
|
|
|
// Token: 0x0400743C RID: 29756
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x400743C")]
|
|
private int[] _Tr;
|
|
|
|
// Token: 0x0400743D RID: 29757
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x400743D")]
|
|
private uint[] _Tm;
|
|
|
|
// Token: 0x0400743E RID: 29758
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x400743E")]
|
|
private uint[] _workingKey;
|
|
}
|
|
}
|