using System; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines { // Token: 0x02001D69 RID: 7529 [Token(Token = "0x2001D69")] public sealed class Cast6Engine : Cast5Engine { // Token: 0x0600BB0E RID: 47886 RVA: 0x00290B04 File Offset: 0x0028ED04 [Token(Token = "0x600BB0E")] [Address(RVA = "0x27E5FF0", Offset = "0x27E4FF0", VA = "0x1827E5FF0")] 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: 0x17001D5F RID: 7519 // (get) Token: 0x0600BB0F RID: 47887 RVA: 0x00290B9C File Offset: 0x0028ED9C [Token(Token = "0x17001D5F")] public override string AlgorithmName { [Token(Token = "0x600BB0F")] [Address(RVA = "0x27E6130", Offset = "0x27E5130", VA = "0x1827E6130", Slot = "11")] get { return "CAST6"; } } // Token: 0x0600BB10 RID: 47888 RVA: 0x0000220F File Offset: 0x0000040F [Token(Token = "0x600BB10")] [Address(RVA = "0x4242D0", Offset = "0x4232D0", VA = "0x1804242D0", Slot = "14")] public override void Reset() { throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method."); } // Token: 0x0600BB11 RID: 47889 RVA: 0x00290BB0 File Offset: 0x0028EDB0 [Token(Token = "0x600BB11")] [Address(RVA = "0x8BB9C0", Offset = "0x8BA9C0", VA = "0x1808BB9C0", Slot = "15")] public override int GetBlockSize() { return 16; } // Token: 0x0600BB12 RID: 47890 RVA: 0x00290BC0 File Offset: 0x0028EDC0 [Token(Token = "0x600BB12")] [Address(RVA = "0x27E4FE0", Offset = "0x27E3FE0", VA = "0x1827E4FE0", 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: 0x0600BB13 RID: 47891 RVA: 0x00291158 File Offset: 0x0028F358 [Token(Token = "0x600BB13")] [Address(RVA = "0x27E4E30", Offset = "0x27E3E30", VA = "0x1827E4E30", 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: 0x0600BB14 RID: 47892 RVA: 0x002911CC File Offset: 0x0028F3CC [Token(Token = "0x600BB14")] [Address(RVA = "0x27E4C80", Offset = "0x27E3C80", VA = "0x1827E4C80", 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: 0x0600BB15 RID: 47893 RVA: 0x00291240 File Offset: 0x0028F440 [Token(Token = "0x600BB15")] [Address(RVA = "0x27E47F0", Offset = "0x27E37F0", VA = "0x1827E47F0")] 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: 0x0600BB16 RID: 47894 RVA: 0x00291340 File Offset: 0x0028F540 [Token(Token = "0x600BB16")] [Address(RVA = "0x27E4360", Offset = "0x27E3360", VA = "0x1827E4360")] 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: 0x040075F1 RID: 30193 [Token(Token = "0x40075F1")] private const int ROUNDS = 12; // Token: 0x040075F2 RID: 30194 [Token(Token = "0x40075F2")] private const int BLOCK_SIZE = 16; // Token: 0x040075F3 RID: 30195 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40075F3")] private int[] _Kr; // Token: 0x040075F4 RID: 30196 [FieldOffset(Offset = "0x40")] [Token(Token = "0x40075F4")] private uint[] _Km; // Token: 0x040075F5 RID: 30197 [FieldOffset(Offset = "0x48")] [Token(Token = "0x40075F5")] private int[] _Tr; // Token: 0x040075F6 RID: 30198 [FieldOffset(Offset = "0x50")] [Token(Token = "0x40075F6")] private uint[] _Tm; // Token: 0x040075F7 RID: 30199 [FieldOffset(Offset = "0x58")] [Token(Token = "0x40075F7")] private uint[] _workingKey; } }