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

201 lines
5.5 KiB
C#

using System;
using System.Threading;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Prng
{
// Token: 0x02001BC3 RID: 7107
[Token(Token = "0x2001BC3")]
public class DigestRandomGenerator : IRandomGenerator
{
// Token: 0x0600B1C6 RID: 45510 RVA: 0x0026B418 File Offset: 0x00269618
[Token(Token = "0x600B1C6")]
[Address(RVA = "0x1804EF0", Offset = "0x1803CF0", VA = "0x181804EF0")]
public DigestRandomGenerator(IDigest digest)
{
this.digest = digest;
byte[] array = new byte[0];
this.seed = array;
this.seedCounter = (long)((ulong)1L);
byte[] array2 = new byte[array];
this.state = array2;
this.stateCounter = (long)((ulong)1L);
}
// Token: 0x0600B1C7 RID: 45511 RVA: 0x0026B468 File Offset: 0x00269668
[Token(Token = "0x600B1C7")]
[Address(RVA = "0x1804780", Offset = "0x1803580", VA = "0x181804780", Slot = "4")]
public void AddSeedMaterial(byte[] inSeed)
{
int num;
do
{
num = 0;
IDigest digest = this.digest;
int length = inSeed.Length;
byte[] array = this.seed;
IDigest digest2 = this.digest;
int length2 = array.Length;
IDigest digest3 = this.digest;
Monitor.Exit(this);
}
while (num != 0);
}
// Token: 0x0600B1C8 RID: 45512 RVA: 0x0026B4CC File Offset: 0x002696CC
[Token(Token = "0x600B1C8")]
[Address(RVA = "0x1804640", Offset = "0x1803440", VA = "0x181804640", Slot = "5")]
public void AddSeedMaterial(long rSeed)
{
int num;
do
{
num = 0;
this.DigestAddCounter(rSeed);
byte[] array = this.seed;
IDigest digest = this.digest;
int length = array.Length;
IDigest digest2 = this.digest;
Monitor.Exit(this);
}
while (num != 0);
}
// Token: 0x0600B1C9 RID: 45513 RVA: 0x0026B51C File Offset: 0x0026971C
[Token(Token = "0x600B1C9")]
[Address(RVA = "0x1804EC0", Offset = "0x1803CC0", VA = "0x181804EC0", Slot = "6")]
public void NextBytes(byte[] bytes)
{
int length = bytes.Length;
int num = 0;
this.NextBytes(bytes, num, length);
}
// Token: 0x0600B1CA RID: 45514 RVA: 0x0026B544 File Offset: 0x00269744
[Token(Token = "0x600B1CA")]
[Address(RVA = "0x1804D70", Offset = "0x1803B70", VA = "0x181804D70", Slot = "7")]
public void NextBytes(byte[] bytes, int start, int len)
{
int num;
do
{
num = 0;
this.GenerateState();
if (start < len)
{
byte[] array = this.state;
if (num == array.Length)
{
this.GenerateState();
}
num++;
}
Monitor.Exit(this);
}
while (num != 0);
}
// Token: 0x0600B1CB RID: 45515 RVA: 0x0026B5A0 File Offset: 0x002697A0
[Token(Token = "0x600B1CB")]
[Address(RVA = "0x1804910", Offset = "0x1803710", VA = "0x181804910")]
private void CycleSeed()
{
byte[] array = this.seed;
IDigest digest = this.digest;
int length = array.Length;
long num = this.seedCounter;
long num2 = num + 1L;
this.seedCounter = num2;
this.DigestAddCounter(num);
IDigest digest2 = this.digest;
}
// Token: 0x0600B1CC RID: 45516 RVA: 0x0026B5F0 File Offset: 0x002697F0
[Token(Token = "0x600B1CC")]
[Address(RVA = "0x1804B70", Offset = "0x1803970", VA = "0x181804B70")]
private void GenerateState()
{
long num = this.stateCounter;
long num2 = num + 1L;
this.stateCounter = num2;
this.DigestAddCounter(num);
byte[] array = this.state;
IDigest digest = this.digest;
int length = array.Length;
byte[] array2 = this.seed;
IDigest digest2 = this.digest;
int length2 = array2.Length;
IDigest digest3 = this.digest;
if (this.stateCounter == typeof(IDigest).TypeHandle)
{
byte[] array3 = this.seed;
IDigest digest4 = this.digest;
int length3 = array3.Length;
long num3 = this.seedCounter;
long num4 = num3 + 1L;
this.seedCounter = num4;
this.DigestAddCounter(num3);
IDigest digest5 = this.digest;
}
}
// Token: 0x0600B1CD RID: 45517 RVA: 0x0026B6A4 File Offset: 0x002698A4
[Token(Token = "0x600B1CD")]
[Address(RVA = "0x18049F0", Offset = "0x18037F0", VA = "0x1818049F0")]
private void DigestAddCounter(long seedVal)
{
byte[] array = new byte[8];
Pack.UInt64_To_LE((ulong)seedVal, array);
IDigest digest = this.digest;
int length = array.Length;
}
// Token: 0x0600B1CE RID: 45518 RVA: 0x0026B6D4 File Offset: 0x002698D4
[Token(Token = "0x600B1CE")]
[Address(RVA = "0x1804B00", Offset = "0x1803900", VA = "0x181804B00")]
private void DigestUpdate(byte[] inSeed)
{
IDigest digest = this.digest;
int length = inSeed.Length;
}
// Token: 0x0600B1CF RID: 45519 RVA: 0x0026B6F8 File Offset: 0x002698F8
[Token(Token = "0x600B1CF")]
[Address(RVA = "0x1804A90", Offset = "0x1803890", VA = "0x181804A90")]
private void DigestDoFinal(byte[] result)
{
IDigest digest = this.digest;
}
// Token: 0x0400713D RID: 28989
[Token(Token = "0x400713D")]
private const long CYCLE_COUNT = 10L;
// Token: 0x0400713E RID: 28990
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400713E")]
private long stateCounter;
// Token: 0x0400713F RID: 28991
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x400713F")]
private long seedCounter;
// Token: 0x04007140 RID: 28992
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x4007140")]
private IDigest digest;
// Token: 0x04007141 RID: 28993
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x4007141")]
private byte[] state;
// Token: 0x04007142 RID: 28994
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x4007142")]
private byte[] seed;
}
}