Files
Aug2021-Cpp2IL-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Crypto/Digests/LongDigest.cs
T
2026-04-10 22:50:51 +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: 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(<PrivateImplementationDetails>.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;
}
}