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; } }