using System; using System.Runtime.CompilerServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests { // Token: 0x02001DC9 RID: 7625 [Token(Token = "0x2001DC9")] public abstract class LongDigest : IDigest, IMemoable { // Token: 0x0600BE68 RID: 48744 RVA: 0x002AA568 File Offset: 0x002A8768 [Token(Token = "0x600BE68")] [Address(RVA = "0x25ACB20", Offset = "0x25ABB20", VA = "0x1825ACB20")] internal LongDigest() { ulong[] array = new ulong[80]; this.W = array; base..ctor(); byte[] array2 = new byte[8]; this.xBuf = array2; string algorithmName = this.AlgorithmName; } // Token: 0x0600BE69 RID: 48745 RVA: 0x002AA5AC File Offset: 0x002A87AC [Token(Token = "0x600BE69")] [Address(RVA = "0x25AC9E0", Offset = "0x25AB9E0", VA = "0x1825AC9E0")] internal LongDigest(LongDigest t) { ulong[] array = new ulong[80]; this.W = array; base..ctor(); byte[] array2 = new byte[t.xBuf.Length]; this.xBuf = array2; byte[] array3 = t.xBuf; int length = array3.Length; int num = 0; int num2 = 0; Array.Copy(array3, num2, array2, num, length); int num3 = t.xBufOff; this.xBufOff = num3; long num4 = t.byteCount1; this.byteCount1 = num4; long num5 = t.byteCount2; this.byteCount2 = num5; ulong h = t.H1; this.H1 = h; ulong h2 = t.H2; this.H2 = h2; ulong h3 = t.H3; this.H3 = h3; ulong h4 = t.H4; this.H4 = h4; ulong h5 = t.H5; this.H5 = h5; ulong h6 = t.H6; this.H6 = h6; ulong h7 = t.H7; this.H7 = h7; ulong h8 = t.H8; this.H8 = h8; ulong[] w = t.W; int length2 = w.Length; int num6 = 0; ulong[] w2 = this.W; int num7 = 0; Array.Copy(w, num7, w2, num6, length2); int num8 = t.wOff; this.wOff = num8; } // Token: 0x0600BE6A RID: 48746 RVA: 0x002AA708 File Offset: 0x002A8908 [Token(Token = "0x600BE6A")] [Address(RVA = "0x25AB790", Offset = "0x25AA790", VA = "0x1825AB790")] protected void CopyIn(LongDigest 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.byteCount1; this.byteCount1 = num4; long num5 = t.byteCount2; this.byteCount2 = num5; ulong h = t.H1; this.H1 = h; ulong h2 = t.H2; this.H2 = h2; ulong h3 = t.H3; this.H3 = h3; ulong h4 = t.H4; this.H4 = h4; ulong h5 = t.H5; this.H5 = h5; ulong h6 = t.H6; this.H6 = h6; ulong h7 = t.H7; this.H7 = h7; ulong h8 = t.H8; this.H8 = h8; ulong[] w = t.W; int length2 = w.Length; int num6 = 0; ulong[] w2 = this.W; int num7 = 0; Array.Copy(w, num7, w2, num6, length2); int num8 = t.wOff; this.wOff = num8; } // Token: 0x0600BE6B RID: 48747 RVA: 0x002AA830 File Offset: 0x002A8A30 [Token(Token = "0x600BE6B")] [Address(RVA = "0x25AC910", Offset = "0x25AB910", VA = "0x1825AC910", Slot = "7")] public void Update(byte input) { byte[] array = this.xBuf; int num = this.xBufOff + 1; this.xBufOff = num; byte[] array2 = this.xBuf; int length = array2.Length; if (this.xBufOff == length) { int num2 = 0; this.ProcessWord(array2, num2); this.xBufOff = (int)((ulong)0L); } } // Token: 0x0600BE6C RID: 48748 RVA: 0x002AA888 File Offset: 0x002A8A88 [Token(Token = "0x600BE6C")] [Address(RVA = "0x25AB4C0", Offset = "0x25AA4C0", VA = "0x1825AB4C0", Slot = "8")] public void BlockUpdate(byte[] input, int inOff, int length) { int num = 0; int num2 = this.xBufOff; if (num2 != 0 && length > 0) { byte[] array = this.xBuf; int num3 = num2 + 1; this.xBufOff = num3; byte[] array2 = this.xBuf; int num4 = this.xBufOff; if (num4 == array2.Length) { ulong[] w = this.W; int num5 = this.wOff; int num6 = 0; ulong num7 = Pack.BE_To_UInt64(array2, num6); w[0] = num7; int num8 = this.wOff; num8++; this.wOff = num8; if (num8 == 16) { this.ProcessBlock(); } this.xBufOff = num; } while (num4 != 0) { } } byte[] array3 = this.xBuf; if (length > array3.Length) { ulong[] w2 = this.W; int num9 = this.wOff; ulong num10 = Pack.BE_To_UInt64(input, inOff); w2[0] = num10; int num11 = this.wOff; num11++; this.wOff = num11; if (num11 == 16) { this.ProcessBlock(); } int length2 = this.xBuf.Length; } if (length > 0) { int num12 = this.xBufOff; byte[] array4 = this.xBuf; int num13 = num12 + 1; this.xBufOff = num13; byte[] array5 = this.xBuf; int length3 = array5.Length; if (this.xBufOff == length3) { ulong[] w3 = this.W; int num14 = this.wOff; int num15 = 0; ulong num16 = Pack.BE_To_UInt64(array5, num15); w3[0] = num16; int num17 = this.wOff; num17++; this.wOff = num17; if (num17 == 16) { this.ProcessBlock(); } this.xBufOff = num; } } } // Token: 0x0600BE6D RID: 48749 RVA: 0x002AAA34 File Offset: 0x002A8C34 [Token(Token = "0x600BE6D")] [Address(RVA = "0x25AB870", Offset = "0x25AA870", VA = "0x1825AB870")] public void Finish() { long num = this.byteCount1; long num2 = this.byteCount2; ulong num3; if (num > (long)num3) { num2 += num; this.byteCount2 = num2; this.byteCount1 = num; } int num4 = this.xBufOff; byte[] array = this.xBuf; int num5 = num4 + 1; this.xBufOff = num5; byte[] array2 = this.xBuf; int num6 = this.xBufOff; int num7 = 0; if (num6 == array2.Length) { int num8 = 0; this.ProcessWord(array2, num8); this.xBufOff = num7; } if (num7 != 0) { byte[] array3 = this.xBuf; this.xBufOff = 1; byte[] array4 = this.xBuf; if (this.xBufOff == array4.Length) { ulong[] w = this.W; int num9 = this.wOff; int num10 = 0; ulong num11 = Pack.BE_To_UInt64(array4, num10); w[0] = num11; int num12 = this.wOff; num12++; this.wOff = num12; if (num12 == 16) { this.ProcessBlock(); } this.xBufOff = num7; } while (num7 != 0) { } } if (this.wOff > 14) { this.ProcessBlock(); } this.W[14] = (ulong)num2; ulong[] w2 = this.W; this.ProcessBlock(); } // Token: 0x0600BE6E RID: 48750 RVA: 0x002AAB6C File Offset: 0x002A8D6C [Token(Token = "0x600BE6E")] [Address(RVA = "0x25AC7A0", Offset = "0x25AB7A0", VA = "0x1825AC7A0", Slot = "13")] public virtual void Reset() { byte[] array = this.xBuf; int num = 0; this.byteCount1 = (long)num; this.byteCount2 = (long)num; this.xBufOff = num; if (num < array.Length) { num++; byte[] array2 = this.xBuf; } this.wOff = num; ulong[] w = this.W; int length = w.Length; int num2 = 0; Array.Clear(w, num2, length); } // Token: 0x0600BE6F RID: 48751 RVA: 0x002AABD4 File Offset: 0x002A8DD4 [Token(Token = "0x600BE6F")] [Address(RVA = "0x25AC710", Offset = "0x25AB710", VA = "0x1825AC710")] internal void ProcessWord(byte[] input, int inOff) { ulong[] w = this.W; int num = this.wOff; ulong num2 = Pack.BE_To_UInt64(input, inOff); w[0] = num2; int num3 = this.wOff; num3++; this.wOff = num3; if (num3 == 16) { this.ProcessBlock(); } } // Token: 0x0600BE70 RID: 48752 RVA: 0x002AAC24 File Offset: 0x002A8E24 [Token(Token = "0x600BE70")] [Address(RVA = "0x25AB490", Offset = "0x25AA490", VA = "0x1825AB490")] private void AdjustByteCounts() { long num = this.byteCount1; ulong num2; if (num > (long)num2) { this.byteCount1 = num; } } // Token: 0x0600BE71 RID: 48753 RVA: 0x002AAC44 File Offset: 0x002A8E44 [Token(Token = "0x600BE71")] [Address(RVA = "0x25AC680", Offset = "0x25AB680", VA = "0x1825AC680")] internal void ProcessLength(long lowW, long hiW) { if (this.wOff > 14) { this.ProcessBlock(); } this.W[14] = (ulong)hiW; this.W[15] = (ulong)lowW; } // Token: 0x0600BE72 RID: 48754 RVA: 0x002AAC84 File Offset: 0x002A8E84 [Token(Token = "0x600BE72")] [Address(RVA = "0x25ABA70", Offset = "0x25AAA70", VA = "0x1825ABA70")] internal void ProcessBlock() { long num = this.byteCount1; ulong num2; if (num > (long)num2) { this.byteCount1 = num; } ulong[] w = this.W; ulong[] w2 = this.W; int length = w2.Length; ulong num3 = w2[(int)num2]; uint num4; num4 += (uint)1; num3 += num3; w[0] = num3; while (num4 <= (uint)79) { } ulong num5 = this.H4; int num6 = 0; ulong num7 = this.H3; ulong num8 = this.H5; ulong num9 = this.H1; ulong num10 = this.H2; ulong num11 = this.H6; ulong num12 = this.H7; ulong num13 = this.H8; num8 = num3; int length2 = LongDigest.K.Length; int length3 = this.W.Length; num3 = num8; num8 = num11; num3 += num8; num13 += num3; num3 = num9; num13 = num10; num13 += num3; num3 = num5; num13 = num5; num3 += num5; num8 = num13; num12 += num3; num3 = num13; num13 += num12; num13 += num3; num3 = num7; num13 = num7; num3 += num7; num11 += num3; num10 += num11; num3 = num13; num5 = num13; num7 = num13; num11 += num7; num11 += num3; num6 += 3; num3 = num10; num13 = num10; num7 = num10; num3 += num7; num8 += num3; num9 += num8; num3 = num11; num8 = num13; num8 += num3; num3 = num9; num9 = num10; num7 = num9; num3 += num7; num5 += num3; num3 = num8; num8 = num11; num8 += num3; num6 += 5; num3 = num13; num8 = num13; num3 += num13; num13 = num8; num7 += num3; num3 = num8; num8 += num7; num8 += num3; num3 = num13; num8 = num13; num3 += num8; num10 += num3; num11 += num10; num3 = num8; num10 += num8; num10 += num3; num6 += 7; num3 = num11; num6 += 8; num8 = num10; num3 += num8; num8 = num10; num9 += num3; num8 += num9; num3 = num10; num8 = num10; num9 += num8; num6++; num9 += num3; int num14 = 0; ulong[] w3 = this.W; this.H5 = num8; this.H6 = num8; this.H7 = num8; Array.Clear(w3, num14, 16); } // Token: 0x0600BE73 RID: 48755 RVA: 0x002AAFAC File Offset: 0x002A91AC [Token(Token = "0x600BE73")] [Address(RVA = "0x1031B90", Offset = "0x1030B90", VA = "0x181031B90")] private static ulong Ch(ulong x, ulong y, ulong z) { return x; } // Token: 0x0600BE74 RID: 48756 RVA: 0x002AAFBC File Offset: 0x002A91BC [Token(Token = "0x600BE74")] [Address(RVA = "0x1031DD0", Offset = "0x1030DD0", VA = "0x181031DD0")] private static ulong Maj(ulong x, ulong y, ulong z) { return y; } // Token: 0x0600BE75 RID: 48757 RVA: 0x002AAFCC File Offset: 0x002A91CC [Token(Token = "0x600BE75")] [Address(RVA = "0x25AC890", Offset = "0x25AB890", VA = "0x1825AC890")] private static ulong Sum0(ulong x) { return x; } // Token: 0x0600BE76 RID: 48758 RVA: 0x002AAFDC File Offset: 0x002A91DC [Token(Token = "0x600BE76")] [Address(RVA = "0x25AC8D0", Offset = "0x25AB8D0", VA = "0x1825AC8D0")] private static ulong Sum1(ulong x) { return x; } // Token: 0x0600BE77 RID: 48759 RVA: 0x002AAFEC File Offset: 0x002A91EC [Token(Token = "0x600BE77")] [Address(RVA = "0x25AC830", Offset = "0x25AB830", VA = "0x1825AC830")] private static ulong Sigma0(ulong x) { return x; } // Token: 0x0600BE78 RID: 48760 RVA: 0x002AAFFC File Offset: 0x002A91FC [Token(Token = "0x600BE78")] [Address(RVA = "0x25AC860", Offset = "0x25AB860", VA = "0x1825AC860")] private static ulong Sigma1(ulong x) { return x; } // Token: 0x0600BE79 RID: 48761 RVA: 0x002AB00C File Offset: 0x002A920C [Token(Token = "0x600BE79")] [Address(RVA = "0x40F000", Offset = "0x40E000", VA = "0x18040F000", Slot = "6")] public int GetByteLength() { return this.MyByteLength; } // Token: 0x17001DAE RID: 7598 // (get) Token: 0x0600BE7A RID: 48762 [Token(Token = "0x17001DAE")] public abstract string AlgorithmName { [Token(Token = "0x600BE7A")] [Address(Slot = "14")] get; } // Token: 0x0600BE7B RID: 48763 [Token(Token = "0x600BE7B")] [Address(Slot = "15")] public abstract int GetDigestSize(); // Token: 0x0600BE7C RID: 48764 [Token(Token = "0x600BE7C")] [Address(Slot = "16")] public abstract int DoFinal(byte[] output, int outOff); // Token: 0x0600BE7D RID: 48765 [Token(Token = "0x600BE7D")] [Address(Slot = "17")] public abstract IMemoable Copy(); // Token: 0x0600BE7E RID: 48766 [Token(Token = "0x600BE7E")] [Address(Slot = "18")] public abstract void Reset(IMemoable t); // Token: 0x0600BE7F RID: 48767 RVA: 0x002AB020 File Offset: 0x002A9220 // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x600BE7F")] [Address(RVA = "0x25AC980", Offset = "0x25AB980", VA = "0x1825AC980")] static LongDigest() { ulong[] array = new ulong[80]; RuntimeHelpers.InitializeArray(array, fieldof(.90A0542282A011472F94E97CEAE59F8B3B1A3291).FieldHandle); LongDigest.K = array; } // Token: 0x04007858 RID: 30808 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4007858")] private int MyByteLength = (int)((ulong)128L); // Token: 0x04007859 RID: 30809 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007859")] private byte[] xBuf; // Token: 0x0400785A RID: 30810 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400785A")] private int xBufOff; // Token: 0x0400785B RID: 30811 [FieldOffset(Offset = "0x28")] [Token(Token = "0x400785B")] private long byteCount1; // Token: 0x0400785C RID: 30812 [FieldOffset(Offset = "0x30")] [Token(Token = "0x400785C")] private long byteCount2; // Token: 0x0400785D RID: 30813 [FieldOffset(Offset = "0x38")] [Token(Token = "0x400785D")] internal ulong H1; // Token: 0x0400785E RID: 30814 [FieldOffset(Offset = "0x40")] [Token(Token = "0x400785E")] internal ulong H2; // Token: 0x0400785F RID: 30815 [FieldOffset(Offset = "0x48")] [Token(Token = "0x400785F")] internal ulong H3; // Token: 0x04007860 RID: 30816 [FieldOffset(Offset = "0x50")] [Token(Token = "0x4007860")] internal ulong H4; // Token: 0x04007861 RID: 30817 [FieldOffset(Offset = "0x58")] [Token(Token = "0x4007861")] internal ulong H5; // Token: 0x04007862 RID: 30818 [FieldOffset(Offset = "0x60")] [Token(Token = "0x4007862")] internal ulong H6; // Token: 0x04007863 RID: 30819 [FieldOffset(Offset = "0x68")] [Token(Token = "0x4007863")] internal ulong H7; // Token: 0x04007864 RID: 30820 [FieldOffset(Offset = "0x70")] [Token(Token = "0x4007864")] internal ulong H8; // Token: 0x04007865 RID: 30821 [FieldOffset(Offset = "0x78")] [Token(Token = "0x4007865")] private ulong[] W; // Token: 0x04007866 RID: 30822 [FieldOffset(Offset = "0x80")] [Token(Token = "0x4007866")] private int wOff; // Token: 0x04007867 RID: 30823 [Token(Token = "0x4007867")] internal static readonly ulong[] K; } }