Files
Jan2021-Cpp2Il-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Crypto/Digests/LongDigest.cs
T
2026-04-08 23:40:05 +02:00

632 lines
15 KiB
C#

using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests
{
// Token: 0x0200170C RID: 5900
[Token(Token = "0x200170C")]
[StructLayout(3)]
public abstract class LongDigest : IDigest, IMemoable
{
// Token: 0x06009EC0 RID: 40640 RVA: 0x00249AAC File Offset: 0x00247CAC
[Token(Token = "0x6009EC0")]
[Address(RVA = "0x2185B60", Offset = "0x2184560", VA = "0x182185B60")]
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: 0x06009EC1 RID: 40641 RVA: 0x00249AF0 File Offset: 0x00247CF0
[Token(Token = "0x6009EC1")]
[Address(RVA = "0x2185A20", Offset = "0x2184420", VA = "0x182185A20")]
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: 0x06009EC2 RID: 40642 RVA: 0x00249C4C File Offset: 0x00247E4C
[Token(Token = "0x6009EC2")]
[Address(RVA = "0x21847D0", Offset = "0x21831D0", VA = "0x1821847D0")]
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: 0x06009EC3 RID: 40643 RVA: 0x00249D74 File Offset: 0x00247F74
[Token(Token = "0x6009EC3")]
[Address(RVA = "0x2185950", Offset = "0x2184350", VA = "0x182185950", 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: 0x06009EC4 RID: 40644 RVA: 0x00249DCC File Offset: 0x00247FCC
[Token(Token = "0x6009EC4")]
[Address(RVA = "0x2184500", Offset = "0x2182F00", VA = "0x182184500", 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: 0x06009EC5 RID: 40645 RVA: 0x00249F78 File Offset: 0x00248178
[Token(Token = "0x6009EC5")]
[Address(RVA = "0x21848B0", Offset = "0x21832B0", VA = "0x1821848B0")]
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: 0x06009EC6 RID: 40646 RVA: 0x0024A0B0 File Offset: 0x002482B0
[Token(Token = "0x6009EC6")]
[Address(RVA = "0x21857E0", Offset = "0x21841E0", VA = "0x1821857E0", 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: 0x06009EC7 RID: 40647 RVA: 0x0024A118 File Offset: 0x00248318
[Token(Token = "0x6009EC7")]
[Address(RVA = "0x2185750", Offset = "0x2184150", VA = "0x182185750")]
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: 0x06009EC8 RID: 40648 RVA: 0x0024A168 File Offset: 0x00248368
[Token(Token = "0x6009EC8")]
[Address(RVA = "0x21844D0", Offset = "0x2182ED0", VA = "0x1821844D0")]
private void AdjustByteCounts()
{
long num = this.byteCount1;
ulong num2;
if (num > (long)num2)
{
this.byteCount1 = num;
}
}
// Token: 0x06009EC9 RID: 40649 RVA: 0x0024A188 File Offset: 0x00248388
[Token(Token = "0x6009EC9")]
[Address(RVA = "0x21856C0", Offset = "0x21840C0", VA = "0x1821856C0")]
internal void ProcessLength(long lowW, long hiW)
{
if (this.wOff > 14)
{
this.ProcessBlock();
}
this.W[14] = (ulong)hiW;
this.W[15] = (ulong)lowW;
}
// Token: 0x06009ECA RID: 40650 RVA: 0x0024A1C8 File Offset: 0x002483C8
[Token(Token = "0x6009ECA")]
[Address(RVA = "0x2184AB0", Offset = "0x21834B0", VA = "0x182184AB0")]
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: 0x06009ECB RID: 40651 RVA: 0x0024A4F0 File Offset: 0x002486F0
[Token(Token = "0x6009ECB")]
[Address(RVA = "0x7062E0", Offset = "0x704CE0", VA = "0x1807062E0")]
private static ulong Ch(ulong x, ulong y, ulong z)
{
return x;
}
// Token: 0x06009ECC RID: 40652 RVA: 0x0024A500 File Offset: 0x00248700
[Token(Token = "0x6009ECC")]
[Address(RVA = "0x706520", Offset = "0x704F20", VA = "0x180706520")]
private static ulong Maj(ulong x, ulong y, ulong z)
{
return y;
}
// Token: 0x06009ECD RID: 40653 RVA: 0x0024A510 File Offset: 0x00248710
[Token(Token = "0x6009ECD")]
[Address(RVA = "0x21858D0", Offset = "0x21842D0", VA = "0x1821858D0")]
private static ulong Sum0(ulong x)
{
return x;
}
// Token: 0x06009ECE RID: 40654 RVA: 0x0024A520 File Offset: 0x00248720
[Token(Token = "0x6009ECE")]
[Address(RVA = "0x2185910", Offset = "0x2184310", VA = "0x182185910")]
private static ulong Sum1(ulong x)
{
return x;
}
// Token: 0x06009ECF RID: 40655 RVA: 0x0024A530 File Offset: 0x00248730
[Token(Token = "0x6009ECF")]
[Address(RVA = "0x2185870", Offset = "0x2184270", VA = "0x182185870")]
private static ulong Sigma0(ulong x)
{
return x;
}
// Token: 0x06009ED0 RID: 40656 RVA: 0x0024A540 File Offset: 0x00248740
[Token(Token = "0x6009ED0")]
[Address(RVA = "0x21858A0", Offset = "0x21842A0", VA = "0x1821858A0")]
private static ulong Sigma1(ulong x)
{
return x;
}
// Token: 0x06009ED1 RID: 40657 RVA: 0x0024A550 File Offset: 0x00248750
[Token(Token = "0x6009ED1")]
[Address(RVA = "0x3C1C50", Offset = "0x3C0650", VA = "0x1803C1C50", Slot = "6")]
public int GetByteLength()
{
return this.MyByteLength;
}
// Token: 0x17001910 RID: 6416
// (get) Token: 0x06009ED2 RID: 40658
[Token(Token = "0x17001910")]
public abstract string AlgorithmName
{
[Token(Token = "0x6009ED2")]
[Address(Slot = "14")]
get;
}
// Token: 0x06009ED3 RID: 40659
[Token(Token = "0x6009ED3")]
[Address(Slot = "15")]
public abstract int GetDigestSize();
// Token: 0x06009ED4 RID: 40660
[Token(Token = "0x6009ED4")]
[Address(Slot = "16")]
public abstract int DoFinal(byte[] output, int outOff);
// Token: 0x06009ED5 RID: 40661
[Token(Token = "0x6009ED5")]
[Address(Slot = "17")]
public abstract IMemoable Copy();
// Token: 0x06009ED6 RID: 40662
[Token(Token = "0x6009ED6")]
[Address(Slot = "18")]
public abstract void Reset(IMemoable t);
// Token: 0x06009ED7 RID: 40663 RVA: 0x0024A564 File Offset: 0x00248764
// Note: this type is marked as 'beforefieldinit'.
[Token(Token = "0x6009ED7")]
[Address(RVA = "0x21859C0", Offset = "0x21843C0", VA = "0x1821859C0")]
static LongDigest()
{
ulong[] array = new ulong[80];
RuntimeHelpers.InitializeArray(array, fieldof(<PrivateImplementationDetails>.90A0542282A011472F94E97CEAE59F8B3B1A3291).FieldHandle);
LongDigest.K = array;
}
// Token: 0x0400685C RID: 26716
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
[Token(Token = "0x400685C")]
private int MyByteLength = (int)((ulong)128L);
// Token: 0x0400685D RID: 26717
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
[Token(Token = "0x400685D")]
private byte[] xBuf;
// Token: 0x0400685E RID: 26718
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
[Token(Token = "0x400685E")]
private int xBufOff;
// Token: 0x0400685F RID: 26719
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
[Token(Token = "0x400685F")]
private long byteCount1;
// Token: 0x04006860 RID: 26720
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
[Token(Token = "0x4006860")]
private long byteCount2;
// Token: 0x04006861 RID: 26721
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
[Token(Token = "0x4006861")]
internal ulong H1;
// Token: 0x04006862 RID: 26722
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
[Token(Token = "0x4006862")]
internal ulong H2;
// Token: 0x04006863 RID: 26723
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
[Token(Token = "0x4006863")]
internal ulong H3;
// Token: 0x04006864 RID: 26724
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
[Token(Token = "0x4006864")]
internal ulong H4;
// Token: 0x04006865 RID: 26725
[global::Cpp2IlInjected.FieldOffset(Offset = "0x58")]
[Token(Token = "0x4006865")]
internal ulong H5;
// Token: 0x04006866 RID: 26726
[global::Cpp2IlInjected.FieldOffset(Offset = "0x60")]
[Token(Token = "0x4006866")]
internal ulong H6;
// Token: 0x04006867 RID: 26727
[global::Cpp2IlInjected.FieldOffset(Offset = "0x68")]
[Token(Token = "0x4006867")]
internal ulong H7;
// Token: 0x04006868 RID: 26728
[global::Cpp2IlInjected.FieldOffset(Offset = "0x70")]
[Token(Token = "0x4006868")]
internal ulong H8;
// Token: 0x04006869 RID: 26729
[global::Cpp2IlInjected.FieldOffset(Offset = "0x78")]
[Token(Token = "0x4006869")]
private ulong[] W;
// Token: 0x0400686A RID: 26730
[global::Cpp2IlInjected.FieldOffset(Offset = "0x80")]
[Token(Token = "0x400686A")]
private int wOff;
// Token: 0x0400686B RID: 26731
[Token(Token = "0x400686B")]
internal static readonly ulong[] K;
}
}