using System; using System.Runtime.InteropServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests { // Token: 0x0200170A RID: 5898 [Token(Token = "0x200170A")] [StructLayout(3)] public abstract class GeneralDigest : IDigest, IMemoable { // Token: 0x06009E98 RID: 40600 RVA: 0x00248DA8 File Offset: 0x00246FA8 [Token(Token = "0x6009E98")] [Address(RVA = "0x21803A0", Offset = "0x217EDA0", VA = "0x1821803A0")] internal GeneralDigest() { byte[] array = new byte[4]; this.xBuf = array; } // Token: 0x06009E99 RID: 40601 RVA: 0x00248DCC File Offset: 0x00246FCC [Token(Token = "0x6009E99")] [Address(RVA = "0x21803F0", Offset = "0x217EDF0", VA = "0x1821803F0")] internal GeneralDigest(GeneralDigest t) { byte[] array = new byte[t.xBuf.Length]; this.xBuf = array; byte[] array2 = t.xBuf; int length = array2.Length; int num = 0; int num2 = 0; Array.Copy(array2, num2, array, num, length); int num3 = t.xBufOff; this.xBufOff = num3; long num4 = t.byteCount; this.byteCount = num4; } // Token: 0x06009E9A RID: 40602 RVA: 0x00248E3C File Offset: 0x0024703C [Token(Token = "0x6009E9A")] [Address(RVA = "0x2180150", Offset = "0x217EB50", VA = "0x182180150")] protected void CopyIn(GeneralDigest t) { byte[] array = t.xBuf; int length = array.Length; int num = 0; byte[] array2 = this.xBuf; int num2 = 0; Array.Copy(array, num2, array2, num, length); int num3 = t.xBufOff; this.xBufOff = num3; long num4 = t.byteCount; this.byteCount = num4; } // Token: 0x06009E9B RID: 40603 RVA: 0x00248E94 File Offset: 0x00247094 [Token(Token = "0x6009E9B")] [Address(RVA = "0x2180320", Offset = "0x217ED20", VA = "0x182180320", Slot = "7")] public void Update(byte input) { byte[] array = this.xBuf; int num = this.xBufOff + 1; this.xBufOff = num; int length = this.xBuf.Length; if (this.xBufOff == length) { this.Reset(); this.xBufOff = (int)((ulong)0L); } } // Token: 0x06009E9C RID: 40604 RVA: 0x00248EE4 File Offset: 0x002470E4 [Token(Token = "0x6009E9C")] [Address(RVA = "0x217FF60", Offset = "0x217E960", VA = "0x18217FF60", Slot = "8")] public void BlockUpdate(byte[] input, int inOff, int length) { int num = Math.Max(0, length); int num2 = this.xBufOff; int num3 = 0; if (num2 != 0 && num > 0) { byte[] array = this.xBuf; int num4 = num2 + 1; this.xBufOff = num4; num3++; num3 += inOff; int num5 = this.xBufOff; if (num5 == 4) { this.Reset(); this.xBufOff = (int)((ulong)0L); throw new NullReferenceException(); } } num -= num3; num += num3; if (num3 < num) { this.Reset(); num3 += 4; } if (num3 < num) { int num6 = this.xBufOff; byte[] array2 = this.xBuf; int num7 = num6 + 1; this.xBufOff = num7; num3++; num3 += inOff; } } // Token: 0x06009E9D RID: 40605 RVA: 0x00248F8C File Offset: 0x0024718C [Token(Token = "0x6009E9D")] [Address(RVA = "0x21801B0", Offset = "0x217EBB0", VA = "0x1821801B0")] public void Finish() { byte[] array = this.xBuf; int num = this.xBufOff + 1; this.xBufOff = num; byte[] array2 = this.xBuf; int num2 = this.xBufOff; int num3 = 0; if (num2 == array2.Length) { this.Reset(); this.xBufOff = num3; } if (num2 != 0) { byte[] array3 = this.xBuf; int num4 = num2 + 1; this.xBufOff = num4; byte[] array4 = this.xBuf; if (this.xBufOff == array4.Length) { this.Reset(); this.xBufOff = num3; } while (num3 != 0) { } } this.ProcessBlock(); } // Token: 0x06009E9E RID: 40606 RVA: 0x0024902C File Offset: 0x0024722C [Token(Token = "0x6009E9E")] [Address(RVA = "0x21802F0", Offset = "0x217ECF0", VA = "0x1821802F0", Slot = "13")] public virtual void Reset() { int num = 0; this.byteCount = (long)num; this.xBufOff = num; byte[] array = this.xBuf; int length = array.Length; int num2 = 0; Array.Clear(array, num2, length); } // Token: 0x06009E9F RID: 40607 RVA: 0x00249068 File Offset: 0x00247268 [Token(Token = "0x6009E9F")] [Address(RVA = "0x2062AA0", Offset = "0x20614A0", VA = "0x182062AA0", Slot = "6")] public int GetByteLength() { return 64; } // Token: 0x06009EA0 RID: 40608 [Token(Token = "0x6009EA0")] [Address(Slot = "14")] internal abstract void ProcessWord(byte[] input, int inOff); // Token: 0x06009EA1 RID: 40609 [Token(Token = "0x6009EA1")] [Address(Slot = "15")] internal abstract void ProcessLength(long bitLength); // Token: 0x06009EA2 RID: 40610 [Token(Token = "0x6009EA2")] [Address(Slot = "16")] internal abstract void ProcessBlock(); // Token: 0x1700190E RID: 6414 // (get) Token: 0x06009EA3 RID: 40611 [Token(Token = "0x1700190E")] public abstract string AlgorithmName { [Token(Token = "0x6009EA3")] [Address(Slot = "17")] get; } // Token: 0x06009EA4 RID: 40612 [Token(Token = "0x6009EA4")] [Address(Slot = "18")] public abstract int GetDigestSize(); // Token: 0x06009EA5 RID: 40613 [Token(Token = "0x6009EA5")] [Address(Slot = "19")] public abstract int DoFinal(byte[] output, int outOff); // Token: 0x06009EA6 RID: 40614 [Token(Token = "0x6009EA6")] [Address(Slot = "20")] public abstract IMemoable Copy(); // Token: 0x06009EA7 RID: 40615 [Token(Token = "0x6009EA7")] [Address(Slot = "21")] public abstract void Reset(IMemoable t); // Token: 0x04006851 RID: 26705 [Token(Token = "0x4006851")] private const int BYTE_LENGTH = 64; // Token: 0x04006852 RID: 26706 [global::Cpp2IlInjected.FieldOffset(Offset = "0x10")] [Token(Token = "0x4006852")] private byte[] xBuf; // Token: 0x04006853 RID: 26707 [global::Cpp2IlInjected.FieldOffset(Offset = "0x18")] [Token(Token = "0x4006853")] private int xBufOff; // Token: 0x04006854 RID: 26708 [global::Cpp2IlInjected.FieldOffset(Offset = "0x20")] [Token(Token = "0x4006854")] private long byteCount; } }