using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Threading; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Prng { // Token: 0x020015F2 RID: 5618 [Token(Token = "0x20015F2")] [StructLayout(3)] public class VmpcRandomGenerator : IRandomGenerator { // Token: 0x0600961F RID: 38431 RVA: 0x0021488C File Offset: 0x00212A8C [Token(Token = "0x600961F")] [Address(RVA = "0x1E4D9B0", Offset = "0x1E4C3B0", VA = "0x181E4D9B0")] public VmpcRandomGenerator() { byte[] array = new byte[256]; RuntimeHelpers.InitializeArray(array, fieldof(.B31A9EA1A2718942996E7F94106F0FC798C174C8).FieldHandle); this.P = array; this.s = (byte)((ulong)190L); base..ctor(); } // Token: 0x06009620 RID: 38432 RVA: 0x002148CC File Offset: 0x00212ACC [Token(Token = "0x6009620")] [Address(RVA = "0x1E4D4E0", Offset = "0x1E4BEE0", VA = "0x181E4D4E0", Slot = "8")] public virtual void AddSeedMaterial(byte[] seed) { int num = 0; int length = seed.Length; if (num < length) { byte[] p = this.P; byte b = this.n; int length2 = p.Length; byte b2; byte b3; b2 += b3; byte b4 = this.s; b2 += b4; byte b5; this.s = b5; int length3 = p.Length; byte[] p2 = this.P; byte b6 = this.s; num++; } } // Token: 0x06009621 RID: 38433 RVA: 0x00214940 File Offset: 0x00212B40 [Token(Token = "0x6009621")] [Address(RVA = "0x1E4D640", Offset = "0x1E4C040", VA = "0x181E4D640", Slot = "9")] public virtual void AddSeedMaterial(long seed) { byte[] array = Pack.UInt64_To_BE((ulong)seed); ((IRandomGenerator)this).AddSeedMaterial(array); } // Token: 0x06009622 RID: 38434 RVA: 0x0021495C File Offset: 0x00212B5C [Token(Token = "0x6009622")] [Address(RVA = "0x1E4D970", Offset = "0x1E4C370", VA = "0x181E4D970", Slot = "10")] public virtual void NextBytes(byte[] bytes) { this.NextBytes(bytes); } // Token: 0x06009623 RID: 38435 RVA: 0x00214978 File Offset: 0x00212B78 [Token(Token = "0x6009623")] [Address(RVA = "0x1E4D680", Offset = "0x1E4C080", VA = "0x181E4D680", Slot = "11")] public virtual void NextBytes(byte[] bytes, int start, int len) { int num; do { num = 0; byte[] p = this.P; byte[] p2 = this.P; byte b = this.n; int length = p2.Length; byte b2 = this.s; byte b3; b3 += b2; byte b4; this.s = b4; int length2 = p2.Length; byte[] p3 = this.P; byte b5 = this.n; int length3 = p3.Length; byte b6 = this.s; byte[] p4 = this.P; byte b7 = this.s; Monitor.Exit(p); if (num != -1) { } } while (num != 0); } // Token: 0x0400631C RID: 25372 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x400631C")] private byte n; // Token: 0x0400631D RID: 25373 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x400631D")] private byte[] P; // Token: 0x0400631E RID: 25374 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x400631E")] private byte s; } }