379 lines
11 KiB
C#
379 lines
11 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
|
|
{
|
|
// Token: 0x020016AC RID: 5804
|
|
[Token(Token = "0x20016AC")]
|
|
[StructLayout(3)]
|
|
public sealed class Cast6Engine : Cast5Engine
|
|
{
|
|
// Token: 0x06009B66 RID: 39782 RVA: 0x002303AC File Offset: 0x0022E5AC
|
|
[Token(Token = "0x6009B66")]
|
|
[Address(RVA = "0x22EF0C0", Offset = "0x22EDAC0", VA = "0x1822EF0C0")]
|
|
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: 0x170018C1 RID: 6337
|
|
// (get) Token: 0x06009B67 RID: 39783 RVA: 0x00230444 File Offset: 0x0022E644
|
|
[Token(Token = "0x170018C1")]
|
|
public override string AlgorithmName
|
|
{
|
|
[Token(Token = "0x6009B67")]
|
|
[Address(RVA = "0x22EF200", Offset = "0x22EDC00", VA = "0x1822EF200", Slot = "11")]
|
|
get
|
|
{
|
|
return "CAST6";
|
|
}
|
|
}
|
|
|
|
// Token: 0x06009B68 RID: 39784 RVA: 0x0000220F File Offset: 0x0000040F
|
|
[Token(Token = "0x6009B68")]
|
|
[Address(RVA = "0x3C9F60", Offset = "0x3C8960", VA = "0x1803C9F60", Slot = "14")]
|
|
public override void Reset()
|
|
{
|
|
throw new AnalysisFailedException("CPP2IL failed to recover any usable IL for this method.");
|
|
}
|
|
|
|
// Token: 0x06009B69 RID: 39785 RVA: 0x00230458 File Offset: 0x0022E658
|
|
[Token(Token = "0x6009B69")]
|
|
[Address(RVA = "0x11B1BB0", Offset = "0x11B05B0", VA = "0x1811B1BB0", Slot = "15")]
|
|
public override int GetBlockSize()
|
|
{
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x06009B6A RID: 39786 RVA: 0x00230468 File Offset: 0x0022E668
|
|
[Token(Token = "0x6009B6A")]
|
|
[Address(RVA = "0x22EE0B0", Offset = "0x22ECAB0", VA = "0x1822EE0B0", 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++;
|
|
workingKey[0] = array;
|
|
uint[] workingKey2 = this._workingKey;
|
|
int length = workingKey2.Length;
|
|
uint[] tm = this._Tm;
|
|
uint num4 = workingKey2[3];
|
|
uint num5 = tm[num];
|
|
int num6 = this._Tr[num];
|
|
uint num7 = Cast5Engine.F1(num4, num5, num6);
|
|
workingKey2[3] = num7;
|
|
uint[] workingKey3 = this._workingKey;
|
|
int length2 = workingKey3.Length;
|
|
uint[] tm2 = this._Tm;
|
|
int[] tr = this._Tr;
|
|
uint num9;
|
|
int num10;
|
|
uint num8 = Cast5Engine.F2(workingKey3[3], num9, num10);
|
|
workingKey3[2] = num8;
|
|
uint[] workingKey4 = this._workingKey;
|
|
int length3 = workingKey4.Length;
|
|
uint[] tm3 = this._Tm;
|
|
int[] tr2 = this._Tr;
|
|
uint num12;
|
|
int num13;
|
|
uint num11 = Cast5Engine.F3(workingKey4[2], num12, num13);
|
|
workingKey4[2] = num11;
|
|
uint[] workingKey5 = this._workingKey;
|
|
int length4 = workingKey5.Length;
|
|
uint[] tm4 = this._Tm;
|
|
int[] tr3 = this._Tr;
|
|
uint num15;
|
|
int num16;
|
|
uint num14 = Cast5Engine.F1(workingKey5[2], num15, num16);
|
|
workingKey5[1] = num14;
|
|
uint[] workingKey6 = this._workingKey;
|
|
int length5 = workingKey6.Length;
|
|
uint[] tm5 = this._Tm;
|
|
int[] tr4 = this._Tr;
|
|
uint num18;
|
|
int num19;
|
|
uint num17 = Cast5Engine.F2(workingKey6[1], num18, num19);
|
|
workingKey6[1] = num17;
|
|
uint[] workingKey7 = this._workingKey;
|
|
int length6 = workingKey7.Length;
|
|
uint[] tm6 = this._Tm;
|
|
int[] tr5 = this._Tr;
|
|
uint num21;
|
|
int num22;
|
|
uint num20 = Cast5Engine.F3(workingKey7[1], num21, num22);
|
|
workingKey7[0] = num20;
|
|
uint[] workingKey8 = this._workingKey;
|
|
int length7 = workingKey8.Length;
|
|
uint[] tm7 = this._Tm;
|
|
int[] tr6 = this._Tr;
|
|
uint num24;
|
|
int num25;
|
|
uint num23 = Cast5Engine.F1(workingKey8[0], num24, num25);
|
|
workingKey8[0] = num23;
|
|
uint[] workingKey9 = this._workingKey;
|
|
int length8 = workingKey9.Length;
|
|
uint[] tm8 = this._Tm;
|
|
int[] tr7 = this._Tr;
|
|
uint num27;
|
|
int num28;
|
|
uint num26 = Cast5Engine.F2(workingKey9[0], num27, num28);
|
|
workingKey9[3] = num26;
|
|
uint[] workingKey10 = this._workingKey;
|
|
int length9 = workingKey10.Length;
|
|
uint[] tm9 = this._Tm;
|
|
int[] tr8 = this._Tr;
|
|
uint num29 = Cast5Engine.F1(workingKey10[3], (uint)num, 8);
|
|
workingKey10[3] = num29;
|
|
uint[] workingKey11 = this._workingKey;
|
|
int length10 = workingKey11.Length;
|
|
uint[] tm10 = this._Tm;
|
|
int[] tr9 = this._Tr;
|
|
uint num31;
|
|
int num32;
|
|
uint num30 = Cast5Engine.F2(workingKey11[3], num31, num32);
|
|
workingKey11[2] = num30;
|
|
uint[] workingKey12 = this._workingKey;
|
|
int length11 = workingKey12.Length;
|
|
uint[] tm11 = this._Tm;
|
|
int[] tr10 = this._Tr;
|
|
uint num34;
|
|
int num35;
|
|
uint num33 = Cast5Engine.F3(workingKey12[2], num34, num35);
|
|
workingKey12[2] = num33;
|
|
uint[] workingKey13 = this._workingKey;
|
|
int length12 = workingKey13.Length;
|
|
uint[] tm12 = this._Tm;
|
|
int[] tr11 = this._Tr;
|
|
uint num37;
|
|
int num38;
|
|
uint num36 = Cast5Engine.F1(workingKey13[2], num37, num38);
|
|
workingKey13[1] = num36;
|
|
uint[] workingKey14 = this._workingKey;
|
|
int length13 = workingKey14.Length;
|
|
uint[] tm13 = this._Tm;
|
|
int[] tr12 = this._Tr;
|
|
uint num40;
|
|
int num41;
|
|
uint num39 = Cast5Engine.F2(workingKey14[1], num40, num41);
|
|
workingKey14[1] = num39;
|
|
uint[] workingKey15 = this._workingKey;
|
|
int length14 = workingKey15.Length;
|
|
uint[] tm14 = this._Tm;
|
|
int[] tr13 = this._Tr;
|
|
uint num43;
|
|
int num44;
|
|
uint num42 = Cast5Engine.F3(workingKey15[1], num43, num44);
|
|
workingKey15[0] = num42;
|
|
uint[] workingKey16 = this._workingKey;
|
|
int length15 = workingKey16.Length;
|
|
uint[] tm15 = this._Tm;
|
|
int[] tr14 = this._Tr;
|
|
uint num46;
|
|
int num47;
|
|
uint num45 = Cast5Engine.F1(workingKey16[0], num46, num47);
|
|
workingKey16[0] = num45;
|
|
uint[] workingKey17 = this._workingKey;
|
|
int length16 = workingKey17.Length;
|
|
uint[] tm16 = this._Tm;
|
|
num += 15;
|
|
int num48 = this._Tr[num];
|
|
uint num49 = workingKey17[0];
|
|
uint num50 = tm16[num];
|
|
uint num51 = Cast5Engine.F2(num49, num50, num48);
|
|
workingKey17[3] = num51;
|
|
uint[] workingKey18 = this._workingKey;
|
|
int[] kr = this._Kr;
|
|
uint num52 = workingKey18[0];
|
|
num.m_value = (int)num52;
|
|
uint[] workingKey19 = this._workingKey;
|
|
int[] kr2 = this._Kr;
|
|
uint num53 = workingKey19[1];
|
|
kr2[0] = (int)num53;
|
|
uint[] workingKey20 = this._workingKey;
|
|
int[] kr3 = this._Kr;
|
|
uint num54 = workingKey20[2];
|
|
kr3[0] = (int)num54;
|
|
uint[] workingKey21 = this._workingKey;
|
|
int[] kr4 = this._Kr;
|
|
uint num55 = workingKey21[3];
|
|
kr4[0] = (int)num55;
|
|
uint[] workingKey22 = this._workingKey;
|
|
uint[] km = this._Km;
|
|
uint num56 = workingKey22[3];
|
|
num.m_value = (int)num56;
|
|
uint[] workingKey23 = this._workingKey;
|
|
uint[] km2 = this._Km;
|
|
uint num57 = workingKey23[2];
|
|
km2[0] = num57;
|
|
uint[] workingKey24 = this._workingKey;
|
|
uint[] km3 = this._Km;
|
|
uint num58 = workingKey24[1];
|
|
km3[0] = num58;
|
|
uint[] workingKey25 = this._workingKey;
|
|
uint[] km4 = this._Km;
|
|
uint num59 = workingKey25[0];
|
|
num++;
|
|
km4[0] = num59;
|
|
}
|
|
|
|
// Token: 0x06009B6B RID: 39787 RVA: 0x00230A00 File Offset: 0x0022EC00
|
|
[Token(Token = "0x6009B6B")]
|
|
[Address(RVA = "0x22EDF00", Offset = "0x22EC900", VA = "0x1822EDF00", Slot = "17")]
|
|
internal override int EncryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
|
|
{
|
|
uint[] array = new uint[4];
|
|
uint num = array[0];
|
|
uint num2 = array[0];
|
|
uint num3 = array[1];
|
|
uint num4 = array[1];
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x06009B6C RID: 39788 RVA: 0x00230A40 File Offset: 0x0022EC40
|
|
[Token(Token = "0x6009B6C")]
|
|
[Address(RVA = "0x22EDD50", Offset = "0x22EC750", VA = "0x1822EDD50", Slot = "18")]
|
|
internal override int DecryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
|
|
{
|
|
uint[] array = new uint[4];
|
|
uint num = array[0];
|
|
uint num2 = array[0];
|
|
uint num3 = array[1];
|
|
uint num4 = array[1];
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x06009B6D RID: 39789 RVA: 0x00230A80 File Offset: 0x0022EC80
|
|
[Token(Token = "0x6009B6D")]
|
|
[Address(RVA = "0x22ED8C0", Offset = "0x22EC2C0", VA = "0x1822ED8C0")]
|
|
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: 0x06009B6E RID: 39790 RVA: 0x00230B80 File Offset: 0x0022ED80
|
|
[Token(Token = "0x6009B6E")]
|
|
[Address(RVA = "0x22ED430", Offset = "0x22EBE30", VA = "0x1822ED430")]
|
|
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: 0x040065F5 RID: 26101
|
|
[Token(Token = "0x40065F5")]
|
|
private const int ROUNDS = 12;
|
|
|
|
// Token: 0x040065F6 RID: 26102
|
|
[Token(Token = "0x40065F6")]
|
|
private const int BLOCK_SIZE = 16;
|
|
|
|
// Token: 0x040065F7 RID: 26103
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x40065F7")]
|
|
private int[] _Kr;
|
|
|
|
// Token: 0x040065F8 RID: 26104
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x40065F8")]
|
|
private uint[] _Km;
|
|
|
|
// Token: 0x040065F9 RID: 26105
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x40065F9")]
|
|
private int[] _Tr;
|
|
|
|
// Token: 0x040065FA RID: 26106
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x40065FA")]
|
|
private uint[] _Tm;
|
|
|
|
// Token: 0x040065FB RID: 26107
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x40065FB")]
|
|
private uint[] _workingKey;
|
|
}
|
|
}
|