Files
2026-06-04 11:42:34 +02:00

101 lines
2.3 KiB
C#

using System;
namespace ICSharpCode.SharpZipLib.Checksums
{
// Token: 0x0200000A RID: 10
public sealed class Adler32 : IChecksum
{
// Token: 0x1700000F RID: 15
// (get) Token: 0x0600006D RID: 109 RVA: 0x000060C1 File Offset: 0x000050C1
public long Value
{
get
{
return (long)((ulong)this.checksum);
}
}
// Token: 0x0600006E RID: 110 RVA: 0x000060CA File Offset: 0x000050CA
public Adler32()
{
this.Reset();
}
// Token: 0x0600006F RID: 111 RVA: 0x000060D8 File Offset: 0x000050D8
public void Reset()
{
this.checksum = 1U;
}
// Token: 0x06000070 RID: 112 RVA: 0x000060E4 File Offset: 0x000050E4
public void Update(int value)
{
uint num = this.checksum & 65535U;
uint num2 = this.checksum >> 16;
num = (num + (uint)(value & 255)) % 65521U;
num2 = (num + num2) % 65521U;
this.checksum = (num2 << 16) + num;
}
// Token: 0x06000071 RID: 113 RVA: 0x0000612E File Offset: 0x0000512E
public void Update(byte[] buffer)
{
if (buffer == null)
{
throw new ArgumentNullException("buffer");
}
this.Update(buffer, 0, buffer.Length);
}
// Token: 0x06000072 RID: 114 RVA: 0x0000614C File Offset: 0x0000514C
public void Update(byte[] buffer, int offset, int count)
{
if (buffer == null)
{
throw new ArgumentNullException("buffer");
}
if (offset < 0)
{
throw new ArgumentOutOfRangeException("offset", "cannot be negative");
}
if (count < 0)
{
throw new ArgumentOutOfRangeException("count", "cannot be negative");
}
if (offset >= buffer.Length)
{
throw new ArgumentOutOfRangeException("offset", "not a valid index into buffer");
}
if (offset + count > buffer.Length)
{
throw new ArgumentOutOfRangeException("count", "exceeds buffer size");
}
uint num = this.checksum & 65535U;
uint num2 = this.checksum >> 16;
while (count > 0)
{
int num3 = 3800;
if (num3 > count)
{
num3 = count;
}
count -= num3;
while (--num3 >= 0)
{
num += (uint)(buffer[offset++] & byte.MaxValue);
num2 += num;
}
num %= 65521U;
num2 %= 65521U;
}
this.checksum = (num2 << 16) | num;
}
// Token: 0x04000066 RID: 102
private const uint BASE = 65521U;
// Token: 0x04000067 RID: 103
private uint checksum;
}
}