This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
@@ -0,0 +1,257 @@
using System;
namespace System.Security.Cryptography
{
// Token: 0x0200052B RID: 1323
internal class SHA1Internal
{
// Token: 0x0600308D RID: 12429 RVA: 0x000A5E70 File Offset: 0x000A4070
public SHA1Internal()
{
this._H = new uint[5];
this._ProcessingBuffer = new byte[64];
this.buff = new uint[80];
this.Initialize();
}
// Token: 0x0600308E RID: 12430 RVA: 0x000A5EB0 File Offset: 0x000A40B0
public void HashCore(byte[] rgb, int ibStart, int cbSize)
{
if (this._ProcessingBufferCount != 0)
{
if (cbSize < 64 - this._ProcessingBufferCount)
{
Buffer.BlockCopy(rgb, ibStart, this._ProcessingBuffer, this._ProcessingBufferCount, cbSize);
this._ProcessingBufferCount += cbSize;
return;
}
int i = 64 - this._ProcessingBufferCount;
Buffer.BlockCopy(rgb, ibStart, this._ProcessingBuffer, this._ProcessingBufferCount, i);
this.ProcessBlock(this._ProcessingBuffer, 0U);
this._ProcessingBufferCount = 0;
ibStart += i;
cbSize -= i;
}
for (int i = 0; i < cbSize - cbSize % 64; i += 64)
{
this.ProcessBlock(rgb, (uint)(ibStart + i));
}
if (cbSize % 64 != 0)
{
Buffer.BlockCopy(rgb, cbSize - cbSize % 64 + ibStart, this._ProcessingBuffer, 0, cbSize % 64);
this._ProcessingBufferCount = cbSize % 64;
}
}
// Token: 0x0600308F RID: 12431 RVA: 0x000A5F84 File Offset: 0x000A4184
public byte[] HashFinal()
{
byte[] array = new byte[20];
this.ProcessFinalBlock(this._ProcessingBuffer, 0, this._ProcessingBufferCount);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 4; j++)
{
array[i * 4 + j] = (byte)(this._H[i] >> 8 * (3 - j));
}
}
return array;
}
// Token: 0x06003090 RID: 12432 RVA: 0x000A5FEC File Offset: 0x000A41EC
public void Initialize()
{
this.count = 0UL;
this._ProcessingBufferCount = 0;
this._H[0] = 1732584193U;
this._H[1] = 4023233417U;
this._H[2] = 2562383102U;
this._H[3] = 271733878U;
this._H[4] = 3285377520U;
}
// Token: 0x06003091 RID: 12433 RVA: 0x000A604C File Offset: 0x000A424C
private void ProcessBlock(byte[] inputBuffer, uint inputOffset)
{
this.count += 64UL;
uint[] h = this._H;
uint[] array = this.buff;
SHA1Internal.InitialiseBuff(array, inputBuffer, inputOffset);
SHA1Internal.FillBuff(array);
uint num = h[0];
uint num2 = h[1];
uint num3 = h[2];
uint num4 = h[3];
uint num5 = h[4];
int i;
for (i = 0; i < 20; i += 5)
{
num5 += ((num << 5) | (num >> 27)) + (((num3 ^ num4) & num2) ^ num4) + 1518500249U + array[i];
num2 = (num2 << 30) | (num2 >> 2);
num4 += ((num5 << 5) | (num5 >> 27)) + (((num2 ^ num3) & num) ^ num3) + 1518500249U + array[i + 1];
num = (num << 30) | (num >> 2);
num3 += ((num4 << 5) | (num4 >> 27)) + (((num ^ num2) & num5) ^ num2) + 1518500249U + array[i + 2];
num5 = (num5 << 30) | (num5 >> 2);
num2 += ((num3 << 5) | (num3 >> 27)) + (((num5 ^ num) & num4) ^ num) + 1518500249U + array[i + 3];
num4 = (num4 << 30) | (num4 >> 2);
num += ((num2 << 5) | (num2 >> 27)) + (((num4 ^ num5) & num3) ^ num5) + 1518500249U + array[i + 4];
num3 = (num3 << 30) | (num3 >> 2);
}
while (i < 40)
{
num5 += ((num << 5) | (num >> 27)) + (num2 ^ num3 ^ num4) + 1859775393U + array[i];
num2 = (num2 << 30) | (num2 >> 2);
num4 += ((num5 << 5) | (num5 >> 27)) + (num ^ num2 ^ num3) + 1859775393U + array[i + 1];
num = (num << 30) | (num >> 2);
num3 += ((num4 << 5) | (num4 >> 27)) + (num5 ^ num ^ num2) + 1859775393U + array[i + 2];
num5 = (num5 << 30) | (num5 >> 2);
num2 += ((num3 << 5) | (num3 >> 27)) + (num4 ^ num5 ^ num) + 1859775393U + array[i + 3];
num4 = (num4 << 30) | (num4 >> 2);
num += ((num2 << 5) | (num2 >> 27)) + (num3 ^ num4 ^ num5) + 1859775393U + array[i + 4];
num3 = (num3 << 30) | (num3 >> 2);
i += 5;
}
while (i < 60)
{
num5 += ((num << 5) | (num >> 27)) + ((num2 & num3) | (num2 & num4) | (num3 & num4)) + 2400959708U + array[i];
num2 = (num2 << 30) | (num2 >> 2);
num4 += ((num5 << 5) | (num5 >> 27)) + ((num & num2) | (num & num3) | (num2 & num3)) + 2400959708U + array[i + 1];
num = (num << 30) | (num >> 2);
num3 += ((num4 << 5) | (num4 >> 27)) + ((num5 & num) | (num5 & num2) | (num & num2)) + 2400959708U + array[i + 2];
num5 = (num5 << 30) | (num5 >> 2);
num2 += ((num3 << 5) | (num3 >> 27)) + ((num4 & num5) | (num4 & num) | (num5 & num)) + 2400959708U + array[i + 3];
num4 = (num4 << 30) | (num4 >> 2);
num += ((num2 << 5) | (num2 >> 27)) + ((num3 & num4) | (num3 & num5) | (num4 & num5)) + 2400959708U + array[i + 4];
num3 = (num3 << 30) | (num3 >> 2);
i += 5;
}
while (i < 80)
{
num5 += ((num << 5) | (num >> 27)) + (num2 ^ num3 ^ num4) + 3395469782U + array[i];
num2 = (num2 << 30) | (num2 >> 2);
num4 += ((num5 << 5) | (num5 >> 27)) + (num ^ num2 ^ num3) + 3395469782U + array[i + 1];
num = (num << 30) | (num >> 2);
num3 += ((num4 << 5) | (num4 >> 27)) + (num5 ^ num ^ num2) + 3395469782U + array[i + 2];
num5 = (num5 << 30) | (num5 >> 2);
num2 += ((num3 << 5) | (num3 >> 27)) + (num4 ^ num5 ^ num) + 3395469782U + array[i + 3];
num4 = (num4 << 30) | (num4 >> 2);
num += ((num2 << 5) | (num2 >> 27)) + (num3 ^ num4 ^ num5) + 3395469782U + array[i + 4];
num3 = (num3 << 30) | (num3 >> 2);
i += 5;
}
h[0] += num;
h[1] += num2;
h[2] += num3;
h[3] += num4;
h[4] += num5;
}
// Token: 0x06003092 RID: 12434 RVA: 0x000A64A4 File Offset: 0x000A46A4
private static void InitialiseBuff(uint[] buff, byte[] input, uint inputOffset)
{
buff[0] = (uint)(((int)input[(int)((UIntPtr)inputOffset)] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 1U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 2U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 3U))]);
buff[1] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 4U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 5U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 6U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 7U))]);
buff[2] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 8U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 9U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 10U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 11U))]);
buff[3] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 12U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 13U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 14U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 15U))]);
buff[4] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 16U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 17U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 18U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 19U))]);
buff[5] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 20U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 21U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 22U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 23U))]);
buff[6] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 24U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 25U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 26U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 27U))]);
buff[7] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 28U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 29U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 30U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 31U))]);
buff[8] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 32U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 33U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 34U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 35U))]);
buff[9] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 36U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 37U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 38U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 39U))]);
buff[10] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 40U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 41U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 42U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 43U))]);
buff[11] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 44U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 45U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 46U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 47U))]);
buff[12] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 48U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 49U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 50U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 51U))]);
buff[13] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 52U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 53U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 54U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 55U))]);
buff[14] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 56U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 57U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 58U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 59U))]);
buff[15] = (uint)(((int)input[(int)((UIntPtr)(inputOffset + 60U))] << 24) | ((int)input[(int)((UIntPtr)(inputOffset + 61U))] << 16) | ((int)input[(int)((UIntPtr)(inputOffset + 62U))] << 8) | (int)input[(int)((UIntPtr)(inputOffset + 63U))]);
}
// Token: 0x06003093 RID: 12435 RVA: 0x000A6750 File Offset: 0x000A4950
private static void FillBuff(uint[] buff)
{
for (int i = 16; i < 80; i += 8)
{
uint num = buff[i - 3] ^ buff[i - 8] ^ buff[i - 14] ^ buff[i - 16];
buff[i] = (num << 1) | (num >> 31);
num = buff[i - 2] ^ buff[i - 7] ^ buff[i - 13] ^ buff[i - 15];
buff[i + 1] = (num << 1) | (num >> 31);
num = buff[i - 1] ^ buff[i - 6] ^ buff[i - 12] ^ buff[i - 14];
buff[i + 2] = (num << 1) | (num >> 31);
num = buff[i] ^ buff[i - 5] ^ buff[i - 11] ^ buff[i - 13];
buff[i + 3] = (num << 1) | (num >> 31);
num = buff[i + 1] ^ buff[i - 4] ^ buff[i - 10] ^ buff[i - 12];
buff[i + 4] = (num << 1) | (num >> 31);
num = buff[i + 2] ^ buff[i - 3] ^ buff[i - 9] ^ buff[i - 11];
buff[i + 5] = (num << 1) | (num >> 31);
num = buff[i + 3] ^ buff[i - 2] ^ buff[i - 8] ^ buff[i - 10];
buff[i + 6] = (num << 1) | (num >> 31);
num = buff[i + 4] ^ buff[i - 1] ^ buff[i - 7] ^ buff[i - 9];
buff[i + 7] = (num << 1) | (num >> 31);
}
}
// Token: 0x06003094 RID: 12436 RVA: 0x000A68A4 File Offset: 0x000A4AA4
private void ProcessFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
{
ulong num = this.count + (ulong)((long)inputCount);
int num2 = 56 - (int)(num % 64UL);
if (num2 < 1)
{
num2 += 64;
}
int num3 = inputCount + num2 + 8;
byte[] array = ((num3 != 64) ? new byte[num3] : this._ProcessingBuffer);
for (int i = 0; i < inputCount; i++)
{
array[i] = inputBuffer[i + inputOffset];
}
array[inputCount] = 128;
for (int j = inputCount + 1; j < inputCount + num2; j++)
{
array[j] = 0;
}
ulong num4 = num << 3;
this.AddLength(num4, array, inputCount + num2);
this.ProcessBlock(array, 0U);
if (num3 == 128)
{
this.ProcessBlock(array, 64U);
}
}
// Token: 0x06003095 RID: 12437 RVA: 0x000A6968 File Offset: 0x000A4B68
internal void AddLength(ulong length, byte[] buffer, int position)
{
buffer[position++] = (byte)(length >> 56);
buffer[position++] = (byte)(length >> 48);
buffer[position++] = (byte)(length >> 40);
buffer[position++] = (byte)(length >> 32);
buffer[position++] = (byte)(length >> 24);
buffer[position++] = (byte)(length >> 16);
buffer[position++] = (byte)(length >> 8);
buffer[position] = (byte)length;
}
// Token: 0x040013C7 RID: 5063
private const int BLOCK_SIZE_BYTES = 64;
// Token: 0x040013C8 RID: 5064
private const int HASH_SIZE_BYTES = 20;
// Token: 0x040013C9 RID: 5065
private uint[] _H;
// Token: 0x040013CA RID: 5066
private ulong count;
// Token: 0x040013CB RID: 5067
private byte[] _ProcessingBuffer;
// Token: 0x040013CC RID: 5068
private int _ProcessingBufferCount;
// Token: 0x040013CD RID: 5069
private uint[] buff;
}
}