Files
Jan2021-Cpp2Il-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Crypto/Engines/ChaChaEngine.cs
T
2026-04-08 23:40:05 +02:00

208 lines
5.3 KiB
C#

using System;
using System.Runtime.InteropServices;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines
{
// Token: 0x020016AE RID: 5806
[Token(Token = "0x20016AE")]
[StructLayout(3)]
public class ChaChaEngine : Salsa20Engine
{
// Token: 0x06009B76 RID: 39798 RVA: 0x00230DC0 File Offset: 0x0022EFC0
[Token(Token = "0x6009B76")]
[Address(RVA = "0x22F00D0", Offset = "0x22EEAD0", VA = "0x1822F00D0")]
public ChaChaEngine()
{
}
// Token: 0x06009B77 RID: 39799 RVA: 0x00230DD4 File Offset: 0x0022EFD4
[Token(Token = "0x6009B77")]
[Address(RVA = "0x22F0070", Offset = "0x22EEA70", VA = "0x1822F0070")]
public ChaChaEngine(int rounds)
: base(rounds)
{
}
// Token: 0x170018C4 RID: 6340
// (get) Token: 0x06009B78 RID: 39800 RVA: 0x00230DE8 File Offset: 0x0022EFE8
[Token(Token = "0x170018C4")]
public override string AlgorithmName
{
[Token(Token = "0x6009B78")]
[Address(RVA = "0x22F0130", Offset = "0x22EEB30", VA = "0x1822F0130", Slot = "11")]
get
{
int rounds = this.rounds;
return "ChaCha" + rounds;
}
}
// Token: 0x06009B79 RID: 39801 RVA: 0x00230E08 File Offset: 0x0022F008
[Token(Token = "0x6009B79")]
[Address(RVA = "0x22EF510", Offset = "0x22EDF10", VA = "0x1822EF510", Slot = "13")]
protected override void AdvanceCounter()
{
if (this.engineState.Length == 12)
{
uint[] engineState = this.engineState;
}
}
// Token: 0x06009B7A RID: 39802 RVA: 0x00230E34 File Offset: 0x0022F034
[Token(Token = "0x6009B7A")]
[Address(RVA = "0x22EFEE0", Offset = "0x22EE8E0", VA = "0x1822EFEE0", Slot = "16")]
protected override void ResetCounter()
{
uint[] engineState = this.engineState;
int num = 0;
engineState[6] = (uint)num;
engineState[6] = (uint)num;
}
// Token: 0x06009B7B RID: 39803 RVA: 0x00230E60 File Offset: 0x0022F060
[Token(Token = "0x6009B7B")]
[Address(RVA = "0x22EFF40", Offset = "0x22EE940", VA = "0x1822EFF40", Slot = "17")]
protected override void SetKey(byte[] keyBytes, byte[] ivBytes)
{
if (keyBytes != 0)
{
int length = keyBytes.Length;
uint[] engineState = this.engineState;
int num = 0;
base.PackTauOrSigma(length, engineState, num);
uint[] engineState2 = this.engineState;
int num2 = 0;
ulong num3;
Pack.LE_To_UInt32(keyBytes, num2, engineState2, 4, (int)num3);
int length2 = keyBytes.Length;
uint[] engineState3 = this.engineState;
ulong num4;
Pack.LE_To_UInt32(keyBytes, length2, engineState3, 8, (int)num4);
}
uint[] engineState4 = this.engineState;
int num5 = 0;
uint num6;
ulong num7;
Pack.LE_To_UInt32(ivBytes, num5, engineState4, (int)num6, (int)num7);
}
// Token: 0x06009B7C RID: 39804 RVA: 0x00230EE4 File Offset: 0x0022F0E4
[Token(Token = "0x6009B7C")]
[Address(RVA = "0x22EF2C0", Offset = "0x22EDCC0", VA = "0x1822EF2C0", Slot = "18")]
protected override void GenerateKeyStream(byte[] output)
{
uint[] x = this.x;
uint[] engineState = this.engineState;
ChaChaEngine.ChachaCore(this.rounds, engineState, x);
uint[] x2 = this.x;
int num = 0;
Pack.UInt32_To_LE(x2, output, num);
}
// Token: 0x06009B7D RID: 39805 RVA: 0x00230F20 File Offset: 0x0022F120
[Token(Token = "0x6009B7D")]
[Address(RVA = "0x22EF570", Offset = "0x22EDF70", VA = "0x1822EF570")]
internal static void ChachaCore(int rounds, uint[] input, uint[] x)
{
while (input.Length != 16 || rounds != 1)
{
}
uint num = input[2];
uint num2 = input[6];
uint num3 = input[5];
uint num4 = input[6];
uint num5 = input[0];
uint num6 = input[0];
uint num7 = input[2];
uint num8 = input[4];
uint num9 = input[3];
uint num10 = input[4];
uint num11 = input[3];
uint num12 = input[7];
uint num13 = input[1];
uint num14 = input[5];
uint num15 = input[7];
uint num16 = input[1];
if (rounds > 0)
{
int num17 = rounds - 1;
num17++;
num5 += num7;
num10 += num5;
num5 += num5;
num10 += num5;
num4 = num10;
num8 = num5;
num8 += num5;
num6 += num5;
num8 = num5;
num10 = num5;
num8 += num10;
num6 = num8;
num5 = num8;
num14 += num5;
num13 += num14;
num14 += num14;
num12 = num14;
num13 = num14;
num5 = num14;
num3 += num5;
num16 += num3;
num5 = num3;
num3 += num5;
num5 += num6;
num16 = num3;
num5 = num3;
num14 += num5;
num5 += num14;
num15 = num14;
num14 += num15;
num6 += num13;
num3 += num14;
num6 += num14;
num3 += num14;
num13 += num16;
num10 += num14;
num13 += num14;
num10 += num14;
num15 = num10;
num8 += num14;
num5 = num14;
num14 = num8;
num16 += num14;
num14 = num5;
num5 = num14;
num8 += num14;
num14 = num8;
num7 = num14;
}
uint num18 = input[0];
num5 += num18;
uint num19 = input[0];
num19 += num6;
uint num20 = input[1];
num20 += num13;
uint num21 = input[1];
num21 += num16;
uint num22 = input[2];
num22 += num7;
uint num23 = input[4];
num23 += num10;
uint num24 = input[4];
num24 += num8;
uint num25 = input[5];
num25 += num14;
uint num26 = input[5];
num26 += num3;
uint num27 = input[6];
num27 += num4;
uint num28 = input[7];
num28 += num12;
uint num29 = input[7];
num29 += num15;
}
}
}