379 lines
12 KiB
C#
379 lines
12 KiB
C#
using System;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests
|
|
{
|
|
// Token: 0x02001DD4 RID: 7636
|
|
[Token(Token = "0x2001DD4")]
|
|
public class SM3Digest : GeneralDigest
|
|
{
|
|
// Token: 0x0600BF24 RID: 48932 RVA: 0x002AF880 File Offset: 0x002ADA80
|
|
[Token(Token = "0x600BF24")]
|
|
[Address(RVA = "0x290AE10", Offset = "0x2909E10", VA = "0x18290AE10")]
|
|
static SM3Digest()
|
|
{
|
|
uint[] array = new uint[64];
|
|
int num = 0;
|
|
SM3Digest.T = array;
|
|
uint[] t = SM3Digest.T;
|
|
num++;
|
|
t[0] = (uint)2043430169;
|
|
if (32UL < (ulong)16L)
|
|
{
|
|
}
|
|
SM3Digest.T[0] = (uint)2055708042;
|
|
}
|
|
|
|
// Token: 0x0600BF25 RID: 48933 RVA: 0x002AF8D4 File Offset: 0x002ADAD4
|
|
[Token(Token = "0x600BF25")]
|
|
[Address(RVA = "0x290AF50", Offset = "0x2909F50", VA = "0x18290AF50")]
|
|
public SM3Digest()
|
|
{
|
|
uint[] array = new uint[8];
|
|
this.V = array;
|
|
uint[] array2 = new uint[16];
|
|
this.inwords = array2;
|
|
uint[] array3 = new uint[68];
|
|
this.W = array3;
|
|
base..ctor();
|
|
IMemoable memoable = ((IMemoable)this).Copy();
|
|
}
|
|
|
|
// Token: 0x0600BF26 RID: 48934 RVA: 0x002AF91C File Offset: 0x002ADB1C
|
|
[Token(Token = "0x600BF26")]
|
|
[Address(RVA = "0x290AFE0", Offset = "0x2909FE0", VA = "0x18290AFE0")]
|
|
public SM3Digest(SM3Digest t)
|
|
{
|
|
uint[] array = new uint[8];
|
|
this.V = array;
|
|
uint[] array2 = new uint[16];
|
|
this.inwords = array2;
|
|
uint[] array3 = new uint[68];
|
|
this.W = array3;
|
|
base..ctor(t);
|
|
this.CopyIn(t);
|
|
}
|
|
|
|
// Token: 0x0600BF27 RID: 48935 RVA: 0x002AF964 File Offset: 0x002ADB64
|
|
[Token(Token = "0x600BF27")]
|
|
[Address(RVA = "0x2909FA0", Offset = "0x2908FA0", VA = "0x182909FA0")]
|
|
private void CopyIn(SM3Digest t)
|
|
{
|
|
uint[] v = this.V;
|
|
int length = v.Length;
|
|
int num = 0;
|
|
uint[] v2 = t.V;
|
|
int num2 = 0;
|
|
Array.Copy(v2, num2, v, num, length);
|
|
uint[] array = this.inwords;
|
|
int length2 = array.Length;
|
|
int num3 = 0;
|
|
uint[] array2 = t.inwords;
|
|
int num4 = 0;
|
|
Array.Copy(array2, num4, array, num3, length2);
|
|
int num5 = t.xOff;
|
|
this.xOff = num5;
|
|
}
|
|
|
|
// Token: 0x17001DB9 RID: 7609
|
|
// (get) Token: 0x0600BF28 RID: 48936 RVA: 0x002AF9DC File Offset: 0x002ADBDC
|
|
[Token(Token = "0x17001DB9")]
|
|
public override string AlgorithmName
|
|
{
|
|
[Token(Token = "0x600BF28")]
|
|
[Address(RVA = "0x290B070", Offset = "0x290A070", VA = "0x18290B070", Slot = "17")]
|
|
get
|
|
{
|
|
return "SM3";
|
|
}
|
|
}
|
|
|
|
// Token: 0x0600BF29 RID: 48937 RVA: 0x002AF9F0 File Offset: 0x002ADBF0
|
|
[Token(Token = "0x600BF29")]
|
|
[Address(RVA = "0x8BCAC0", Offset = "0x8BBAC0", VA = "0x1808BCAC0", Slot = "18")]
|
|
public override int GetDigestSize()
|
|
{
|
|
return 32;
|
|
}
|
|
|
|
// Token: 0x0600BF2A RID: 48938 RVA: 0x002AFA00 File Offset: 0x002ADC00
|
|
[Token(Token = "0x600BF2A")]
|
|
[Address(RVA = "0x290A020", Offset = "0x2909020", VA = "0x18290A020", Slot = "20")]
|
|
public override IMemoable Copy()
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600BF2A)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IMemoable BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests.SM3Digest::Copy()
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
Block_0:
|
|
stloc:SM3Digest(var_0_06, newobj:SM3Digest(SM3Digest::.ctor, ldloc:SM3Digest(this)))
|
|
stloc:uint32[](var_1_0D, newarr:uint32[]([mscorlib]System.UInt32, ldc.i4:int32(8)))
|
|
stfld:uint32[](SM3Digest::V, ldloc:SM3Digest(var_0_06), ldloc:uint32[](var_1_0D))
|
|
stloc:uint32[](var_2_1C, newarr:uint32[]([mscorlib]System.UInt32, ldc.i4:int32(16)))
|
|
stfld:uint32[](SM3Digest::inwords, ldloc:SM3Digest(var_0_06), ldloc:uint32[](var_2_1C))
|
|
stloc:uint32[](var_3_2B, newarr:uint32[]([mscorlib]System.UInt32, ldc.i4:int32(68)))
|
|
stfld:uint32[](SM3Digest::W, ldloc:SM3Digest(var_0_06), ldloc:uint32[](var_3_2B))
|
|
call:void(SM3Digest::CopyIn, ldloc:SM3Digest(var_0_06), ldloc:SM3Digest(this))
|
|
}
|
|
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1852
|
|
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.Optimize(DecompilerContext context, ILBlock method, AutoPropertyProvider autoPropertyProvider, StateMachineKind& stateMachineKind, MethodDef& inlinedMethod, AsyncMethodDebugInfo& asyncInfo, ILAstOptimizationStep abortBeforeStep) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 355
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(IEnumerable`1 parameters, MethodDebugInfoBuilder& builder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 123
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 88
|
|
--- End of inner exception stack trace ---
|
|
at ICSharpCode.Decompiler.Ast.AstMethodBodyBuilder.CreateMethodBody(MethodDef methodDef, DecompilerContext context, AutoPropertyProvider autoPropertyProvider, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, StringBuilder sb, MethodDebugInfoBuilder& stmtsBuilder) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstMethodBodyBuilder.cs:line 92
|
|
at ICSharpCode.Decompiler.Ast.AstBuilder.AddMethodBody(EntityDeclaration methodNode, EntityDeclaration& updatedNode, MethodDef method, IEnumerable`1 parameters, Boolean valueParameterIsKeyword, MethodKind methodKind) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\Ast\AstBuilder.cs:line 1663
|
|
*/;
|
|
}
|
|
|
|
// Token: 0x0600BF2B RID: 48939 RVA: 0x002AFA48 File Offset: 0x002ADC48
|
|
[Token(Token = "0x600BF2B")]
|
|
[Address(RVA = "0x290ABD0", Offset = "0x2909BD0", VA = "0x18290ABD0", Slot = "21")]
|
|
public override void Reset(IMemoable other)
|
|
{
|
|
do
|
|
{
|
|
if (other == 0)
|
|
{
|
|
}
|
|
}
|
|
while (other == 0);
|
|
}
|
|
|
|
// Token: 0x0600BF2C RID: 48940 RVA: 0x002AFA60 File Offset: 0x002ADC60
|
|
[Token(Token = "0x600BF2C")]
|
|
[Address(RVA = "0x290AC80", Offset = "0x2909C80", VA = "0x18290AC80", Slot = "13")]
|
|
public override void Reset()
|
|
{
|
|
base.Reset();
|
|
uint[] v = this.V;
|
|
uint[] v2 = this.V;
|
|
uint[] v3 = this.V;
|
|
uint[] v4 = this.V;
|
|
uint[] v5 = this.V;
|
|
uint[] v6 = this.V;
|
|
uint[] v7 = this.V;
|
|
uint[] v8 = this.V;
|
|
this.xOff = (int)((ulong)0L);
|
|
}
|
|
|
|
// Token: 0x0600BF2D RID: 48941 RVA: 0x002AFAC0 File Offset: 0x002ADCC0
|
|
[Token(Token = "0x600BF2D")]
|
|
[Address(RVA = "0x290A0E0", Offset = "0x29090E0", VA = "0x18290A0E0", Slot = "19")]
|
|
public override int DoFinal(byte[] output, int outOff)
|
|
{
|
|
base.Finish();
|
|
Pack.UInt32_To_BE(this.V, output, outOff);
|
|
return 32;
|
|
}
|
|
|
|
// Token: 0x0600BF2E RID: 48942 RVA: 0x002AFAE4 File Offset: 0x002ADCE4
|
|
[Token(Token = "0x600BF2E")]
|
|
[Address(RVA = "0x290AB60", Offset = "0x2909B60", VA = "0x18290AB60", Slot = "14")]
|
|
internal override void ProcessWord(byte[] input, int inOff)
|
|
{
|
|
uint num = Pack.BE_To_UInt32(input, inOff);
|
|
uint[] array = this.inwords;
|
|
int num2 = this.xOff;
|
|
array[0] = num;
|
|
IMemoable memoable = ((IMemoable)this).Copy();
|
|
}
|
|
|
|
// Token: 0x0600BF2F RID: 48943 RVA: 0x002AFB20 File Offset: 0x002ADD20
|
|
[Token(Token = "0x600BF2F")]
|
|
[Address(RVA = "0x290AA30", Offset = "0x2909A30", VA = "0x18290AA30", Slot = "15")]
|
|
internal override void ProcessLength(long bitLength)
|
|
{
|
|
int num;
|
|
int num2;
|
|
do
|
|
{
|
|
num = this.xOff;
|
|
num2 = 0;
|
|
}
|
|
while (num <= 14);
|
|
this.inwords[0] = (uint)num2;
|
|
int num3;
|
|
if (this.xOff < 14)
|
|
{
|
|
this.inwords[0] = (uint)num2;
|
|
num3 = this.xOff;
|
|
num3++;
|
|
this.xOff = num3;
|
|
}
|
|
uint[] array = this.inwords;
|
|
int num4 = num3 + 1;
|
|
this.xOff = num4;
|
|
array[0] = (uint)bitLength;
|
|
int num5 = this.xOff;
|
|
uint[] array2 = this.inwords;
|
|
int num6 = num5 + 1;
|
|
this.xOff = num6;
|
|
array2[0] = (uint)bitLength;
|
|
}
|
|
|
|
// Token: 0x0600BF30 RID: 48944 RVA: 0x002AFBC0 File Offset: 0x002ADDC0
|
|
[Token(Token = "0x600BF30")]
|
|
[Address(RVA = "0x290A140", Offset = "0x2909140", VA = "0x18290A140")]
|
|
private uint P0(uint x)
|
|
{
|
|
return x;
|
|
}
|
|
|
|
// Token: 0x0600BF31 RID: 48945 RVA: 0x002AFBD0 File Offset: 0x002ADDD0
|
|
[Token(Token = "0x600BF31")]
|
|
[Address(RVA = "0x290A170", Offset = "0x2909170", VA = "0x18290A170")]
|
|
private uint P1(uint x)
|
|
{
|
|
return x;
|
|
}
|
|
|
|
// Token: 0x0600BF32 RID: 48946 RVA: 0x002AFBE0 File Offset: 0x002ADDE0
|
|
[Token(Token = "0x600BF32")]
|
|
[Address(RVA = "0xE4D010", Offset = "0xE4C010", VA = "0x180E4D010")]
|
|
private uint FF0(uint x, uint y, uint z)
|
|
{
|
|
return x;
|
|
}
|
|
|
|
// Token: 0x0600BF33 RID: 48947 RVA: 0x002AFBF0 File Offset: 0x002ADDF0
|
|
[Token(Token = "0x600BF33")]
|
|
[Address(RVA = "0xE4CFB0", Offset = "0xE4BFB0", VA = "0x180E4CFB0")]
|
|
private uint FF1(uint x, uint y, uint z)
|
|
{
|
|
return y;
|
|
}
|
|
|
|
// Token: 0x0600BF34 RID: 48948 RVA: 0x002AFC00 File Offset: 0x002ADE00
|
|
[Token(Token = "0x600BF34")]
|
|
[Address(RVA = "0xE4D010", Offset = "0xE4C010", VA = "0x180E4D010")]
|
|
private uint GG0(uint x, uint y, uint z)
|
|
{
|
|
return x;
|
|
}
|
|
|
|
// Token: 0x0600BF35 RID: 48949 RVA: 0x002AFC10 File Offset: 0x002ADE10
|
|
[Token(Token = "0x600BF35")]
|
|
[Address(RVA = "0xE4CF50", Offset = "0xE4BF50", VA = "0x180E4CF50")]
|
|
private uint GG1(uint x, uint y, uint z)
|
|
{
|
|
return x;
|
|
}
|
|
|
|
// Token: 0x0600BF36 RID: 48950 RVA: 0x002AFC20 File Offset: 0x002ADE20
|
|
[Token(Token = "0x600BF36")]
|
|
[Address(RVA = "0x290A1A0", Offset = "0x29091A0", VA = "0x18290A1A0", Slot = "16")]
|
|
internal override void ProcessBlock()
|
|
{
|
|
int num = 0;
|
|
uint[] array = this.inwords;
|
|
uint[] w = this.W;
|
|
uint num2 = array[num];
|
|
num++;
|
|
w[0] = num2;
|
|
uint[] w2 = this.W;
|
|
int length = w2.Length;
|
|
uint num3 = w2[w];
|
|
uint num4;
|
|
num4 += (uint)1;
|
|
w2[0] = num3;
|
|
uint[] v = this.V;
|
|
int length2 = v.Length;
|
|
uint num5 = v[0];
|
|
uint num6 = v[0];
|
|
uint num7 = v[1];
|
|
uint num8 = v[1];
|
|
uint num9 = v[2];
|
|
uint num10 = v[2];
|
|
uint num11 = v[3];
|
|
uint num12 = v[3];
|
|
int num13 = 0;
|
|
num12 = num5;
|
|
uint[] t = SM3Digest.T;
|
|
uint num14;
|
|
num14 += num5;
|
|
num14 += num9;
|
|
uint[] w3 = this.W;
|
|
int length3 = w3.Length;
|
|
num13 += 4;
|
|
num7 += num8;
|
|
num6 = num11;
|
|
num6 += num12;
|
|
uint num15;
|
|
num6 += num15;
|
|
num6 += num14;
|
|
num13++;
|
|
num5 = num14;
|
|
uint num16 = w3[num13];
|
|
num7 += num16;
|
|
num5 += num7;
|
|
num7 = num10;
|
|
num9 = num6;
|
|
uint[] t2 = SM3Digest.T;
|
|
uint[] w4 = this.W;
|
|
uint num17;
|
|
num17 += num5;
|
|
num17 += num9;
|
|
num14 = num17;
|
|
int length4 = w4.Length;
|
|
num6 = num5;
|
|
num5 = num9;
|
|
uint num18 = w4[t2];
|
|
num18 += num7;
|
|
num18 += num6;
|
|
num5 += num18;
|
|
num5 += num11;
|
|
uint num19;
|
|
num5 += num19;
|
|
num5 += num14;
|
|
num4 += (uint)1;
|
|
uint[] v2 = this.V;
|
|
uint[] v3 = this.V;
|
|
uint[] v4 = this.V;
|
|
uint[] v5 = this.V;
|
|
uint[] v6 = this.V;
|
|
uint[] v7 = this.V;
|
|
uint[] v8 = this.V;
|
|
uint[] v9 = this.V;
|
|
this.xOff = (int)((ulong)0L);
|
|
}
|
|
|
|
// Token: 0x040078C4 RID: 30916
|
|
[Token(Token = "0x40078C4")]
|
|
private const int DIGEST_LENGTH = 32;
|
|
|
|
// Token: 0x040078C5 RID: 30917
|
|
[Token(Token = "0x40078C5")]
|
|
private const int BLOCK_SIZE = 16;
|
|
|
|
// Token: 0x040078C6 RID: 30918
|
|
[FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x40078C6")]
|
|
private uint[] V;
|
|
|
|
// Token: 0x040078C7 RID: 30919
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x40078C7")]
|
|
private uint[] inwords;
|
|
|
|
// Token: 0x040078C8 RID: 30920
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x40078C8")]
|
|
private int xOff;
|
|
|
|
// Token: 0x040078C9 RID: 30921
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x40078C9")]
|
|
private uint[] W;
|
|
|
|
// Token: 0x040078CA RID: 30922
|
|
[Token(Token = "0x40078CA")]
|
|
private static readonly uint[] T;
|
|
}
|
|
}
|