using System; using System.Runtime.CompilerServices; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Digests; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Modes; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines { // Token: 0x02001C8D RID: 7309 [Token(Token = "0x2001C8D")] public class DesEdeWrapEngine : IWrapper { // Token: 0x0600B75E RID: 46942 RVA: 0x00288A80 File Offset: 0x00286C80 [Token(Token = "0x600B75E")] [Address(RVA = "0x1DC52E0", Offset = "0x1DC40E0", VA = "0x181DC52E0", Slot = "8")] public virtual void Init(bool forWrapping, ICipherParameters parameters) { /* An exception occurred when decompiling this method (0600B75E) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.DesEdeWrapEngine::Init(System.Boolean,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.ICipherParameters) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_E5: stloc:ArgumentException(var_16_F4, newobj:ArgumentException(ArgumentException::.ctor, ldstr:string("IV is not 8 octets"), ldstr:string("parameters"))) } 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 1660 */; } // Token: 0x17001CC7 RID: 7367 // (get) Token: 0x0600B75F RID: 46943 RVA: 0x00288B84 File Offset: 0x00286D84 [Token(Token = "0x17001CC7")] public virtual string AlgorithmName { [Token(Token = "0x600B75F")] [Address(RVA = "0x1DC5F10", Offset = "0x1DC4D10", VA = "0x181DC5F10", Slot = "9")] get { return "DESede"; } } // Token: 0x0600B760 RID: 46944 RVA: 0x00288B98 File Offset: 0x00286D98 [Token(Token = "0x600B760")] [Address(RVA = "0x1DC5B00", Offset = "0x1DC4900", VA = "0x181DC5B00", Slot = "10")] public virtual byte[] Wrap(byte[] input, int inOff, int length) { /* An exception occurred when decompiling this method (0600B760) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Byte[] BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.DesEdeWrapEngine::Wrap(System.Byte[],System.Int32,System.Int32) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_19D: stloc:InvalidOperationException(var_34_1A7, newobj:InvalidOperationException(InvalidOperationException::.ctor, ldstr:string("Not multiple of block length"))) } 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 1660 */; } // Token: 0x0600B761 RID: 46945 RVA: 0x00288D50 File Offset: 0x00286F50 [Token(Token = "0x600B761")] [Address(RVA = "0x1DC56A0", Offset = "0x1DC44A0", VA = "0x181DC56A0", Slot = "11")] public virtual byte[] Unwrap(byte[] input, int inOff, int length) { /* An exception occurred when decompiling this method (0600B761) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Byte[] BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Engines.DesEdeWrapEngine::Unwrap(System.Byte[],System.Int32,System.Int32) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_1C0: stloc:InvalidCipherTextException(var_39_1D0, newobj:InvalidCipherTextException(InvalidCipherTextException::.ctor, call:string(string::Concat, ldstr:string[exp:object]("Ciphertext not multiple of "), ldloc:int32[exp:object](var_2)))) } 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 1660 */; } // Token: 0x0600B762 RID: 46946 RVA: 0x00288F30 File Offset: 0x00287130 [Token(Token = "0x600B762")] [Address(RVA = "0x1DC5180", Offset = "0x1DC3F80", VA = "0x181DC5180")] private byte[] CalculateCmsKeyChecksum(byte[] key) { IDigest digest = this.sha1; int length = key.Length; IDigest digest2 = this.sha1; byte[] array = new byte[8]; byte[] array2 = this.digest; int num = 0; int num2 = 0; ulong num3; Array.Copy(array2, num2, array, num, (int)num3); return array; } // Token: 0x0600B763 RID: 46947 RVA: 0x00288F80 File Offset: 0x00287180 [Token(Token = "0x600B763")] [Address(RVA = "0x1DC5260", Offset = "0x1DC4060", VA = "0x181DC5260")] private bool CheckCmsKeyChecksum(byte[] key, byte[] checksum) { return Arrays.ConstantTimeAreEqual(this.CalculateCmsKeyChecksum(key), checksum); } // Token: 0x0600B764 RID: 46948 RVA: 0x00288F9C File Offset: 0x0028719C [Token(Token = "0x600B764")] [Address(RVA = "0x1DC5F40", Offset = "0x1DC4D40", VA = "0x181DC5F40")] private static byte[] reverse(byte[] bs) { byte[] array = new byte[bs.Length]; int num = 0; int num2 = bs.Length; if (num < num2) { num2 -= num; num++; } return array; } // Token: 0x0600B765 RID: 46949 RVA: 0x00288FD4 File Offset: 0x002871D4 [Token(Token = "0x600B765")] [Address(RVA = "0x1DC5EA0", Offset = "0x1DC4CA0", VA = "0x181DC5EA0")] public DesEdeWrapEngine() { Sha1Digest sha1Digest = new Sha1Digest(); this.sha1 = sha1Digest; byte[] array = new byte[20]; this.digest = array; base..ctor(); } // Token: 0x0600B766 RID: 46950 RVA: 0x00289004 File Offset: 0x00287204 // Note: this type is marked as 'beforefieldinit'. [Token(Token = "0x600B766")] [Address(RVA = "0x1DC5E40", Offset = "0x1DC4C40", VA = "0x181DC5E40")] static DesEdeWrapEngine() { byte[] array = new byte[8]; RuntimeHelpers.InitializeArray(array, fieldof(.6DFD60679846B0E2064404E9EA3E1DDCE2C5709D).FieldHandle); DesEdeWrapEngine.IV2 = array; } // Token: 0x04007443 RID: 29763 [FieldOffset(Offset = "0x10")] [Token(Token = "0x4007443")] private CbcBlockCipher engine; // Token: 0x04007444 RID: 29764 [FieldOffset(Offset = "0x18")] [Token(Token = "0x4007444")] private KeyParameter param; // Token: 0x04007445 RID: 29765 [FieldOffset(Offset = "0x20")] [Token(Token = "0x4007445")] private ParametersWithIV paramPlusIV; // Token: 0x04007446 RID: 29766 [FieldOffset(Offset = "0x28")] [Token(Token = "0x4007446")] private byte[] iv; // Token: 0x04007447 RID: 29767 [FieldOffset(Offset = "0x30")] [Token(Token = "0x4007447")] private bool forWrapping; // Token: 0x04007448 RID: 29768 [Token(Token = "0x4007448")] private static readonly byte[] IV2; // Token: 0x04007449 RID: 29769 [FieldOffset(Offset = "0x38")] [Token(Token = "0x4007449")] private readonly IDigest sha1; // Token: 0x0400744A RID: 29770 [FieldOffset(Offset = "0x40")] [Token(Token = "0x400744A")] private readonly byte[] digest; } }