Files
27Aug2021-Cpp2IL-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Crypto/Digests/LongDigest.cs
T
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

630 lines
15 KiB
C#

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(<PrivateImplementationDetails>.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;
}
}