using System; using System.Threading; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Prng { // Token: 0x02001CA3 RID: 7331 [Token(Token = "0x2001CA3")] public class DigestRandomGenerator : IRandomGenerator { // Token: 0x0600B594 RID: 46484 RVA: 0x002745DC File Offset: 0x002727DC [Token(Token = "0x600B594")] [Address(RVA = "0x2354C30", Offset = "0x2353C30", VA = "0x182354C30")] 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: 0x0600B595 RID: 46485 RVA: 0x0027462C File Offset: 0x0027282C [Token(Token = "0x600B595")] [Address(RVA = "0x23544C0", Offset = "0x23534C0", VA = "0x1823544C0", 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: 0x0600B596 RID: 46486 RVA: 0x00274690 File Offset: 0x00272890 [Token(Token = "0x600B596")] [Address(RVA = "0x2354380", Offset = "0x2353380", VA = "0x182354380", 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: 0x0600B597 RID: 46487 RVA: 0x002746E0 File Offset: 0x002728E0 [Token(Token = "0x600B597")] [Address(RVA = "0x2354C00", Offset = "0x2353C00", VA = "0x182354C00", Slot = "6")] public void NextBytes(byte[] bytes) { int length = bytes.Length; int num = 0; this.NextBytes(bytes, num, length); } // Token: 0x0600B598 RID: 46488 RVA: 0x00274708 File Offset: 0x00272908 [Token(Token = "0x600B598")] [Address(RVA = "0x2354AB0", Offset = "0x2353AB0", VA = "0x182354AB0", 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: 0x0600B599 RID: 46489 RVA: 0x00274764 File Offset: 0x00272964 [Token(Token = "0x600B599")] [Address(RVA = "0x2354650", Offset = "0x2353650", VA = "0x182354650")] 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: 0x0600B59A RID: 46490 RVA: 0x002747B4 File Offset: 0x002729B4 [Token(Token = "0x600B59A")] [Address(RVA = "0x23548B0", Offset = "0x23538B0", VA = "0x1823548B0")] 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: 0x0600B59B RID: 46491 RVA: 0x00274868 File Offset: 0x00272A68 [Token(Token = "0x600B59B")] [Address(RVA = "0x2354730", Offset = "0x2353730", VA = "0x182354730")] 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: 0x0600B59C RID: 46492 RVA: 0x00274898 File Offset: 0x00272A98 [Token(Token = "0x600B59C")] [Address(RVA = "0x2354840", Offset = "0x2353840", VA = "0x182354840")] private void DigestUpdate(byte[] inSeed) { IDigest digest = this.digest; int length = inSeed.Length; } // Token: 0x0600B59D RID: 46493 RVA: 0x002748BC File Offset: 0x00272ABC [Token(Token = "0x600B59D")] [Address(RVA = "0x23547D0", Offset = "0x23537D0", VA = "0x1823547D0")] private void DigestDoFinal(byte[] result) { IDigest digest = this.digest; } // Token: 0x040072F6 RID: 29430 [Token(Token = "0x40072F6")] private const long CYCLE_COUNT = 10L; // Token: 0x040072F7 RID: 29431 [FieldOffset(Offset = "0x10")] [Token(Token = "0x40072F7")] private long stateCounter; // Token: 0x040072F8 RID: 29432 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40072F8")] private long seedCounter; // Token: 0x040072F9 RID: 29433 [FieldOffset(Offset = "0x20")] [Token(Token = "0x40072F9")] private IDigest digest; // Token: 0x040072FA RID: 29434 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40072FA")] private byte[] state; // Token: 0x040072FB RID: 29435 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40072FB")] private byte[] seed; } }