using System; using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters; using BestHTTP.SecureProtocol.Org.BouncyCastle.Math; using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; using Cpp2IlInjected; namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Signers { // Token: 0x02001BA2 RID: 7074 [Token(Token = "0x2001BA2")] public class DsaSigner : IDsaExt, IDsa { // Token: 0x0600B0C6 RID: 45254 RVA: 0x0026665C File Offset: 0x0026485C [Token(Token = "0x600B0C6")] [Address(RVA = "0x1892F40", Offset = "0x1891D40", VA = "0x181892F40")] public DsaSigner() { RandomDsaKCalculator randomDsaKCalculator = new RandomDsaKCalculator(); this.kCalculator = randomDsaKCalculator; } // Token: 0x0600B0C7 RID: 45255 RVA: 0x0026667C File Offset: 0x0026487C [Token(Token = "0x600B0C7")] [Address(RVA = "0x3FFB80", Offset = "0x3FE980", VA = "0x1803FFB80")] public DsaSigner(IDsaKCalculator kCalculator) { this.kCalculator = kCalculator; } // Token: 0x17001BD6 RID: 7126 // (get) Token: 0x0600B0C8 RID: 45256 RVA: 0x00266698 File Offset: 0x00264898 [Token(Token = "0x17001BD6")] public virtual string AlgorithmName { [Token(Token = "0x600B0C8")] [Address(RVA = "0x1892FA0", Offset = "0x1891DA0", VA = "0x181892FA0", Slot = "9")] get { return "DSA"; } } // Token: 0x0600B0C9 RID: 45257 RVA: 0x002666AC File Offset: 0x002648AC [Token(Token = "0x600B0C9")] [Address(RVA = "0x1892A30", Offset = "0x1891830", VA = "0x181892A30", Slot = "10")] public virtual void Init(bool forSigning, ICipherParameters parameters) { /* An exception occurred when decompiling this method (0600B0C9) ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Signers.DsaSigner::Init(System.Boolean,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.ICipherParameters) ---> System.Exception: Basic block has to end with unconditional control flow. { IL_5E: stloc:InvalidKeyException(var_9_68, newobj:InvalidKeyException(InvalidKeyException::.ctor, ldstr:string("DSA public key required for verification"))) } 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: 0x17001BD7 RID: 7127 // (get) Token: 0x0600B0CA RID: 45258 RVA: 0x00266724 File Offset: 0x00264924 [Token(Token = "0x17001BD7")] public virtual BigInteger Order { [Token(Token = "0x600B0CA")] [Address(RVA = "0x1892FD0", Offset = "0x1891DD0", VA = "0x181892FD0", Slot = "11")] get { return this.key.parameters.q; } } // Token: 0x0600B0CB RID: 45259 RVA: 0x00266748 File Offset: 0x00264948 [Token(Token = "0x600B0CB")] [Address(RVA = "0x18926B0", Offset = "0x18914B0", VA = "0x1818926B0", Slot = "12")] public virtual BigInteger[] GenerateSignature(byte[] message) { DsaParameters parameters; BigInteger q; int num; for (;;) { parameters = this.key.parameters; q = parameters.q; DsaKeyParameters dsaKeyParameters = this.key; if (dsaKeyParameters != 0) { num = 0; if (dsaKeyParameters != 0) { break; } } } IDsaKCalculator dsaKCalculator = this.kCalculator; IDsaKCalculator dsaKCalculator2 = this.kCalculator; if (num == 0) { SecureRandom secureRandom = this.random; } IDsaKCalculator dsaKCalculator3 = this.kCalculator; BigInteger g = parameters.g; BigInteger bigInteger2; BigInteger bigInteger = bigInteger2.Mod(q); BigInteger bigInteger4; BigInteger bigInteger5; BigInteger bigInteger3 = bigInteger4.Multiply(bigInteger5).Mod(q); BigInteger[] array = new BigInteger[2]; if (bigInteger != 0) { } array[0] = bigInteger; if (bigInteger3 != 0) { } array[1] = bigInteger3; return array; } // Token: 0x0600B0CC RID: 45260 RVA: 0x002667F4 File Offset: 0x002649F4 [Token(Token = "0x600B0CC")] [Address(RVA = "0x1892D10", Offset = "0x1891B10", VA = "0x181892D10", Slot = "13")] public virtual bool VerifySignature(byte[] message, BigInteger r, BigInteger s) { DsaParameters parameters = this.key.parameters; BigInteger q = parameters.q; if (r.sign > 0 && q.CompareTo(r) > 0 && s.sign > 0 && q.CompareTo(s) > 0) { BigInteger bigInteger = s.ModInverse(q); BigInteger bigInteger3; BigInteger bigInteger2 = bigInteger3.Mod(q); BigInteger bigInteger4 = r.Multiply(bigInteger).Mod(q); BigInteger g = parameters.g; BigInteger p = parameters.p; BigInteger bigInteger5 = g.ModPow(bigInteger2, p); int nBitLength = bigInteger5.nBitLength; BigInteger bigInteger7; BigInteger bigInteger6 = bigInteger5.Multiply(bigInteger7).Mod(p).Mod(q); } throw new NullReferenceException(); } // Token: 0x0600B0CD RID: 45261 RVA: 0x002668A4 File Offset: 0x00264AA4 [Token(Token = "0x600B0CD")] [Address(RVA = "0x18925E0", Offset = "0x18913E0", VA = "0x1818925E0", Slot = "14")] protected virtual BigInteger CalculateE(BigInteger n, byte[] message) { int num = 0; int num2 = n.BitLength; int length = message.Length; num += num2; num2 = Math.Min(length, num); int num3; BigInteger bigInteger = new BigInteger(1, message, num3, num2); num3 = 0; return bigInteger; } // Token: 0x0600B0CE RID: 45262 RVA: 0x002668E4 File Offset: 0x00264AE4 [Token(Token = "0x600B0CE")] [Address(RVA = "0x18929C0", Offset = "0x18917C0", VA = "0x1818929C0", Slot = "15")] protected virtual SecureRandom InitSecureRandom(bool needed, SecureRandom provided) { do { if (!needed) { } } while (provided != 0); return new SecureRandom(); } // Token: 0x0400709C RID: 28828 [FieldOffset(Offset = "0x10")] [Token(Token = "0x400709C")] protected readonly IDsaKCalculator kCalculator; // Token: 0x0400709D RID: 28829 [FieldOffset(Offset = "0x18")] [Token(Token = "0x400709D")] protected DsaKeyParameters key; // Token: 0x0400709E RID: 28830 [FieldOffset(Offset = "0x20")] [Token(Token = "0x400709E")] protected SecureRandom random; } }