Files
27Aug2021-Cpp2IL-Dump/Assembly-CSharp/BestHTTP/SecureProtocol/Org/BouncyCastle/Crypto/Modes/GcmBlockCipher.cs
T
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

711 lines
35 KiB
C#

using System;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.Gcm;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
using Cpp2IlInjected;
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes
{
// Token: 0x02001D18 RID: 7448
[Token(Token = "0x2001D18")]
public sealed class GcmBlockCipher : IAeadBlockCipher
{
// Token: 0x0600B82C RID: 47148 RVA: 0x0027D940 File Offset: 0x0027BB40
[Token(Token = "0x600B82C")]
[Address(RVA = "0x22D99A0", Offset = "0x22D89A0", VA = "0x1822D99A0")]
public GcmBlockCipher(IBlockCipher c)
{
/*
An exception occurred when decompiling this method (0600B82C)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.GcmBlockCipher::.ctor(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IBlockCipher)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_37:
stloc:ArgumentException(var_4_4C, newobj:ArgumentException(ArgumentException::.ctor, call:string(string::Concat, ldstr:string[exp:object]("cipher required with a block size of "), ldloc:int32[exp:object](var_3), ldstr:string[exp:object]("."))))
}
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: 0x0600B82D RID: 47149 RVA: 0x0027D99C File Offset: 0x0027BB9C
[Token(Token = "0x600B82D")]
[Address(RVA = "0x22D9AB0", Offset = "0x22D8AB0", VA = "0x1822D9AB0")]
public GcmBlockCipher(IBlockCipher c, IGcmMultiplier m)
{
/*
An exception occurred when decompiling this method (0600B82D)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.GcmBlockCipher::.ctor(BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IBlockCipher,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.Gcm.IGcmMultiplier)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_3B:
stloc:ArgumentException(var_4_50, newobj:ArgumentException(ArgumentException::.ctor, call:string(string::Concat, ldstr:string[exp:object]("cipher required with a block size of "), ldloc:int32[exp:object](var_3), ldstr:string[exp:object]("."))))
}
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: 0x17001D18 RID: 7448
// (get) Token: 0x0600B82E RID: 47150 RVA: 0x0027D9FC File Offset: 0x0027BBFC
[Token(Token = "0x17001D18")]
public string AlgorithmName
{
[Token(Token = "0x600B82E")]
[Address(RVA = "0x22D9E90", Offset = "0x22D8E90", VA = "0x1822D9E90", Slot = "4")]
get
{
IBlockCipher blockCipher = this.cipher;
return 0 + "/GCM";
}
}
// Token: 0x0600B82F RID: 47151 RVA: 0x0027DA24 File Offset: 0x0027BC24
[Token(Token = "0x600B82F")]
[Address(RVA = "0x4157B0", Offset = "0x4147B0", VA = "0x1804157B0", Slot = "5")]
public IBlockCipher GetUnderlyingCipher()
{
return this.cipher;
}
// Token: 0x0600B830 RID: 47152 RVA: 0x0027DA38 File Offset: 0x0027BC38
[Token(Token = "0x600B830")]
[Address(RVA = "0x8BB9C0", Offset = "0x8BA9C0", VA = "0x1808BB9C0", Slot = "7")]
public int GetBlockSize()
{
return 16;
}
// Token: 0x0600B831 RID: 47153 RVA: 0x0027DA48 File Offset: 0x0027BC48
[Token(Token = "0x600B831")]
[Address(RVA = "0x22D8820", Offset = "0x22D7820", VA = "0x1822D8820", Slot = "6")]
public void Init(bool forEncryption, ICipherParameters parameters)
{
/*
An exception occurred when decompiling this method (0600B831)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.GcmBlockCipher::Init(System.Boolean,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.ICipherParameters)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_291:
stloc:ArgumentException(var_45_29B, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("Key must be specified in initial init")))
}
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: 0x0600B832 RID: 47154 RVA: 0x0027DCF4 File Offset: 0x0027BEF4
[Token(Token = "0x600B832")]
[Address(RVA = "0x22D84D0", Offset = "0x22D74D0", VA = "0x1822D84D0", Slot = "13")]
public byte[] GetMac()
{
byte[] array = this.macBlock;
if (array == 0)
{
}
return Arrays.Clone(array);
}
// Token: 0x0600B833 RID: 47155 RVA: 0x0027DD14 File Offset: 0x0027BF14
[Token(Token = "0x600B833")]
[Address(RVA = "0x22D8700", Offset = "0x22D7700", VA = "0x1822D8700", Slot = "15")]
public int GetOutputSize(int len)
{
int num = this.bufOff;
int num2 = this.macSize;
num += len;
if (this.forEncryption)
{
return num2 + num;
}
if (num < num2)
{
return 0;
}
return num - num2;
}
// Token: 0x0600B834 RID: 47156 RVA: 0x0027DD50 File Offset: 0x0027BF50
[Token(Token = "0x600B834")]
[Address(RVA = "0x22D8730", Offset = "0x22D7730", VA = "0x1822D8730", Slot = "14")]
public int GetUpdateOutputSize(int len)
{
int num = this.bufOff;
num += len;
int num2;
if (!this.forEncryption)
{
num2 = this.macSize;
num -= num2;
}
if (num < num2)
{
num++;
}
return num - num;
}
// Token: 0x0600B835 RID: 47157 RVA: 0x0027DD8C File Offset: 0x0027BF8C
[Token(Token = "0x600B835")]
[Address(RVA = "0x22D8F90", Offset = "0x22D7F90", VA = "0x1822D8F90", Slot = "8")]
public void ProcessAadByte(byte input)
{
this.CheckStatus();
byte[] array = this.atBlock;
int num = this.atBlockPos;
int num2 = this.atBlockPos;
num2++;
this.atBlockPos = num2;
if (num2 == 16)
{
byte[] array2 = this.atBlock;
byte[] s_at = this.S_at;
this.gHASHBlock(s_at, array2);
this.atBlockPos = (int)((ulong)0L);
}
}
// Token: 0x0600B836 RID: 47158 RVA: 0x0027DDEC File Offset: 0x0027BFEC
[Token(Token = "0x600B836")]
[Address(RVA = "0x22D9020", Offset = "0x22D8020", VA = "0x1822D9020", Slot = "9")]
public void ProcessAadBytes(byte[] inBytes, int inOff, int len)
{
this.CheckStatus();
if (len > 0)
{
int num = 0;
byte[] array = this.atBlock;
int num2 = this.atBlockPos;
int num3 = this.atBlockPos;
num3++;
this.atBlockPos = num3;
if (num3 == 16)
{
byte[] array2 = this.atBlock;
byte[] s_at = this.S_at;
this.gHASHBlock(s_at, array2);
this.atBlockPos = num;
}
num3 = inOff - inOff;
}
}
// Token: 0x0600B837 RID: 47159 RVA: 0x0027DE60 File Offset: 0x0027C060
[Token(Token = "0x600B837")]
[Address(RVA = "0x22D8760", Offset = "0x22D7760", VA = "0x1822D8760")]
private void InitCipher()
{
if (this.atLength > (ulong)0L)
{
byte[] s_atPre = this.S_atPre;
int num = 0;
byte[] s_at = this.S_at;
int num2 = 0;
ulong num3;
Array.Copy(s_at, num2, s_atPre, num, (int)num3);
ulong num4 = this.atLength;
this.atLengthPre = num4;
}
int num5 = this.atBlockPos;
if (num5 > 0)
{
byte[] array = this.atBlock;
int num6 = 0;
byte[] s_atPre2 = this.S_atPre;
this.gHASHPartial(s_atPre2, array, num6, num5);
}
if (this.atLengthPre != (ulong)0L)
{
byte[] s = this.S;
int num7 = 0;
byte[] s_atPre3 = this.S_atPre;
int num8 = 0;
ulong num9;
Array.Copy(s_atPre3, num8, s, num7, (int)num9);
}
}
// Token: 0x0600B838 RID: 47160 RVA: 0x0027DF04 File Offset: 0x0027C104
[Token(Token = "0x600B838")]
[Address(RVA = "0x22D9300", Offset = "0x22D8300", VA = "0x1822D9300", Slot = "10")]
public int ProcessByte(byte input, byte[] output, int outOff)
{
this.CheckStatus();
byte[] array = this.bufBlock;
int num = this.bufOff;
int num2 = this.bufOff;
byte[] array2 = this.bufBlock;
num2++;
this.bufOff = num2;
if (num2 != array2.Length)
{
return 0;
}
int num3 = 0;
int num4 = 0;
this.ProcessBlock(array2, num4, output, outOff);
int num7;
if ((this.forEncryption ? 1 : 0) == num3)
{
byte[] array3 = this.bufBlock;
int num5 = this.macSize;
int num6 = 0;
Array.Copy(array3, 16, array3, num6, num5);
num7 = this.macSize;
}
this.bufOff = num7;
throw new NullReferenceException();
}
// Token: 0x0600B839 RID: 47161 RVA: 0x0027DF9C File Offset: 0x0027C19C
[Token(Token = "0x600B839")]
[Address(RVA = "0x22D93E0", Offset = "0x22D83E0", VA = "0x1822D93E0", Slot = "11")]
public int ProcessBytes(byte[] input, int inOff, int len, byte[] output, int outOff)
{
this.CheckStatus();
Check.DataLength(input, inOff, inOff, "input buffer too short");
int num = 0;
if ((this.forEncryption ? 1 : 0) == num)
{
if (len <= 0)
{
return num;
}
byte[] array = this.bufBlock;
int num2 = this.bufOff;
int num3 = this.bufOff;
byte[] array2 = this.bufBlock;
num3++;
this.bufOff = num3;
if (num3 == array2.Length)
{
byte[] array3 = this.bufBlock;
int num4 = 0;
int num5 = this.macSize;
Array.Copy(array3, 16, array3, num4, num5);
int num6 = this.macSize;
num += 16;
this.bufOff = num6;
}
num3 = inOff - inOff;
}
if (this.bufOff != 0 && len > 0)
{
byte[] array4 = this.bufBlock;
int num7 = this.bufOff;
num7++;
this.bufOff = num7;
if (num7 == 16)
{
this.bufOff = num;
throw new NullReferenceException();
}
}
num += 16;
while (len != 16)
{
}
if (len > 0)
{
byte[] array5 = this.bufBlock;
int num8 = 0;
Array.Copy(input, inOff, array5, num8, len);
this.bufOff = len;
}
return num;
}
// Token: 0x0600B83A RID: 47162 RVA: 0x0027E0B4 File Offset: 0x0027C2B4
[Token(Token = "0x600B83A")]
[Address(RVA = "0x22D7F30", Offset = "0x22D6F30", VA = "0x1822D7F30", Slot = "12")]
public int DoFinal(byte[] output, int outOff)
{
/*
An exception occurred when decompiling this method (0600B83A)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Int32 BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.GcmBlockCipher::DoFinal(System.Byte[],System.Int32)
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_2BD:
stloc:InvalidCipherTextException(var_50_2C7, newobj:InvalidCipherTextException(InvalidCipherTextException::.ctor, ldstr:string("mac check in GCM 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: 0x0600B83B RID: 47163 RVA: 0x0027E38C File Offset: 0x0027C58C
[Token(Token = "0x600B83B")]
[Address(RVA = "0x22D97F0", Offset = "0x22D87F0", VA = "0x1822D97F0", Slot = "16")]
public void Reset()
{
this.Reset(true);
}
// Token: 0x0600B83C RID: 47164 RVA: 0x0027E3A0 File Offset: 0x0027C5A0
[Token(Token = "0x600B83C")]
[Address(RVA = "0x22D9800", Offset = "0x22D8800", VA = "0x1822D9800")]
private void Reset(bool clearMac)
{
IBlockCipher blockCipher = this.cipher;
byte[] array = new byte[16];
this.S = array;
byte[] array2 = new byte[16];
this.S_at = array2;
byte[] array3 = new byte[16];
this.S_atPre = array3;
byte[] array4 = new byte[16];
byte[] j = this.J0;
int num = 0;
this.atBlockPos = num;
this.atLength = (ulong)num;
this.atLengthPre = (ulong)num;
this.atBlock = array4;
byte[] array5 = Arrays.Clone(j);
byte[] array6 = this.bufBlock;
this.counter = array5;
this.blocksRemaining = (uint)((ulong)4294967294L);
this.bufOff = num;
this.totalLength = (ulong)num;
if (array6 != 0)
{
int num2 = 0;
Arrays.Fill(array6, (byte)num2);
}
if (clearMac)
{
this.macBlock = num;
}
if ((this.forEncryption ? 1 : 0) == num)
{
byte[] array7 = this.initialAssociatedText;
if (array7 != 0)
{
int length = array7.Length;
int num3 = 0;
this.ProcessAadBytes(array7, num3, length);
}
return;
}
}
// Token: 0x0600B83D RID: 47165 RVA: 0x0027E4A4 File Offset: 0x0027C6A4
[Token(Token = "0x600B83D")]
[Address(RVA = "0x22D9120", Offset = "0x22D8120", VA = "0x1822D9120")]
private void ProcessBlock(byte[] buf, int bufOff, byte[] output, int outOff)
{
if (this.totalLength == (ulong)0L)
{
this.InitCipher();
}
byte[] array = this.ctrBlock;
this.GetNextCtrBlock(array);
if (!this.forEncryption)
{
GcmUtilities.Xor(this.S, buf, bufOff);
IGcmMultiplier gcmMultiplier = this.multiplier;
byte[] array2 = this.ctrBlock;
}
GcmUtilities.Xor(this.ctrBlock, buf, bufOff);
byte[] array3 = this.ctrBlock;
byte[] s = this.S;
this.gHASHBlock(s, array3);
byte[] array4 = this.ctrBlock;
}
// Token: 0x0600B83E RID: 47166 RVA: 0x0027E52C File Offset: 0x0027C72C
[Token(Token = "0x600B83E")]
[Address(RVA = "0x22D96B0", Offset = "0x22D86B0", VA = "0x1822D96B0")]
private void ProcessPartial(byte[] buf, int off, int len, byte[] output, int outOff)
{
byte[] array = this.ctrBlock;
this.GetNextCtrBlock(array);
if (!this.forEncryption)
{
byte[] s = this.S;
this.gHASHPartial(s, buf, len, len);
byte[] array2 = this.ctrBlock;
int num = 0;
GcmUtilities.Xor(buf, off, array2, num, len);
}
byte[] array3 = this.ctrBlock;
int num2 = 0;
GcmUtilities.Xor(buf, off, array3, num2, len);
byte[] s2 = this.S;
this.gHASHPartial(s2, buf, off, len);
}
// Token: 0x0600B83F RID: 47167 RVA: 0x0027E5A8 File Offset: 0x0027C7A8
[Token(Token = "0x600B83F")]
[Address(RVA = "0x22D9DC0", Offset = "0x22D8DC0", VA = "0x1822D9DC0")]
private void gHASH(byte[] Y, byte[] b, int len)
{
int num = 0;
if (len > 0)
{
int num2 = Math.Min(len, 16);
this.gHASHPartial(Y, b, num, num2);
num += 16;
}
}
// Token: 0x0600B840 RID: 47168 RVA: 0x0027E5D4 File Offset: 0x0027C7D4
[Token(Token = "0x600B840")]
[Address(RVA = "0x22D9C70", Offset = "0x22D8C70", VA = "0x1822D9C70")]
private void gHASHBlock(byte[] Y, byte[] b)
{
GcmUtilities.Xor(Y, b);
IGcmMultiplier gcmMultiplier = this.multiplier;
throw new NullReferenceException();
}
// Token: 0x0600B841 RID: 47169 RVA: 0x0027E5F4 File Offset: 0x0027C7F4
[Token(Token = "0x600B841")]
[Address(RVA = "0x22D9BC0", Offset = "0x22D8BC0", VA = "0x1822D9BC0")]
private void gHASHBlock(byte[] Y, byte[] b, int off)
{
GcmUtilities.Xor(Y, b, off);
IGcmMultiplier gcmMultiplier = this.multiplier;
throw new NullReferenceException();
}
// Token: 0x0600B842 RID: 47170 RVA: 0x0027E618 File Offset: 0x0027C818
[Token(Token = "0x600B842")]
[Address(RVA = "0x22D9D10", Offset = "0x22D8D10", VA = "0x1822D9D10")]
private void gHASHPartial(byte[] Y, byte[] b, int off, int len)
{
IGcmMultiplier gcmMultiplier = this.multiplier;
throw new NullReferenceException();
}
// Token: 0x0600B843 RID: 47171 RVA: 0x0027E634 File Offset: 0x0027C834
[Token(Token = "0x600B843")]
[Address(RVA = "0x22D8550", Offset = "0x22D7550", VA = "0x1822D8550")]
private void GetNextCtrBlock(byte[] block)
{
/*
An exception occurred when decompiling this method (0600B843)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.GcmBlockCipher::GetNextCtrBlock(System.Byte[])
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_9E:
stloc:InvalidOperationException(var_11_A8, newobj:InvalidOperationException(InvalidOperationException::.ctor, ldstr:string("Attempt to process too many blocks")))
}
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: 0x0600B844 RID: 47172 RVA: 0x0027E6EC File Offset: 0x0027C8EC
[Token(Token = "0x600B844")]
[Address(RVA = "0x22D7E90", Offset = "0x22D6E90", VA = "0x1822D7E90")]
private void CheckStatus()
{
/*
An exception occurred when decompiling this method (0600B844)
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes.GcmBlockCipher::CheckStatus()
---> System.Exception: Basic block has to end with unconditional control flow.
{
IL_13:
stloc:InvalidOperationException(var_0_1D, newobj:InvalidOperationException(InvalidOperationException::.ctor, ldstr:string("GCM cipher cannot be reused for encryption")))
}
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: 0x0400742E RID: 29742
[Token(Token = "0x400742E")]
private const int BlockSize = 16;
// Token: 0x0400742F RID: 29743
[FieldOffset(Offset = "0x10")]
[Token(Token = "0x400742F")]
private byte[] ctrBlock;
// Token: 0x04007430 RID: 29744
[FieldOffset(Offset = "0x18")]
[Token(Token = "0x4007430")]
private readonly IBlockCipher cipher;
// Token: 0x04007431 RID: 29745
[FieldOffset(Offset = "0x20")]
[Token(Token = "0x4007431")]
private readonly IGcmMultiplier multiplier;
// Token: 0x04007432 RID: 29746
[FieldOffset(Offset = "0x28")]
[Token(Token = "0x4007432")]
private IGcmExponentiator exp;
// Token: 0x04007433 RID: 29747
[FieldOffset(Offset = "0x30")]
[Token(Token = "0x4007433")]
private bool forEncryption;
// Token: 0x04007434 RID: 29748
[FieldOffset(Offset = "0x31")]
[Token(Token = "0x4007434")]
private bool initialised;
// Token: 0x04007435 RID: 29749
[FieldOffset(Offset = "0x34")]
[Token(Token = "0x4007435")]
private int macSize;
// Token: 0x04007436 RID: 29750
[FieldOffset(Offset = "0x38")]
[Token(Token = "0x4007436")]
private byte[] lastKey;
// Token: 0x04007437 RID: 29751
[FieldOffset(Offset = "0x40")]
[Token(Token = "0x4007437")]
private byte[] nonce;
// Token: 0x04007438 RID: 29752
[FieldOffset(Offset = "0x48")]
[Token(Token = "0x4007438")]
private byte[] initialAssociatedText;
// Token: 0x04007439 RID: 29753
[FieldOffset(Offset = "0x50")]
[Token(Token = "0x4007439")]
private byte[] H;
// Token: 0x0400743A RID: 29754
[FieldOffset(Offset = "0x58")]
[Token(Token = "0x400743A")]
private byte[] J0;
// Token: 0x0400743B RID: 29755
[FieldOffset(Offset = "0x60")]
[Token(Token = "0x400743B")]
private byte[] bufBlock;
// Token: 0x0400743C RID: 29756
[FieldOffset(Offset = "0x68")]
[Token(Token = "0x400743C")]
private byte[] macBlock;
// Token: 0x0400743D RID: 29757
[FieldOffset(Offset = "0x70")]
[Token(Token = "0x400743D")]
private byte[] S;
// Token: 0x0400743E RID: 29758
[FieldOffset(Offset = "0x78")]
[Token(Token = "0x400743E")]
private byte[] S_at;
// Token: 0x0400743F RID: 29759
[FieldOffset(Offset = "0x80")]
[Token(Token = "0x400743F")]
private byte[] S_atPre;
// Token: 0x04007440 RID: 29760
[FieldOffset(Offset = "0x88")]
[Token(Token = "0x4007440")]
private byte[] counter;
// Token: 0x04007441 RID: 29761
[FieldOffset(Offset = "0x90")]
[Token(Token = "0x4007441")]
private uint blocksRemaining;
// Token: 0x04007442 RID: 29762
[FieldOffset(Offset = "0x94")]
[Token(Token = "0x4007442")]
private int bufOff;
// Token: 0x04007443 RID: 29763
[FieldOffset(Offset = "0x98")]
[Token(Token = "0x4007443")]
private ulong totalLength;
// Token: 0x04007444 RID: 29764
[FieldOffset(Offset = "0xA0")]
[Token(Token = "0x4007444")]
private byte[] atBlock;
// Token: 0x04007445 RID: 29765
[FieldOffset(Offset = "0xA8")]
[Token(Token = "0x4007445")]
private int atBlockPos;
// Token: 0x04007446 RID: 29766
[FieldOffset(Offset = "0xB0")]
[Token(Token = "0x4007446")]
private ulong atLength;
// Token: 0x04007447 RID: 29767
[FieldOffset(Offset = "0xB8")]
[Token(Token = "0x4007447")]
private ulong atLengthPre;
}
}