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: 0x02001CE9 RID: 7401 [Token(Token = "0x2001CE9")] public abstract class LongDigest : IDigest, IMemoable { // Token: 0x0600BA9A RID: 47770 RVA: 0x002A1BC0 File Offset: 0x0029FDC0 [Token(Token = "0x600BA9A")] [Address(RVA = "0x1B42930", Offset = "0x1B41730", VA = "0x181B42930")] 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: 0x0600BA9B RID: 47771 RVA: 0x002A1C04 File Offset: 0x0029FE04 [Token(Token = "0x600BA9B")] [Address(RVA = "0x1B427F0", Offset = "0x1B415F0", VA = "0x181B427F0")] 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: 0x0600BA9C RID: 47772 RVA: 0x002A1D60 File Offset: 0x0029FF60 [Token(Token = "0x600BA9C")] [Address(RVA = "0x1B41590", Offset = "0x1B40390", VA = "0x181B41590")] 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: 0x0600BA9D RID: 47773 RVA: 0x002A1E88 File Offset: 0x002A0088 [Token(Token = "0x600BA9D")] [Address(RVA = "0x1B42720", Offset = "0x1B41520", VA = "0x181B42720", 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: 0x0600BA9E RID: 47774 RVA: 0x002A1EE0 File Offset: 0x002A00E0 [Token(Token = "0x600BA9E")] [Address(RVA = "0x1B412B0", Offset = "0x1B400B0", VA = "0x181B412B0", 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: 0x0600BA9F RID: 47775 RVA: 0x002A208C File Offset: 0x002A028C [Token(Token = "0x600BA9F")] [Address(RVA = "0x1B41670", Offset = "0x1B40470", VA = "0x181B41670")] 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: 0x0600BAA0 RID: 47776 RVA: 0x002A21C4 File Offset: 0x002A03C4 [Token(Token = "0x600BAA0")] [Address(RVA = "0x1B425B0", Offset = "0x1B413B0", VA = "0x181B425B0", 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: 0x0600BAA1 RID: 47777 RVA: 0x002A222C File Offset: 0x002A042C [Token(Token = "0x600BAA1")] [Address(RVA = "0x1B42520", Offset = "0x1B41320", VA = "0x181B42520")] 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: 0x0600BAA2 RID: 47778 RVA: 0x002A227C File Offset: 0x002A047C [Token(Token = "0x600BAA2")] [Address(RVA = "0x1B41280", Offset = "0x1B40080", VA = "0x181B41280")] private void AdjustByteCounts() { long num = this.byteCount1; ulong num2; if (num > (long)num2) { this.byteCount1 = num; } } // Token: 0x0600BAA3 RID: 47779 RVA: 0x002A229C File Offset: 0x002A049C [Token(Token = "0x600BAA3")] [Address(RVA = "0x1B42490", Offset = "0x1B41290", VA = "0x181B42490")] internal void ProcessLength(long lowW, long hiW) { if (this.wOff > 14) { this.ProcessBlock(); } this.W[14] = (ulong)hiW; this.W[15] = (ulong)lowW; } // Token: 0x0600BAA4 RID: 47780 RVA: 0x002A22DC File Offset: 0x002A04DC [Token(Token = "0x600BAA4")] [Address(RVA = "0x1B41880", Offset = "0x1B40680", VA = "0x181B41880")] 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: 0x0600BAA5 RID: 47781 RVA: 0x002A2604 File Offset: 0x002A0804 [Token(Token = "0x600BAA5")] [Address(RVA = "0x1B41580", Offset = "0x1B40380", VA = "0x181B41580")] private static ulong Ch(ulong x, ulong y, ulong z) { return x; } // Token: 0x0600BAA6 RID: 47782 RVA: 0x002A2614 File Offset: 0x002A0814 [Token(Token = "0x600BAA6")] [Address(RVA = "0x1B41870", Offset = "0x1B40670", VA = "0x181B41870")] private static ulong Maj(ulong x, ulong y, ulong z) { return y; } // Token: 0x0600BAA7 RID: 47783 RVA: 0x002A2624 File Offset: 0x002A0824 [Token(Token = "0x600BAA7")] [Address(RVA = "0x1B426A0", Offset = "0x1B414A0", VA = "0x181B426A0")] private static ulong Sum0(ulong x) { return x; } // Token: 0x0600BAA8 RID: 47784 RVA: 0x002A2634 File Offset: 0x002A0834 [Token(Token = "0x600BAA8")] [Address(RVA = "0x1B426E0", Offset = "0x1B414E0", VA = "0x181B426E0")] private static ulong Sum1(ulong x) { return x; } // Token: 0x0600BAA9 RID: 47785 RVA: 0x002A2644 File Offset: 0x002A0844 [Token(Token = "0x600BAA9")] [Address(RVA = "0x1B42640", Offset = "0x1B41440", VA = "0x181B42640")] private static ulong Sigma0(ulong x) { return x; } // Token: 0x0600BAAA RID: 47786 RVA: 0x002A2654 File Offset: 0x002A0854 [Token(Token = "0x600BAAA")] [Address(RVA = "0x1B42670", Offset = "0x1B41470", VA = "0x181B42670")] private static ulong Sigma1(ulong x) { return x; } // Token: 0x0600BAAB RID: 47787 RVA: 0x002A2664 File Offset: 0x002A0864 [Token(Token = "0x600BAAB")] [Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560", Slot = "6")] public int GetByteLength() { return this.MyByteLength; } // Token: 0x17001D11 RID: 7441 // (get) Token: 0x0600BAAC RID: 47788 [Token(Token = "0x17001D11")] public abstract string AlgorithmName { [Token(Token = "0x600BAAC")] [Address(Slot = "14")] get; } // Token: 0x0600BAAD RID: 47789 [Token(Token = "0x600BAAD")] [Address(Slot = "15")] public abstract int GetDigestSize(); // Token: 0x0600BAAE RID: 47790 [Token(Token = "0x600BAAE")] [Address(Slot = "16")] public abstract int DoFinal(byte[] output, int outOff); // Token: 0x0600BAAF RID: 47791 [Token(Token = "0x600BAAF")] [Address(Slot = "17")] public abstract IMemoable Copy(); // Token: 0x0600BAB0 RID: 47792 [Token(Token = "0x600BAB0")] [Address(Slot = "18")] public abstract void Reset(IMemoable t); // Token: 0x0600BAB1 RID: 47793 RVA: 0x002A2678 File Offset: 0x002A0878 // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x600BAB1")] [Address(RVA = "0x1B42790", Offset = "0x1B41590", VA = "0x181B42790")] static LongDigest() { ulong[] array = new ulong[80]; RuntimeHelpers.InitializeArray(array, fieldof(.90A0542282A011472F94E97CEAE59F8B3B1A3291).FieldHandle); LongDigest.K = array; } // Token: 0x0400769F RID: 30367 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400769F")] private int MyByteLength = (int)((ulong)128L); // Token: 0x040076A0 RID: 30368 [FieldOffset(Offset = "0x18")] [Token(Token = "0x40076A0")] private byte[] xBuf; // Token: 0x040076A1 RID: 30369 [FieldOffset(Offset = "0x20")] [Token(Token = "0x40076A1")] private int xBufOff; // Token: 0x040076A2 RID: 30370 [FieldOffset(Offset = "0x28")] [Token(Token = "0x40076A2")] private long byteCount1; // Token: 0x040076A3 RID: 30371 [FieldOffset(Offset = "0x30")] [Token(Token = "0x40076A3")] private long byteCount2; // Token: 0x040076A4 RID: 30372 [FieldOffset(Offset = "0x38")] [Token(Token = "0x40076A4")] internal ulong H1; // Token: 0x040076A5 RID: 30373 [FieldOffset(Offset = "0x40")] [Token(Token = "0x40076A5")] internal ulong H2; // Token: 0x040076A6 RID: 30374 [FieldOffset(Offset = "0x48")] [Token(Token = "0x40076A6")] internal ulong H3; // Token: 0x040076A7 RID: 30375 [FieldOffset(Offset = "0x50")] [Token(Token = "0x40076A7")] internal ulong H4; // Token: 0x040076A8 RID: 30376 [FieldOffset(Offset = "0x58")] [Token(Token = "0x40076A8")] internal ulong H5; // Token: 0x040076A9 RID: 30377 [FieldOffset(Offset = "0x60")] [Token(Token = "0x40076A9")] internal ulong H6; // Token: 0x040076AA RID: 30378 [FieldOffset(Offset = "0x68")] [Token(Token = "0x40076AA")] internal ulong H7; // Token: 0x040076AB RID: 30379 [FieldOffset(Offset = "0x70")] [Token(Token = "0x40076AB")] internal ulong H8; // Token: 0x040076AC RID: 30380 [FieldOffset(Offset = "0x78")] [Token(Token = "0x40076AC")] private ulong[] W; // Token: 0x040076AD RID: 30381 [FieldOffset(Offset = "0x80")] [Token(Token = "0x40076AD")] private int wOff; // Token: 0x040076AE RID: 30382 [Token(Token = "0x40076AE")] internal static readonly ulong[] K; } }