using System; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests { // Token: 0x02001CE7 RID: 7399 [Token(Token = "0x2001CE7")] public abstract class GeneralDigest : IDigest, IMemoable { // Token: 0x0600BA72 RID: 47730 RVA: 0x002A0EBC File Offset: 0x0029F0BC [Token(Token = "0x600BA72")] [Address(RVA = "0x1B3D150", Offset = "0x1B3BF50", VA = "0x181B3D150")] internal GeneralDigest() { byte[] array = new byte[4]; this.xBuf = array; } // Token: 0x0600BA73 RID: 47731 RVA: 0x002A0EE0 File Offset: 0x0029F0E0 [Token(Token = "0x600BA73")] [Address(RVA = "0x1B3D1A0", Offset = "0x1B3BFA0", VA = "0x181B3D1A0")] 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: 0x0600BA74 RID: 47732 RVA: 0x002A0F50 File Offset: 0x0029F150 [Token(Token = "0x600BA74")] [Address(RVA = "0x1B3CF00", Offset = "0x1B3BD00", VA = "0x181B3CF00")] 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: 0x0600BA75 RID: 47733 RVA: 0x002A0FA8 File Offset: 0x0029F1A8 [Token(Token = "0x600BA75")] [Address(RVA = "0x1B3D0D0", Offset = "0x1B3BED0", VA = "0x181B3D0D0", 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: 0x0600BA76 RID: 47734 RVA: 0x002A0FF8 File Offset: 0x0029F1F8 [Token(Token = "0x600BA76")] [Address(RVA = "0x1B3CD10", Offset = "0x1B3BB10", VA = "0x181B3CD10", 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: 0x0600BA77 RID: 47735 RVA: 0x002A10A0 File Offset: 0x0029F2A0 [Token(Token = "0x600BA77")] [Address(RVA = "0x1B3CF60", Offset = "0x1B3BD60", VA = "0x181B3CF60")] 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: 0x0600BA78 RID: 47736 RVA: 0x002A1140 File Offset: 0x0029F340 [Token(Token = "0x600BA78")] [Address(RVA = "0x1B3D0A0", Offset = "0x1B3BEA0", VA = "0x181B3D0A0", 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: 0x0600BA79 RID: 47737 RVA: 0x002A117C File Offset: 0x0029F37C [Token(Token = "0x600BA79")] [Address(RVA = "0x1B31440", Offset = "0x1B30240", VA = "0x181B31440", Slot = "6")] public int GetByteLength() { return 64; } // Token: 0x0600BA7A RID: 47738 [Token(Token = "0x600BA7A")] [Address(Slot = "14")] internal abstract void ProcessWord(byte[] input, int inOff); // Token: 0x0600BA7B RID: 47739 [Token(Token = "0x600BA7B")] [Address(Slot = "15")] internal abstract void ProcessLength(long bitLength); // Token: 0x0600BA7C RID: 47740 [Token(Token = "0x600BA7C")] [Address(Slot = "16")] internal abstract void ProcessBlock(); // Token: 0x17001D0F RID: 7439 // (get) Token: 0x0600BA7D RID: 47741 [Token(Token = "0x17001D0F")] public abstract string AlgorithmName { [Token(Token = "0x600BA7D")] [Address(Slot = "17")] get; } // Token: 0x0600BA7E RID: 47742 [Token(Token = "0x600BA7E")] [Address(Slot = "18")] public abstract int GetDigestSize(); // Token: 0x0600BA7F RID: 47743 [Token(Token = "0x600BA7F")] [Address(Slot = "19")] public abstract int DoFinal(byte[] output, int outOff); // Token: 0x0600BA80 RID: 47744 [Token(Token = "0x600BA80")] [Address(Slot = "20")] public abstract IMemoable Copy(); // Token: 0x0600BA81 RID: 47745 [Token(Token = "0x600BA81")] [Address(Slot = "21")] public abstract void Reset(IMemoable t); // Token: 0x04007694 RID: 30356 [Token(Token = "0x4007694")] private const int BYTE_LENGTH = 64; // Token: 0x04007695 RID: 30357 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4007695")] private byte[] xBuf; // Token: 0x04007696 RID: 30358 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007696")] private int xBufOff; // Token: 0x04007697 RID: 30359 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4007697")] private long byteCount; } }