633 lines
25 KiB
C#
633 lines
25 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Runtime.InteropServices;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes
|
|
{
|
|
// Token: 0x02001660 RID: 5728
|
|
[Token(Token = "0x2001660")]
|
|
[StructLayout(3)]
|
|
public class OcbBlockCipher : IAeadBlockCipher
|
|
{
|
|
// Token: 0x060098D8 RID: 39128 RVA: 0x0021EFF4 File Offset: 0x0021D1F4
|
|
[Token(Token = "0x60098D8")]
|
|
[Address(RVA = "0x20F75B0", Offset = "0x20F5FB0", VA = "0x1820F75B0")]
|
|
public OcbBlockCipher(IBlockCipher hashCipher, IBlockCipher mainCipher)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (060098D8)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.OcbBlockCipher::.ctor(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IBlockCipher,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IBlockCipher)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_68:
|
|
stloc:ArgumentException(var_5_72, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("'hashCipher' and 'mainCipher' must be the same algorithm")))
|
|
}
|
|
|
|
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: 0x060098D9 RID: 39129 RVA: 0x0021F074 File Offset: 0x0021D274
|
|
[Token(Token = "0x60098D9")]
|
|
[Address(RVA = "0x3C1240", Offset = "0x3BFC40", VA = "0x1803C1240", Slot = "17")]
|
|
public virtual IBlockCipher GetUnderlyingCipher()
|
|
{
|
|
return this.mainCipher;
|
|
}
|
|
|
|
// Token: 0x17001881 RID: 6273
|
|
// (get) Token: 0x060098DA RID: 39130 RVA: 0x0021F088 File Offset: 0x0021D288
|
|
[Token(Token = "0x17001881")]
|
|
public virtual string AlgorithmName
|
|
{
|
|
[Token(Token = "0x60098DA")]
|
|
[Address(RVA = "0x20F7840", Offset = "0x20F6240", VA = "0x1820F7840", Slot = "18")]
|
|
get
|
|
{
|
|
IBlockCipher blockCipher = this.mainCipher;
|
|
return 0 + "/OCB";
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098DB RID: 39131 RVA: 0x0021F0B0 File Offset: 0x0021D2B0
|
|
[Token(Token = "0x60098DB")]
|
|
[Address(RVA = "0x20F6150", Offset = "0x20F4B50", VA = "0x1820F6150", Slot = "19")]
|
|
public virtual void Init(bool forEncryption, ICipherParameters parameters)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (060098DB)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.OcbBlockCipher::Init(System.Boolean,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.ICipherParameters)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_1DF:
|
|
stloc:ArgumentException(var_42_1E9, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("cannot change encrypting state without providing key.")))
|
|
}
|
|
|
|
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: 0x060098DC RID: 39132 RVA: 0x0021F2A8 File Offset: 0x0021D4A8
|
|
[Token(Token = "0x60098DC")]
|
|
[Address(RVA = "0x20F6F50", Offset = "0x20F5950", VA = "0x1820F6F50", Slot = "20")]
|
|
protected virtual int ProcessNonce(byte[] N)
|
|
{
|
|
byte[] array = new byte[16];
|
|
int length = N.Length;
|
|
int num = 0;
|
|
int num2 = array.Length;
|
|
num2 -= length;
|
|
int num3 = 0;
|
|
Array.Copy(N, num3, array, num2, length);
|
|
int num4 = this.macSize;
|
|
array[0] = (byte)num4;
|
|
byte b = array[1];
|
|
array[1] = b;
|
|
byte[] ktopInput = this.KtopInput;
|
|
if (ktopInput == 0 || !Arrays.AreEqual(array, ktopInput))
|
|
{
|
|
byte[] array2 = new byte[16];
|
|
IBlockCipher blockCipher = this.hashCipher;
|
|
this.KtopInput = array;
|
|
byte[] stretch = this.Stretch;
|
|
int num5 = 0;
|
|
int num6 = 0;
|
|
ulong num7;
|
|
Array.Copy(array2, num6, stretch, num5, (int)num7);
|
|
int length2 = array2.Length;
|
|
byte[] stretch2 = this.Stretch;
|
|
num++;
|
|
}
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060098DD RID: 39133 RVA: 0x0021F370 File Offset: 0x0021D570
|
|
[Token(Token = "0x60098DD")]
|
|
[Address(RVA = "0x11B1BB0", Offset = "0x11B05B0", VA = "0x1811B1BB0", Slot = "21")]
|
|
public virtual int GetBlockSize()
|
|
{
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x060098DE RID: 39134 RVA: 0x0021F380 File Offset: 0x0021D580
|
|
[Token(Token = "0x60098DE")]
|
|
[Address(RVA = "0x20F6070", Offset = "0x20F4A70", VA = "0x1820F6070", Slot = "22")]
|
|
public virtual byte[] GetMac()
|
|
{
|
|
byte[] array = this.macBlock;
|
|
if (array == 0)
|
|
{
|
|
}
|
|
return Arrays.Clone(array);
|
|
}
|
|
|
|
// Token: 0x060098DF RID: 39135 RVA: 0x0021F3A0 File Offset: 0x0021D5A0
|
|
[Token(Token = "0x60098DF")]
|
|
[Address(RVA = "0x20F60F0", Offset = "0x20F4AF0", VA = "0x1820F60F0", Slot = "23")]
|
|
public virtual int GetOutputSize(int len)
|
|
{
|
|
int num = this.mainBlockPos;
|
|
int num2 = this.macSize;
|
|
num += len;
|
|
if (this.forEncryption)
|
|
{
|
|
return num2 + num;
|
|
}
|
|
if (num < num2)
|
|
{
|
|
return 0;
|
|
}
|
|
return num - num2;
|
|
}
|
|
|
|
// Token: 0x060098E0 RID: 39136 RVA: 0x0021F3DC File Offset: 0x0021D5DC
|
|
[Token(Token = "0x60098E0")]
|
|
[Address(RVA = "0x20F6120", Offset = "0x20F4B20", VA = "0x1820F6120", Slot = "24")]
|
|
public virtual int GetUpdateOutputSize(int len)
|
|
{
|
|
int num = this.mainBlockPos;
|
|
num += len;
|
|
int num2;
|
|
if (!this.forEncryption)
|
|
{
|
|
num2 = this.macSize;
|
|
num -= num2;
|
|
}
|
|
if (num < num2)
|
|
{
|
|
num++;
|
|
}
|
|
return num - num;
|
|
}
|
|
|
|
// Token: 0x060098E1 RID: 39137 RVA: 0x0021F418 File Offset: 0x0021D618
|
|
[Token(Token = "0x60098E1")]
|
|
[Address(RVA = "0x20F6960", Offset = "0x20F5360", VA = "0x1820F6960", Slot = "25")]
|
|
public virtual void ProcessAadByte(byte input)
|
|
{
|
|
byte[] array = this.hashBlock;
|
|
int num = this.hashBlockPos;
|
|
int num2 = this.hashBlockPos;
|
|
byte[] array2 = this.hashBlock;
|
|
num2++;
|
|
this.hashBlockPos = num2;
|
|
if (num2 == array2.Length)
|
|
{
|
|
string algorithmName = ((IAeadBlockCipher)this).AlgorithmName;
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E2 RID: 39138 RVA: 0x0021F464 File Offset: 0x0021D664
|
|
[Token(Token = "0x60098E2")]
|
|
[Address(RVA = "0x20F69D0", Offset = "0x20F53D0", VA = "0x1820F69D0", Slot = "26")]
|
|
public virtual void ProcessAadBytes(byte[] input, int off, int len)
|
|
{
|
|
if (len > 0)
|
|
{
|
|
byte[] array = this.hashBlock;
|
|
int num = this.hashBlockPos;
|
|
int num2 = this.hashBlockPos;
|
|
byte[] array2 = this.hashBlock;
|
|
num2++;
|
|
this.hashBlockPos = num2;
|
|
if (num2 == array2.Length)
|
|
{
|
|
}
|
|
num2 = off - off;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E3 RID: 39139 RVA: 0x0021F4B4 File Offset: 0x0021D6B4
|
|
[Token(Token = "0x60098E3")]
|
|
[Address(RVA = "0x20F6AB0", Offset = "0x20F54B0", VA = "0x1820F6AB0", Slot = "27")]
|
|
public virtual int ProcessByte(byte input, byte[] output, int outOff)
|
|
{
|
|
byte[] array = this.mainBlock;
|
|
int num = this.mainBlockPos;
|
|
int num2 = this.mainBlockPos;
|
|
byte[] array2 = this.mainBlock;
|
|
num2++;
|
|
this.mainBlockPos = num2;
|
|
if (num2 != array2.Length)
|
|
{
|
|
return 0;
|
|
}
|
|
this.ProcessHashBlock();
|
|
return 16;
|
|
}
|
|
|
|
// Token: 0x060098E4 RID: 39140 RVA: 0x0021F504 File Offset: 0x0021D704
|
|
[Token(Token = "0x60098E4")]
|
|
[Address(RVA = "0x20F6B30", Offset = "0x20F5530", VA = "0x1820F6B30", Slot = "28")]
|
|
public virtual int ProcessBytes(byte[] input, int inOff, int len, byte[] output, int outOff)
|
|
{
|
|
int num = 0;
|
|
if (len > 0)
|
|
{
|
|
byte[] array = this.mainBlock;
|
|
int num2 = this.mainBlockPos;
|
|
int num3 = this.mainBlockPos;
|
|
byte[] array2 = this.mainBlock;
|
|
num3++;
|
|
this.mainBlockPos = num3;
|
|
if (num3 == array2.Length)
|
|
{
|
|
this.ProcessHashBlock();
|
|
num += 16;
|
|
}
|
|
num3 = inOff - inOff;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060098E5 RID: 39141 RVA: 0x0021F56C File Offset: 0x0021D76C
|
|
[Token(Token = "0x60098E5")]
|
|
[Address(RVA = "0x20F58F0", Offset = "0x20F42F0", VA = "0x1820F58F0", Slot = "29")]
|
|
public virtual int DoFinal(byte[] output, int outOff)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (060098E5)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.OcbBlockCipher::DoFinal(System.Byte[],System.Int32)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_205:
|
|
stloc:InvalidCipherTextException(var_40_20F, newobj:InvalidCipherTextException(InvalidCipherTextException::.ctor, ldstr:string("mac check in OCB failed")))
|
|
}
|
|
|
|
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.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: 0x060098E6 RID: 39142 RVA: 0x0021F78C File Offset: 0x0021D98C
|
|
[Token(Token = "0x60098E6")]
|
|
[Address(RVA = "0x20F7300", Offset = "0x20F5D00", VA = "0x1820F7300", Slot = "30")]
|
|
public virtual void Reset()
|
|
{
|
|
string algorithmName = ((IAeadBlockCipher)this).AlgorithmName;
|
|
}
|
|
|
|
// Token: 0x060098E7 RID: 39143 RVA: 0x0021F7A0 File Offset: 0x0021D9A0
|
|
[Token(Token = "0x60098E7")]
|
|
[Address(RVA = "0x20F58D0", Offset = "0x20F42D0", VA = "0x1820F58D0", Slot = "31")]
|
|
protected virtual void Clear(byte[] bs)
|
|
{
|
|
if (bs != 0)
|
|
{
|
|
int length = bs.Length;
|
|
int num = 0;
|
|
Array.Clear(bs, num, length);
|
|
return;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E8 RID: 39144 RVA: 0x0021F7C4 File Offset: 0x0021D9C4
|
|
[Token(Token = "0x60098E8")]
|
|
[Address(RVA = "0x20F5D70", Offset = "0x20F4770", VA = "0x1820F5D70", Slot = "32")]
|
|
protected virtual byte[] GetLSub(int n)
|
|
{
|
|
int num;
|
|
int num4;
|
|
do
|
|
{
|
|
IList l = this.L;
|
|
num = 0;
|
|
num += num;
|
|
num++;
|
|
IList l2 = this.L;
|
|
uint num2;
|
|
if (num < (int)num2)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
uint num3;
|
|
if (num < (int)num3)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
num4 = 0;
|
|
if (num == 0)
|
|
{
|
|
num++;
|
|
num += 19;
|
|
num++;
|
|
num += 19;
|
|
num += 19;
|
|
}
|
|
}
|
|
while (num == 0);
|
|
if (num < num4)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
IList l3 = this.L;
|
|
byte[] array;
|
|
array += array;
|
|
byte b;
|
|
return b;
|
|
}
|
|
|
|
// Token: 0x060098E9 RID: 39145 RVA: 0x0021F844 File Offset: 0x0021DA44
|
|
[Token(Token = "0x60098E9")]
|
|
[Address(RVA = "0x20F6C30", Offset = "0x20F5630", VA = "0x1820F6C30", Slot = "33")]
|
|
protected virtual void ProcessHashBlock()
|
|
{
|
|
long num = this.hashBlockCount;
|
|
this.hashBlockCount = num;
|
|
int num2 = 0;
|
|
num2++;
|
|
this.hashBlockPos = (int)((ulong)0L);
|
|
}
|
|
|
|
// Token: 0x060098EA RID: 39146 RVA: 0x0021F870 File Offset: 0x0021DA70
|
|
[Token(Token = "0x60098EA")]
|
|
[Address(RVA = "0x20F6CA0", Offset = "0x20F56A0", VA = "0x1820F6CA0", Slot = "34")]
|
|
protected virtual void ProcessMainBlock(byte[] output, int outOff)
|
|
{
|
|
int num = 0;
|
|
Check.DataLength(output, outOff, 16, "Output buffer too short");
|
|
if ((this.forEncryption ? 1 : 0) != num)
|
|
{
|
|
byte[] array = this.mainBlock;
|
|
OcbBlockCipher.Xor(this.Checksum, array);
|
|
this.mainBlockPos = num;
|
|
}
|
|
long num2 = this.mainBlockCount;
|
|
byte[] offsetMAIN = this.OffsetMAIN;
|
|
this.mainBlockCount = num2;
|
|
if ((this.forEncryption ? 1 : 0) != num)
|
|
{
|
|
num++;
|
|
}
|
|
byte[] array2 = this.mainBlock;
|
|
byte[] offsetMAIN2 = this.OffsetMAIN;
|
|
IBlockCipher blockCipher = this.mainCipher;
|
|
byte[] array3 = this.mainBlock;
|
|
byte[] array4 = this.mainBlock;
|
|
byte[] offsetMAIN3 = this.OffsetMAIN;
|
|
byte[] array5 = this.mainBlock;
|
|
int num3 = 0;
|
|
ulong num4;
|
|
Array.Copy(array5, num3, output, outOff, (int)num4);
|
|
if ((this.forEncryption ? 1 : 0) == num)
|
|
{
|
|
byte[] array6 = this.mainBlock;
|
|
OcbBlockCipher.Xor(this.Checksum, array6);
|
|
byte[] array7 = this.mainBlock;
|
|
int num5 = 0;
|
|
int num6 = this.macSize;
|
|
Array.Copy(array7, 16, array7, num5, num6);
|
|
int num7 = this.macSize;
|
|
this.mainBlockPos = num7;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098EB RID: 39147 RVA: 0x0021F970 File Offset: 0x0021DB70
|
|
[Token(Token = "0x60098EB")]
|
|
[Address(RVA = "0x20F7190", Offset = "0x20F5B90", VA = "0x1820F7190", Slot = "35")]
|
|
protected virtual void Reset(bool clearMac)
|
|
{
|
|
IBlockCipher blockCipher = this.hashCipher;
|
|
IBlockCipher blockCipher2 = this.mainCipher;
|
|
this.Reset();
|
|
this.Reset();
|
|
int num = 0;
|
|
this.hashBlockPos = num;
|
|
this.hashBlockCount = (long)num;
|
|
this.mainBlockCount = (long)num;
|
|
this.Reset();
|
|
this.Reset();
|
|
byte[] offsetMAIN = this.OffsetMAIN;
|
|
int num2 = 0;
|
|
byte[] offsetMAIN_ = this.OffsetMAIN_0;
|
|
int num3 = 0;
|
|
ulong num4;
|
|
Array.Copy(offsetMAIN_, num3, offsetMAIN, num2, (int)num4);
|
|
this.Reset();
|
|
if (clearMac)
|
|
{
|
|
this.macBlock = num;
|
|
}
|
|
byte[] array = this.initialAssociatedText;
|
|
if (array != 0)
|
|
{
|
|
this.ProcessAadByte(array);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098EC RID: 39148 RVA: 0x0021FA0C File Offset: 0x0021DC0C
|
|
[Token(Token = "0x60098EC")]
|
|
[Address(RVA = "0x20F73A0", Offset = "0x20F5DA0", VA = "0x1820F73A0", Slot = "36")]
|
|
protected virtual void UpdateHASH(byte[] LSub)
|
|
{
|
|
byte[] offsetHASH = this.OffsetHASH;
|
|
byte[] offsetHASH2 = this.OffsetHASH;
|
|
byte[] array = this.hashBlock;
|
|
IBlockCipher blockCipher = this.hashCipher;
|
|
byte[] array2 = this.hashBlock;
|
|
byte[] sum = this.Sum;
|
|
byte[] array3 = this.hashBlock;
|
|
}
|
|
|
|
// Token: 0x060098ED RID: 39149 RVA: 0x0021FA58 File Offset: 0x0021DC58
|
|
[Token(Token = "0x60098ED")]
|
|
[Address(RVA = "0x20F67D0", Offset = "0x20F51D0", VA = "0x1820F67D0")]
|
|
protected static byte[] OCB_double(byte[] block)
|
|
{
|
|
byte[] array = new byte[16];
|
|
byte b;
|
|
b += b;
|
|
uint num;
|
|
num -= (uint)b;
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x060098EE RID: 39150 RVA: 0x0021FA7C File Offset: 0x0021DC7C
|
|
[Token(Token = "0x60098EE")]
|
|
[Address(RVA = "0x20F68C0", Offset = "0x20F52C0", VA = "0x1820F68C0")]
|
|
protected static void OCB_extend(byte[] block, int pos)
|
|
{
|
|
int num = pos + 1;
|
|
if (num < 16)
|
|
{
|
|
num++;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098EF RID: 39151 RVA: 0x0021FA9C File Offset: 0x0021DC9C
|
|
[Token(Token = "0x60098EF")]
|
|
[Address(RVA = "0x20F6930", Offset = "0x20F5330", VA = "0x1820F6930")]
|
|
protected static int OCB_ntz(long x)
|
|
{
|
|
int num = 0;
|
|
return num + 1;
|
|
}
|
|
|
|
// Token: 0x060098F0 RID: 39152 RVA: 0x0021FAB4 File Offset: 0x0021DCB4
|
|
[Token(Token = "0x60098F0")]
|
|
[Address(RVA = "0x20F7320", Offset = "0x20F5D20", VA = "0x1820F7320")]
|
|
protected static int ShiftLeft(byte[] block, byte[] output)
|
|
{
|
|
byte b;
|
|
b += b;
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060098F1 RID: 39153 RVA: 0x0021FACC File Offset: 0x0021DCCC
|
|
[Token(Token = "0x60098F1")]
|
|
[Address(RVA = "0x20F7540", Offset = "0x20F5F40", VA = "0x1820F7540")]
|
|
protected static void Xor(byte[] block, byte[] val)
|
|
{
|
|
}
|
|
|
|
// Token: 0x0400646F RID: 25711
|
|
[Token(Token = "0x400646F")]
|
|
private const int BLOCK_SIZE = 16;
|
|
|
|
// Token: 0x04006470 RID: 25712
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x10")]
|
|
[Token(Token = "0x4006470")]
|
|
private readonly IBlockCipher hashCipher;
|
|
|
|
// Token: 0x04006471 RID: 25713
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x18")]
|
|
[Token(Token = "0x4006471")]
|
|
private readonly IBlockCipher mainCipher;
|
|
|
|
// Token: 0x04006472 RID: 25714
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x20")]
|
|
[Token(Token = "0x4006472")]
|
|
private bool forEncryption;
|
|
|
|
// Token: 0x04006473 RID: 25715
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x24")]
|
|
[Token(Token = "0x4006473")]
|
|
private int macSize;
|
|
|
|
// Token: 0x04006474 RID: 25716
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x28")]
|
|
[Token(Token = "0x4006474")]
|
|
private byte[] initialAssociatedText;
|
|
|
|
// Token: 0x04006475 RID: 25717
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4006475")]
|
|
private IList L;
|
|
|
|
// Token: 0x04006476 RID: 25718
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4006476")]
|
|
private byte[] L_Asterisk;
|
|
|
|
// Token: 0x04006477 RID: 25719
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4006477")]
|
|
private byte[] L_Dollar;
|
|
|
|
// Token: 0x04006478 RID: 25720
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4006478")]
|
|
private byte[] KtopInput;
|
|
|
|
// Token: 0x04006479 RID: 25721
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4006479")]
|
|
private byte[] Stretch;
|
|
|
|
// Token: 0x0400647A RID: 25722
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x400647A")]
|
|
private byte[] OffsetMAIN_0;
|
|
|
|
// Token: 0x0400647B RID: 25723
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x400647B")]
|
|
private byte[] hashBlock;
|
|
|
|
// Token: 0x0400647C RID: 25724
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x400647C")]
|
|
private byte[] mainBlock;
|
|
|
|
// Token: 0x0400647D RID: 25725
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x70")]
|
|
[Token(Token = "0x400647D")]
|
|
private int hashBlockPos;
|
|
|
|
// Token: 0x0400647E RID: 25726
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x74")]
|
|
[Token(Token = "0x400647E")]
|
|
private int mainBlockPos;
|
|
|
|
// Token: 0x0400647F RID: 25727
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x78")]
|
|
[Token(Token = "0x400647F")]
|
|
private long hashBlockCount;
|
|
|
|
// Token: 0x04006480 RID: 25728
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x80")]
|
|
[Token(Token = "0x4006480")]
|
|
private long mainBlockCount;
|
|
|
|
// Token: 0x04006481 RID: 25729
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x88")]
|
|
[Token(Token = "0x4006481")]
|
|
private byte[] OffsetHASH;
|
|
|
|
// Token: 0x04006482 RID: 25730
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x90")]
|
|
[Token(Token = "0x4006482")]
|
|
private byte[] Sum;
|
|
|
|
// Token: 0x04006483 RID: 25731
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0x98")]
|
|
[Token(Token = "0x4006483")]
|
|
private byte[] OffsetMAIN;
|
|
|
|
// Token: 0x04006484 RID: 25732
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xA0")]
|
|
[Token(Token = "0x4006484")]
|
|
private byte[] Checksum;
|
|
|
|
// Token: 0x04006485 RID: 25733
|
|
[global::Cpp2IlInjected.FieldOffset(Offset = "0xA8")]
|
|
[Token(Token = "0x4006485")]
|
|
private byte[] macBlock;
|
|
}
|
|
}
|