This commit is contained in:
niko
2026-04-10 22:50:51 +02:00
parent 6d1607d5a2
commit f18d448581
17033 changed files with 2863270 additions and 0 deletions
@@ -0,0 +1,1124 @@
using System;
using System.Collections;
using System.Runtime.CompilerServices;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests
{
// Token: 0x02001CFE RID: 7422
[Token(Token = "0x2001CFE")]
public class SkeinEngine : IMemoable
{
// Token: 0x0600BBD7 RID: 48087 RVA: 0x002A9678 File Offset: 0x002A7878
[Token(Token = "0x600BBD7")]
[Address(RVA = "0x1FE5870", Offset = "0x1FE4670", VA = "0x181FE5870")]
static SkeinEngine()
{
ulong[] array = new ulong[4];
RuntimeHelpers.InitializeArray(array, fieldof(<PrivateImplementationDetails>.FCDDAA37B8499E00EB7B606D8540AA64DE5AE4D4).FieldHandle);
SkeinEngine.InitialState(256, 128, array);
RuntimeHelpers.InitializeArray(new ulong[4], fieldof(<PrivateImplementationDetails>.3C3704DB6466D48DD40FE189070F1896D1D45C8B).FieldHandle);
RuntimeHelpers.InitializeArray(new ulong[4], fieldof(<PrivateImplementationDetails>.FD9088D5287E3E3A6699200CB6E5DE3E9FDEDD9F).FieldHandle);
ulong[] array2 = new ulong[4];
RuntimeHelpers.InitializeArray(array2, fieldof(<PrivateImplementationDetails>.0B1E7265E67D2458D8EB536A4B36380A5BF6E731).FieldHandle);
SkeinEngine.InitialState(256, 256, array2);
ulong[] array3 = new ulong[8];
RuntimeHelpers.InitializeArray(array3, fieldof(<PrivateImplementationDetails>.DA7CFA4F9698F5D02C5D90A5858F65EE43B4D564).FieldHandle);
SkeinEngine.InitialState(512, 128, array3);
ulong[] array4 = new ulong[8];
RuntimeHelpers.InitializeArray(array4, fieldof(<PrivateImplementationDetails>.959C1F7BD85779AAF7AA136A20A9C399A5019AEC).FieldHandle);
SkeinEngine.InitialState(512, 160, array4);
ulong[] array5 = new ulong[8];
RuntimeHelpers.InitializeArray(array5, fieldof(<PrivateImplementationDetails>.5318DA9ACB77B4E0953DA6BF6B04DF138D74EA1E).FieldHandle);
SkeinEngine.InitialState(512, 224, array5);
ulong[] array6 = new ulong[8];
RuntimeHelpers.InitializeArray(array6, fieldof(<PrivateImplementationDetails>.F0AEF81E2E3EC0843206EBA7D65BCD1AF83DE7C9).FieldHandle);
SkeinEngine.InitialState(512, 384, array6);
ulong[] array7 = new ulong[8];
RuntimeHelpers.InitializeArray(array7, fieldof(<PrivateImplementationDetails>.118FE9754A9699004D478E4BF686021154D96EAD).FieldHandle);
SkeinEngine.InitialState(512, 512, array7);
}
// Token: 0x0600BBD8 RID: 48088 RVA: 0x002A97AC File Offset: 0x002A79AC
[Token(Token = "0x600BBD8")]
[Address(RVA = "0x1FE5120", Offset = "0x1FE3F20", VA = "0x181FE5120")]
private static void InitialState(int blockSize, int outputSize, ulong[] state)
{
IDictionary initial_STATES = SkeinEngine.INITIAL_STATES;
int num = 0;
if (num < state)
{
num += num;
num++;
}
}
// Token: 0x0600BBD9 RID: 48089 RVA: 0x002A97D4 File Offset: 0x002A79D4
[Token(Token = "0x600BBD9")]
[Address(RVA = "0x1FE5860", Offset = "0x1FE4660", VA = "0x181FE5860")]
private static int VariantIdentifier(int blockSizeBytes, int outputSizeBytes)
{
return outputSizeBytes;
}
// Token: 0x0600BBDA RID: 48090 RVA: 0x002A97E4 File Offset: 0x002A79E4
[Token(Token = "0x600BBDA")]
[Address(RVA = "0x1FE5AE0", Offset = "0x1FE48E0", VA = "0x181FE5AE0")]
public SkeinEngine(int blockSizeBits, int outputSizeBits)
{
/*
An exception occurred when decompiling this method (0600BBDA)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests.SkeinEngine::.ctor(System.Int32,System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_A7:
stloc:ArgumentException(var_12_B7, newobj:ArgumentException(ArgumentException::.ctor, call:string(string::Concat, ldstr:string[exp:object]("Output size must be a multiple of 8 bits. :"), ldloc:int32[exp:object](outputSizeBits))))
}
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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
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: 0x0600BBDB RID: 48091 RVA: 0x002A98AC File Offset: 0x002A7AAC
[Token(Token = "0x600BBDB")]
[Address(RVA = "0x1FE5CD0", Offset = "0x1FE4AD0", VA = "0x181FE5CD0")]
public SkeinEngine(SkeinEngine engine)
{
bool isPartialBlockOkay = engine.threefish.IsPartialBlockOkay;
this.CopyIn(engine);
}
// Token: 0x0600BBDC RID: 48092 RVA: 0x002A98D4 File Offset: 0x002A7AD4
[Token(Token = "0x600BBDC")]
[Address(RVA = "0x1FE3DF0", Offset = "0x1FE2BF0", VA = "0x181FE3DF0")]
private void CopyIn(SkeinEngine engine)
{
SkeinEngine.UBI ubi = this.ubi;
SkeinEngine.UBI ubi2 = engine.ubi;
byte[] currentBlock = ubi2.currentBlock;
byte[] currentBlock2 = ubi.currentBlock;
byte[] array = Arrays.Clone(currentBlock, currentBlock2);
ulong[] message = ubi.message;
ubi.currentBlock = array;
int currentOffset = ubi2.currentOffset;
ubi.currentOffset = currentOffset;
ulong[] array2 = Arrays.Clone(ubi2.message, message);
ubi.message = array2;
SkeinEngine.UbiTweak tweak = ubi.tweak;
SkeinEngine.UbiTweak tweak2 = ubi2.tweak;
ulong[] tweak3 = tweak2.tweak;
ulong[] tweak4 = tweak.tweak;
ulong[] array3 = Arrays.Clone(tweak3, tweak4);
tweak.tweak = array3;
bool extendedPosition = tweak2.extendedPosition;
tweak.extendedPosition = extendedPosition;
ulong[] array4 = engine.chain;
ulong[] array5 = this.chain;
ulong[] array6 = Arrays.Clone(array4, array5);
ulong[] array7 = this.initialState;
this.chain = array6;
ulong[] array8 = Arrays.Clone(engine.initialState, array7);
byte[] array9 = this.key;
this.initialState = array8;
byte[] array10 = Arrays.Clone(engine.key, array9);
SkeinEngine.Parameter[] array11 = this.preMessageParameters;
this.key = array10;
SkeinEngine.Parameter[] array12 = SkeinEngine.Clone(engine.preMessageParameters, array11);
SkeinEngine.Parameter[] array13 = this.postMessageParameters;
this.preMessageParameters = array12;
SkeinEngine.Parameter[] array14 = SkeinEngine.Clone(engine.postMessageParameters, array13);
this.postMessageParameters = array14;
}
// Token: 0x0600BBDD RID: 48093 RVA: 0x002A9A2C File Offset: 0x002A7C2C
[Token(Token = "0x600BBDD")]
[Address(RVA = "0x1FE3D50", Offset = "0x1FE2B50", VA = "0x181FE3D50")]
private static SkeinEngine.Parameter[] Clone(SkeinEngine.Parameter[] data, SkeinEngine.Parameter[] existing)
{
if (data != 0)
{
if (existing != 0)
{
int length = data.Length;
if (existing.Length == length)
{
goto IL_24;
}
}
SkeinEngine.Parameter[] array = new SkeinEngine.Parameter[data.Length];
IL_24:
int length2 = array.Length;
int num = 0;
int num2 = 0;
Array.Copy(data, num2, array, num, length2);
return array;
}
throw new NullReferenceException();
}
// Token: 0x0600BBDE RID: 48094 RVA: 0x002A9A80 File Offset: 0x002A7C80
[Token(Token = "0x600BBDE")]
[Address(RVA = "0x1FE4000", Offset = "0x1FE2E00", VA = "0x181FE4000", Slot = "4")]
public IMemoable Copy()
{
bool isPartialBlockOkay = this.threefish.IsPartialBlockOkay;
SkeinEngine skeinEngine;
skeinEngine.CopyIn(this);
throw new NullReferenceException();
}
// Token: 0x0600BBDF RID: 48095 RVA: 0x002A9AA8 File Offset: 0x002A7CA8
[Token(Token = "0x600BBDF")]
[Address(RVA = "0x1FE5510", Offset = "0x1FE4310", VA = "0x181FE5510", Slot = "5")]
public void Reset(IMemoable other)
{
/*
An exception occurred when decompiling this method (0600BBDF)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests.SkeinEngine::Reset(BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.IMemoable)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_2D:
stloc:MemoableResetException(var_4_37, newobj:MemoableResetException(MemoableResetException::.ctor, ldstr:string("Incompatible parameters in provided SkeinEngine.")))
}
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: 0x17001D26 RID: 7462
// (get) Token: 0x0600BBE0 RID: 48096 RVA: 0x002A9AF0 File Offset: 0x002A7CF0
[Token(Token = "0x17001D26")]
public int OutputSize
{
[Token(Token = "0x600BBE0")]
[Address(RVA = "0x40B720", Offset = "0x40A520", VA = "0x18040B720")]
get
{
return this.outputSizeBytes;
}
}
// Token: 0x17001D27 RID: 7463
// (get) Token: 0x0600BBE1 RID: 48097 RVA: 0x002A9B04 File Offset: 0x002A7D04
[Token(Token = "0x17001D27")]
public int BlockSize
{
[Token(Token = "0x600BBE1")]
[Address(RVA = "0x5F5E10", Offset = "0x5F4C10", VA = "0x1805F5E10")]
get
{
string algorithmName = ((IBlockCipher)this.threefish).AlgorithmName;
throw new NullReferenceException();
}
}
// Token: 0x0600BBE2 RID: 48098 RVA: 0x002A9B24 File Offset: 0x002A7D24
[Token(Token = "0x600BBE2")]
[Address(RVA = "0x1FE5060", Offset = "0x1FE3E60", VA = "0x181FE5060")]
public void Init(SkeinParameters parameters)
{
int num = 0;
this.chain = num;
this.key = num;
this.preMessageParameters = num;
this.postMessageParameters = num;
if (parameters != 0)
{
byte[] array = parameters.GetKey();
IDictionary parameters2 = parameters.parameters;
this.InitParams(parameters2);
}
this.CreateInitialState();
this.UbiInit(48);
}
// Token: 0x0600BBE3 RID: 48099 RVA: 0x002A9B7C File Offset: 0x002A7D7C
[Token(Token = "0x600BBE3")]
[Address(RVA = "0x1FE4C60", Offset = "0x1FE3A60", VA = "0x181FE4C60")]
private void InitParams(IDictionary parameters)
{
int num;
int num3;
do
{
IList list = Platform.CreateArrayList();
IList list2 = Platform.CreateArrayList();
num = 0;
if (num < parameters)
{
num += num;
num++;
}
int num2 = 0;
if (list2 == 0)
{
goto IL_8C;
}
if (num < num2)
{
num += num;
num++;
}
num3 = num;
num += num;
num++;
if (num == 0)
{
num += 19;
num++;
num += 19;
num += 19;
}
}
while (num == 0);
if (num3 != 0)
{
SkeinEngine.Parameter parameter;
parameter.type = num3;
parameter.value = num;
}
IL_8C:
SkeinEngine.Parameter[] array = new SkeinEngine.Parameter[0];
SkeinEngine.Parameter[] array2 = new SkeinEngine.Parameter[array];
}
// Token: 0x0600BBE4 RID: 48100 RVA: 0x002A9C34 File Offset: 0x002A7E34
[Token(Token = "0x600BBE4")]
[Address(RVA = "0x1FE40A0", Offset = "0x1FE2EA0", VA = "0x181FE40A0")]
private void CreateInitialState()
{
bool isPartialBlockOkay;
int num2;
do
{
ThreefishEngine threefishEngine = this.threefish;
IDictionary initial_STATES = SkeinEngine.INITIAL_STATES;
isPartialBlockOkay = threefishEngine.IsPartialBlockOkay;
int num = this.outputSizeBytes;
num2 = 0;
if (!isPartialBlockOkay)
{
}
}
while (!isPartialBlockOkay);
if (this.key == num2 && isPartialBlockOkay)
{
ulong[] array;
this.chain = array;
}
bool isPartialBlockOkay2 = this.threefish.IsPartialBlockOkay;
ulong[] array2 = new ulong[0];
byte[] array3 = this.key;
this.chain = array2;
int length;
int num5;
if (array3 != 0)
{
int num3 = 0;
this.UbiInit(num3);
SkeinEngine.UBI ubi = this.ubi;
ulong[] array4 = this.chain;
int num4 = 0;
length = array3.Length;
ubi.Update(array3, num4, length, array4);
SkeinEngine.UBI ubi2 = this.ubi;
ulong[] array5 = this.chain;
num5 = 0;
ubi2.DoFinal(array5);
}
byte[] array6 = new byte[32];
int num6 = 0;
SkeinEngine.Configuration configuration;
configuration.bytes = array6;
configuration.FieldGetter(num6, num5, length);
byte[] bytes = configuration.bytes;
byte[] bytes2 = configuration.bytes;
byte[] bytes3 = configuration.bytes;
byte[] bytes4 = configuration.bytes;
byte[] bytes5 = configuration.bytes;
configuration.bytes[0] = (byte)num2;
byte[] bytes6 = configuration.bytes;
this.UbiInit(4);
SkeinEngine.UBI ubi3 = this.ubi;
ulong[] array7 = this.chain;
int num7 = 0;
int length2 = bytes6.Length;
ubi3.Update(bytes6, num7, length2, array7);
SkeinEngine.UBI ubi4 = this.ubi;
ulong[] array8 = this.chain;
ubi4.DoFinal(array8);
SkeinEngine.Parameter[] array9 = this.preMessageParameters;
if (array9 != 0 && num2 < array9.Length)
{
SkeinEngine.Parameter parameter = array9[num2];
SkeinEngine.UBI ubi5 = this.ubi;
byte[] value = parameter.value;
int type = parameter.type;
SkeinEngine.UbiTweak tweak = ubi5.tweak;
tweak.tweak[0] = (ulong)num2;
tweak.tweak[1] = (ulong)num2;
ulong[] tweak2 = tweak.tweak;
tweak.extendedPosition = num2 != 0;
ubi5.tweak.tweak[1] = (ulong)type;
ubi5.currentOffset = num2;
SkeinEngine.UBI ubi6 = this.ubi;
ulong[] array10 = this.chain;
int num8 = 0;
int length3 = value.Length;
ubi6.Update(value, num8, length3, array10);
SkeinEngine.UBI ubi7 = this.ubi;
ulong[] array11 = this.chain;
int num9 = ubi7.currentOffset;
int length4 = ubi7.currentBlock.Length;
if (num9 < length4)
{
num9++;
}
ulong[] tweak3 = ubi7.tweak.tweak;
ubi7.ProcessBlock(array11);
SkeinEngine.Parameter[] array12 = this.preMessageParameters;
num2++;
}
ulong[] array13 = Arrays.Clone(this.chain);
this.initialState = array13;
}
// Token: 0x0600BBE5 RID: 48101 RVA: 0x002A9EE0 File Offset: 0x002A80E0
[Token(Token = "0x600BBE5")]
[Address(RVA = "0x1FE54C0", Offset = "0x1FE42C0", VA = "0x181FE54C0")]
public void Reset()
{
ulong[] array = this.chain;
int length = array.Length;
int num = 0;
ulong[] array2 = this.initialState;
int num2 = 0;
Array.Copy(array2, num2, array, num, length);
this.UbiInit(48);
}
// Token: 0x0600BBE6 RID: 48102 RVA: 0x002A9F20 File Offset: 0x002A8120
[Token(Token = "0x600BBE6")]
[Address(RVA = "0x1FE5630", Offset = "0x1FE4430", VA = "0x181FE5630")]
private void UbiComplete(int type, byte[] value)
{
this.UbiInit(type);
SkeinEngine.UBI ubi = this.ubi;
ulong[] array = this.chain;
int num = 0;
int length = value.Length;
ubi.Update(value, num, length, array);
SkeinEngine.UBI ubi2 = this.ubi;
ulong[] array2 = this.chain;
ubi2.DoFinal(array2);
}
// Token: 0x0600BBE7 RID: 48103 RVA: 0x002A9F74 File Offset: 0x002A8174
[Token(Token = "0x600BBE7")]
[Address(RVA = "0x1FE56D0", Offset = "0x1FE44D0", VA = "0x181FE56D0")]
private void UbiInit(int type)
{
SkeinEngine.UBI ubi = this.ubi;
ubi.tweak.Reset();
ubi.tweak.tweak[1] = (ulong)type;
ubi.currentOffset = (int)((ulong)0L);
}
// Token: 0x0600BBE8 RID: 48104 RVA: 0x002A9FB4 File Offset: 0x002A81B4
[Token(Token = "0x600BBE8")]
[Address(RVA = "0x1FE56A0", Offset = "0x1FE44A0", VA = "0x181FE56A0")]
private void UbiFinal()
{
SkeinEngine.UBI ubi = this.ubi;
ulong[] array = this.chain;
ubi.DoFinal(array);
}
// Token: 0x0600BBE9 RID: 48105 RVA: 0x002A9FDC File Offset: 0x002A81DC
[Token(Token = "0x600BBE9")]
[Address(RVA = "0x1FE3CE0", Offset = "0x1FE2AE0", VA = "0x181FE3CE0")]
private void CheckInitialised()
{
/*
An exception occurred when decompiling this method (0600BBE9)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests.SkeinEngine::CheckInitialised()
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_0C:
stloc:ArgumentException(var_0_16, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Skein engine is not initialised.")))
}
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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
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: 0x0600BBEA RID: 48106 RVA: 0x002AA000 File Offset: 0x002A8200
[Token(Token = "0x600BBEA")]
[Address(RVA = "0x1FE5810", Offset = "0x1FE4610", VA = "0x181FE5810")]
public void Update(byte inByte)
{
this.singleByte[0] = inByte;
byte[] array = this.singleByte;
int num = 0;
this.Update(array, num, 1);
}
// Token: 0x0600BBEB RID: 48107 RVA: 0x002AA034 File Offset: 0x002A8234
[Token(Token = "0x600BBEB")]
[Address(RVA = "0x1FE5760", Offset = "0x1FE4560", VA = "0x181FE5760")]
public void Update(byte[] inBytes, int inOff, int len)
{
/*
An exception occurred when decompiling this method (0600BBEB)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests.SkeinEngine::Update(System.Byte[],System.Int32,System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_1D:
stloc:ArgumentException(var_3_27, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Skein engine is not initialised.")))
}
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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
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: 0x0600BBEC RID: 48108 RVA: 0x002AA068 File Offset: 0x002A8268
[Token(Token = "0x600BBEC")]
[Address(RVA = "0x1FE4710", Offset = "0x1FE3510", VA = "0x181FE4710")]
public int DoFinal(byte[] outBytes, int outOff)
{
/*
An exception occurred when decompiling this method (0600BBEC)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests.SkeinEngine::DoFinal(System.Byte[],System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_243:
stloc:ArgumentException(var_37_24D, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Skein engine is not initialised.")))
}
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.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1878
at ICSharpCode.Decompiler.ILAst.ILAstOptimizer.FlattenBasicBlocks(ILNode node) in D:\a\dnSpy\dnSpy\Extensions\ILSpy.Decompiler\ICSharpCode.Decompiler\ICSharpCode.Decompiler\ILAst\ILAstOptimizer.cs:line 1846
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: 0x0600BBED RID: 48109 RVA: 0x002AA2C4 File Offset: 0x002A84C4
[Token(Token = "0x600BBED")]
[Address(RVA = "0x1FE5260", Offset = "0x1FE4060", VA = "0x181FE5260")]
private void Output(ulong outputSequence, byte[] outBytes, int outOff, int outputBytes)
{
byte[] array = new byte[8];
int num = 0;
ThreefishEngine.WordToBytes(outputSequence, array, num);
ulong[] array2 = new ulong[this.chain.Length];
this.UbiInit(63);
SkeinEngine.UBI ubi = this.ubi;
int length = array.Length;
int num2 = 0;
ubi.Update(array, num2, length, array2);
this.ubi.DoFinal(array2);
int num3 = 0;
array2 += array2;
if (array2 > 0)
{
int num4;
if (num4 != 8)
{
ulong num5 = array2[num3];
int num6 = 0;
ThreefishEngine.WordToBytes(num5, array, num6);
}
ThreefishEngine.WordToBytes(array2[num3], outBytes, outOff);
num3++;
}
}
// Token: 0x04007748 RID: 30536
[Token(Token = "0x4007748")]
public const int SKEIN_256 = 256;
// Token: 0x04007749 RID: 30537
[Token(Token = "0x4007749")]
public const int SKEIN_512 = 512;
// Token: 0x0400774A RID: 30538
[Token(Token = "0x400774A")]
public const int SKEIN_1024 = 1024;
// Token: 0x0400774B RID: 30539
[Token(Token = "0x400774B")]
private const int PARAM_TYPE_KEY = 0;
// Token: 0x0400774C RID: 30540
[Token(Token = "0x400774C")]
private const int PARAM_TYPE_CONFIG = 4;
// Token: 0x0400774D RID: 30541
[Token(Token = "0x400774D")]
private const int PARAM_TYPE_MESSAGE = 48;
// Token: 0x0400774E RID: 30542
[Token(Token = "0x400774E")]
private const int PARAM_TYPE_OUTPUT = 63;
// Token: 0x0400774F RID: 30543
[Token(Token = "0x400774F")]
private static readonly IDictionary INITIAL_STATES = Platform.CreateHashtable();
// Token: 0x04007750 RID: 30544
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4007750")]
private readonly ThreefishEngine threefish;
// Token: 0x04007751 RID: 30545
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4007751")]
private readonly int outputSizeBytes;
// Token: 0x04007752 RID: 30546
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x4007752")]
private ulong[] chain;
// Token: 0x04007753 RID: 30547
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x4007753")]
private ulong[] initialState;
// Token: 0x04007754 RID: 30548
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x4007754")]
private byte[] key;
// Token: 0x04007755 RID: 30549
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x4007755")]
private SkeinEngine.Parameter[] preMessageParameters;
// Token: 0x04007756 RID: 30550
[FieldOffset(Offset = "0x40")]
[Token(Token = "0x4007756")]
private SkeinEngine.Parameter[] postMessageParameters;
// Token: 0x04007757 RID: 30551
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x4007757")]
private readonly SkeinEngine.UBI ubi;
// Token: 0x04007758 RID: 30552
[FieldOffset(Offset = "0x50")]
[Token(Token = "0x4007758")]
private readonly byte[] singleByte;
// Token: 0x02001CFF RID: 7423
[Token(Token = "0x2001CFF")]
private class Configuration
{
// Token: 0x0600BBEE RID: 48110 RVA: 0x002AA36C File Offset: 0x002A856C
[Token(Token = "0x600BBEE")]
[Address(RVA = "0x1FD39C0", Offset = "0x1FD27C0", VA = "0x181FD39C0")]
public Configuration(long outputSizeBits)
{
byte[] array = new byte[32];
this.bytes = array;
base..ctor();
byte[] array2 = this.bytes;
byte[] array3 = this.bytes;
byte[] array4 = this.bytes;
byte[] array5 = this.bytes;
byte[] array6 = this.bytes;
byte[] array7 = this.bytes;
byte[] array8 = this.bytes;
ThreefishEngine.WordToBytes((ulong)outputSizeBits, array8, 8);
}
// Token: 0x17001D28 RID: 7464
// (get) Token: 0x0600BBEF RID: 48111 RVA: 0x002AA3D4 File Offset: 0x002A85D4
[Token(Token = "0x17001D28")]
public byte[] Bytes
{
[Token(Token = "0x600BBEF")]
[Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20")]
get
{
return this.bytes;
}
}
// Token: 0x04007759 RID: 30553
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4007759")]
private byte[] bytes;
}
// Token: 0x02001D00 RID: 7424
[Token(Token = "0x2001D00")]
public class Parameter
{
// Token: 0x0600BBF0 RID: 48112 RVA: 0x002AA3E8 File Offset: 0x002A85E8
[Token(Token = "0x600BBF0")]
[Address(RVA = "0x4E6E10", Offset = "0x4E5C10", VA = "0x1804E6E10")]
public Parameter(int type, byte[] value)
{
this.type = type;
this.value = value;
}
// Token: 0x17001D29 RID: 7465
// (get) Token: 0x0600BBF1 RID: 48113 RVA: 0x002AA40C File Offset: 0x002A860C
[Token(Token = "0x17001D29")]
public int Type
{
[Token(Token = "0x600BBF1")]
[Address(RVA = "0x3FA560", Offset = "0x3F9360", VA = "0x1803FA560")]
get
{
return this.type;
}
}
// Token: 0x17001D2A RID: 7466
// (get) Token: 0x0600BBF2 RID: 48114 RVA: 0x002AA420 File Offset: 0x002A8620
[Token(Token = "0x17001D2A")]
public byte[] Value
{
[Token(Token = "0x600BBF2")]
[Address(RVA = "0x3F5F40", Offset = "0x3F4D40", VA = "0x1803F5F40")]
get
{
return this.value;
}
}
// Token: 0x0400775A RID: 30554
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400775A")]
private int type;
// Token: 0x0400775B RID: 30555
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x400775B")]
private byte[] value;
}
// Token: 0x02001D01 RID: 7425
[Token(Token = "0x2001D01")]
private class UbiTweak
{
// Token: 0x0600BBF3 RID: 48115 RVA: 0x002AA434 File Offset: 0x002A8634
[Token(Token = "0x600BBF3")]
[Address(RVA = "0x1FE8B90", Offset = "0x1FE7990", VA = "0x181FE8B90")]
public UbiTweak()
{
ulong[] array = new ulong[2];
this.tweak = array;
base..ctor();
this.Reset();
}
// Token: 0x0600BBF4 RID: 48116 RVA: 0x002AA45C File Offset: 0x002A865C
[Token(Token = "0x600BBF4")]
[Address(RVA = "0x1FE8810", Offset = "0x1FE7610", VA = "0x181FE8810")]
public void Reset(SkeinEngine.UbiTweak tweak)
{
ulong[] array = this.tweak;
ulong[] array2 = Arrays.Clone(tweak.tweak, array);
this.tweak = array2;
bool flag = tweak.extendedPosition;
this.extendedPosition = flag;
}
// Token: 0x0600BBF5 RID: 48117 RVA: 0x002AA498 File Offset: 0x002A8698
[Token(Token = "0x600BBF5")]
[Address(RVA = "0x1FE8780", Offset = "0x1FE7580", VA = "0x181FE8780")]
public void Reset()
{
ulong[] array = this.tweak;
int num = 0;
array[0] = (ulong)num;
this.tweak[1] = (ulong)num;
ulong[] array2 = this.tweak;
this.extendedPosition = num != 0;
}
// Token: 0x17001D2B RID: 7467
// (get) Token: 0x0600BBF6 RID: 48118 RVA: 0x002AA4D8 File Offset: 0x002A86D8
// (set) Token: 0x0600BBF7 RID: 48119 RVA: 0x002AA4F8 File Offset: 0x002A86F8
[Token(Token = "0x17001D2B")]
public uint Type
{
[Token(Token = "0x600BBF6")]
[Address(RVA = "0x1FE8C70", Offset = "0x1FE7A70", VA = "0x181FE8C70")]
get
{
ulong num = this.tweak[1];
throw new NullReferenceException();
}
[Token(Token = "0x600BBF7")]
[Address(RVA = "0x1FE8D90", Offset = "0x1FE7B90", VA = "0x181FE8D90")]
set
{
this.tweak[1] = (ulong)value;
}
}
// Token: 0x17001D2C RID: 7468
// (get) Token: 0x0600BBF8 RID: 48120 RVA: 0x002AA518 File Offset: 0x002A8718
// (set) Token: 0x0600BBF9 RID: 48121 RVA: 0x002AA534 File Offset: 0x002A8734
[Token(Token = "0x17001D2C")]
public bool First
{
[Token(Token = "0x600BBF8")]
[Address(RVA = "0x1FE8C30", Offset = "0x1FE7A30", VA = "0x181FE8C30")]
get
{
ulong[] array = this.tweak;
throw new NullReferenceException();
}
[Token(Token = "0x600BBF9")]
[Address(RVA = "0x1FE8D20", Offset = "0x1FE7B20", VA = "0x181FE8D20")]
set
{
ulong[] array = this.tweak;
if (!value)
{
return;
}
}
}
// Token: 0x17001D2D RID: 7469
// (get) Token: 0x0600BBFA RID: 48122 RVA: 0x002AA554 File Offset: 0x002A8754
// (set) Token: 0x0600BBFB RID: 48123 RVA: 0x002AA570 File Offset: 0x002A8770
[Token(Token = "0x17001D2D")]
public bool Final
{
[Token(Token = "0x600BBFA")]
[Address(RVA = "0x1FE8BF0", Offset = "0x1FE79F0", VA = "0x181FE8BF0")]
get
{
ulong[] array = this.tweak;
throw new IndexOutOfRangeException();
}
[Token(Token = "0x600BBFB")]
[Address(RVA = "0x1FE8CB0", Offset = "0x1FE7AB0", VA = "0x181FE8CB0")]
set
{
ulong[] array = this.tweak;
if (!value)
{
return;
}
}
}
// Token: 0x0600BBFC RID: 48124 RVA: 0x002AA590 File Offset: 0x002A8790
[Token(Token = "0x600BBFC")]
[Address(RVA = "0x1FE84E0", Offset = "0x1FE72E0", VA = "0x181FE84E0")]
public void AdvancePosition(int advance)
{
if (!this.extendedPosition)
{
this.tweak[0] = (ulong)advance;
ulong num;
if ((ulong)advance > num)
{
this.extendedPosition = true;
}
return;
}
ulong[] array = new ulong[3];
ulong num2 = this.tweak[0];
array[0] = num2;
ulong num3 = this.tweak[0];
array[1] = num3;
ulong num4 = this.tweak[1];
array[2] = num4;
int num5 = 0;
int length = array.Length;
if (num5 < length)
{
num5++;
}
ulong[] array2 = this.tweak;
ulong num6 = array[1];
array2[0] = num6;
ulong[] array3 = this.tweak;
ulong num7 = array[2];
array3[1] = num7;
}
// Token: 0x0600BBFD RID: 48125 RVA: 0x002AA65C File Offset: 0x002A885C
[Token(Token = "0x600BBFD")]
[Address(RVA = "0x3F6E20", Offset = "0x3F5C20", VA = "0x1803F6E20")]
public ulong[] GetWords()
{
return this.tweak;
}
// Token: 0x0600BBFE RID: 48126 RVA: 0x002AA670 File Offset: 0x002A8870
[Token(Token = "0x600BBFE")]
[Address(RVA = "0x1FE88B0", Offset = "0x1FE76B0", VA = "0x181FE88B0", Slot = "3")]
public override string ToString()
{
object[] array = new object[5];
ulong num = this.tweak[1];
if (num != (ulong)0L)
{
}
array[0] = num;
if (" first: " != 0)
{
}
array[1] = " first: ";
ulong[] array2 = this.tweak;
string text;
if (text != 0)
{
}
array[2] = text;
if (", final: " != 0)
{
}
array[3] = ", final: ";
ulong[] array3 = this.tweak;
string text2;
if (text2 != 0)
{
}
array[4] = text2;
return string.Concat(array);
}
// Token: 0x0400775C RID: 30556
[Token(Token = "0x400775C")]
private const ulong LOW_RANGE = 18446744069414584320UL;
// Token: 0x0400775D RID: 30557
[Token(Token = "0x400775D")]
private const ulong T1_FINAL = 9223372036854775808UL;
// Token: 0x0400775E RID: 30558
[Token(Token = "0x400775E")]
private const ulong T1_FIRST = 4611686018427387904UL;
// Token: 0x0400775F RID: 30559
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400775F")]
private ulong[] tweak;
// Token: 0x04007760 RID: 30560
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4007760")]
private bool extendedPosition;
}
// Token: 0x02001D02 RID: 7426
[Token(Token = "0x2001D02")]
private class UBI
{
// Token: 0x0600BBFF RID: 48127 RVA: 0x002AA700 File Offset: 0x002A8900
[Token(Token = "0x600BBFF")]
[Address(RVA = "0x1FE83F0", Offset = "0x1FE71F0", VA = "0x181FE83F0")]
public UBI(SkeinEngine engine, int blockSize)
{
SkeinEngine.UbiTweak ubiTweak = new SkeinEngine.UbiTweak();
ulong[] array = new ulong[2];
ubiTweak.tweak = array;
ubiTweak.Reset();
this.tweak = ubiTweak;
base..ctor();
this.engine = engine;
byte[] array2 = new byte[blockSize];
this.currentBlock = array2;
int length = array2.Length;
ulong[] array3 = new ulong[blockSize];
this.message = array3;
}
// Token: 0x0600BC00 RID: 48128 RVA: 0x002AA768 File Offset: 0x002A8968
[Token(Token = "0x600BC00")]
[Address(RVA = "0x1FE80C0", Offset = "0x1FE6EC0", VA = "0x181FE80C0")]
public void Reset(SkeinEngine.UBI ubi)
{
byte[] array = ubi.currentBlock;
byte[] array2 = this.currentBlock;
byte[] array3 = Arrays.Clone(array, array2);
ulong[] array4 = this.message;
this.currentBlock = array3;
int num = ubi.currentOffset;
this.currentOffset = num;
ulong[] array5 = Arrays.Clone(ubi.message, array4);
this.message = array5;
SkeinEngine.UbiTweak ubiTweak = this.tweak;
SkeinEngine.UbiTweak ubiTweak2 = ubi.tweak;
ulong[] array6 = ubiTweak2.tweak;
ulong[] array7 = ubiTweak.tweak;
ulong[] array8 = Arrays.Clone(array6, array7);
ubiTweak.tweak = array8;
bool extendedPosition = ubiTweak2.extendedPosition;
ubiTweak.extendedPosition = extendedPosition;
}
// Token: 0x0600BC01 RID: 48129 RVA: 0x002AA810 File Offset: 0x002A8A10
[Token(Token = "0x600BC01")]
[Address(RVA = "0x1FE81E0", Offset = "0x1FE6FE0", VA = "0x181FE81E0")]
public void Reset(int type)
{
this.tweak.Reset();
this.tweak.tweak[1] = (ulong)type;
this.currentOffset = (int)((ulong)0L);
}
// Token: 0x0600BC02 RID: 48130 RVA: 0x002AA84C File Offset: 0x002A8A4C
[Token(Token = "0x600BC02")]
[Address(RVA = "0x1FE8270", Offset = "0x1FE7070", VA = "0x181FE8270")]
public void Update(byte[] value, int offset, int len, ulong[] output)
{
int num = 0;
if (len > 0)
{
byte[] array = this.currentBlock;
int num2 = this.currentOffset;
if (num2 == array.Length)
{
ulong[] array2 = this.tweak.tweak;
this.currentOffset = (int)((ulong)0L);
}
int num3 = array.Length;
num3 -= num2;
int num4 = Math.Min(len, num3);
int num5 = this.currentOffset;
byte[] array3 = this.currentBlock;
Array.Copy(value, 0, array3, num5, num4);
SkeinEngine.UbiTweak ubiTweak = this.tweak;
num += num4;
ubiTweak.AdvancePosition(num4);
}
}
// Token: 0x0600BC03 RID: 48131 RVA: 0x002AA8DC File Offset: 0x002A8ADC
[Token(Token = "0x600BC03")]
[Address(RVA = "0x1FE7F20", Offset = "0x1FE6D20", VA = "0x181FE7F20")]
private void ProcessBlock(ulong[] output)
{
SkeinEngine skeinEngine = this.engine;
SkeinEngine.UbiTweak ubiTweak = this.tweak;
ThreefishEngine threefish = skeinEngine.threefish;
ulong[] array = ubiTweak.tweak;
int num = 0;
ulong[] chain = skeinEngine.chain;
threefish.Init(16777216 != 0, chain, array);
ulong[] array2 = this.message;
ulong[] array3;
if (num < array2.Length)
{
ulong num2 = ThreefishEngine.BytesToWord(this.currentBlock, 16777216);
num++;
array2[0] = num2;
array3 = this.message;
}
int num3 = this.engine.threefish.ProcessBlock(array3, output);
int length = output.Length;
if (num < length)
{
ulong num4 = this.message[num];
num++;
}
}
// Token: 0x0600BC04 RID: 48132 RVA: 0x002AA99C File Offset: 0x002A8B9C
[Token(Token = "0x600BC04")]
[Address(RVA = "0x1FE7E80", Offset = "0x1FE6C80", VA = "0x181FE7E80")]
public void DoFinal(ulong[] output)
{
byte[] array = this.currentBlock;
int num = this.currentOffset;
if (num < array.Length)
{
num++;
byte[] array2 = this.currentBlock;
}
ulong[] array3 = this.tweak.tweak;
this.ProcessBlock(output);
}
// Token: 0x04007761 RID: 30561
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x4007761")]
private readonly SkeinEngine.UbiTweak tweak;
// Token: 0x04007762 RID: 30562
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4007762")]
private readonly SkeinEngine engine;
// Token: 0x04007763 RID: 30563
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x4007763")]
private byte[] currentBlock;
// Token: 0x04007764 RID: 30564
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x4007764")]
private int currentOffset;
// Token: 0x04007765 RID: 30565
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x4007765")]
private ulong[] message;
}
}
}