Files
2026-04-10 22:50:51 +02:00

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