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; } }