using System; using System.Runtime.InteropServices; using System.Threading; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Prng { // Token: 0x020015E6 RID: 5606 [Token(Token = "0x20015E6")] [StructLayout(3)] public class DigestRandomGenerator : IRandomGenerator { // Token: 0x060095EC RID: 38380 RVA: 0x00213DAC File Offset: 0x00211FAC [Token(Token = "0x60095EC")] [Address(RVA = "0x1DD4310", Offset = "0x1DD2D10", VA = "0x181DD4310")] 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: 0x060095ED RID: 38381 RVA: 0x00213DFC File Offset: 0x00211FFC [Token(Token = "0x60095ED")] [Address(RVA = "0x1DD3B60", Offset = "0x1DD2560", VA = "0x181DD3B60", 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); if (num != -1) { } } while (num != 0); } // Token: 0x060095EE RID: 38382 RVA: 0x00213E64 File Offset: 0x00212064 [Token(Token = "0x60095EE")] [Address(RVA = "0x1DD39F0", Offset = "0x1DD23F0", VA = "0x181DD39F0", 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); if (num != -1) { } } while (num != 0); } // Token: 0x060095EF RID: 38383 RVA: 0x00213EB8 File Offset: 0x002120B8 [Token(Token = "0x60095EF")] [Address(RVA = "0x1DD42E0", Offset = "0x1DD2CE0", VA = "0x181DD42E0", Slot = "6")] public void NextBytes(byte[] bytes) { int length = bytes.Length; int num = 0; this.NextBytes(bytes, num, length); } // Token: 0x060095F0 RID: 38384 RVA: 0x00213EE0 File Offset: 0x002120E0 [Token(Token = "0x60095F0")] [Address(RVA = "0x1DD4170", Offset = "0x1DD2B70", VA = "0x181DD4170", 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); if (num != -1) { } } while (num != 0); } // Token: 0x060095F1 RID: 38385 RVA: 0x00213F40 File Offset: 0x00212140 [Token(Token = "0x60095F1")] [Address(RVA = "0x1DD3D10", Offset = "0x1DD2710", VA = "0x181DD3D10")] 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: 0x060095F2 RID: 38386 RVA: 0x00213F90 File Offset: 0x00212190 [Token(Token = "0x60095F2")] [Address(RVA = "0x1DD3F70", Offset = "0x1DD2970", VA = "0x181DD3F70")] 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: 0x060095F3 RID: 38387 RVA: 0x00214044 File Offset: 0x00212244 [Token(Token = "0x60095F3")] [Address(RVA = "0x1DD3DF0", Offset = "0x1DD27F0", VA = "0x181DD3DF0")] 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: 0x060095F4 RID: 38388 RVA: 0x00214074 File Offset: 0x00212274 [Token(Token = "0x60095F4")] [Address(RVA = "0x1DD3F00", Offset = "0x1DD2900", VA = "0x181DD3F00")] private void DigestUpdate(byte[] inSeed) { IDigest digest = this.digest; int length = inSeed.Length; } // Token: 0x060095F5 RID: 38389 RVA: 0x00214098 File Offset: 0x00212298 [Token(Token = "0x60095F5")] [Address(RVA = "0x1DD3E90", Offset = "0x1DD2890", VA = "0x181DD3E90")] private void DigestDoFinal(byte[] result) { IDigest digest = this.digest; } // Token: 0x040062FA RID: 25338 [Token(Token = "0x40062FA")] private const long CYCLE_COUNT = 10L; // Token: 0x040062FB RID: 25339 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x40062FB")] private long stateCounter; // Token: 0x040062FC RID: 25340 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x40062FC")] private long seedCounter; // Token: 0x040062FD RID: 25341 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x40062FD")] private IDigest digest; // Token: 0x040062FE RID: 25342 [global::Cpp2IlInjected.FieldOffset(Offset = "0x28")] [Token(Token = "0x40062FE")] private byte[] state; // Token: 0x040062FF RID: 25343 [global::Cpp2IlInjected.FieldOffset(Offset = "0x30")] [Token(Token = "0x40062FF")] private byte[] seed; } }