412 lines
25 KiB
C#
412 lines
25 KiB
C#
using System;
|
|
using System.Text;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Macs;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement.JPake
|
|
{
|
|
// Token: 0x02001DFF RID: 7679
|
|
[Token(Token = "0x2001DFF")]
|
|
public abstract class JPakeUtilities
|
|
{
|
|
// Token: 0x0600C08E RID: 49294 RVA: 0x002B7B08 File Offset: 0x002B5D08
|
|
[Token(Token = "0x600C08E")]
|
|
[Address(RVA = "0x25A8780", Offset = "0x25A7780", VA = "0x1825A8780")]
|
|
public static BigInteger GenerateX1(BigInteger q, SecureRandom random)
|
|
{
|
|
BigInteger zero = JPakeUtilities.Zero;
|
|
BigInteger one = JPakeUtilities.One;
|
|
BigInteger bigInteger = q.Subtract(one);
|
|
return BigIntegers.CreateRandomInRange(zero, bigInteger, random);
|
|
}
|
|
|
|
// Token: 0x0600C08F RID: 49295 RVA: 0x002B7B38 File Offset: 0x002B5D38
|
|
[Token(Token = "0x600C08F")]
|
|
[Address(RVA = "0x25A8820", Offset = "0x25A7820", VA = "0x1825A8820")]
|
|
public static BigInteger GenerateX2(BigInteger q, SecureRandom random)
|
|
{
|
|
BigInteger one = JPakeUtilities.One;
|
|
BigInteger bigInteger = q.Subtract(one);
|
|
return BigIntegers.CreateRandomInRange(one, bigInteger, random);
|
|
}
|
|
|
|
// Token: 0x0600C090 RID: 49296 RVA: 0x002B7B64 File Offset: 0x002B5D64
|
|
[Token(Token = "0x600C090")]
|
|
[Address(RVA = "0x25A84C0", Offset = "0x25A74C0", VA = "0x1825A84C0")]
|
|
public static BigInteger CalculateS(char[] password)
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
BigInteger bigInteger;
|
|
return bigInteger;
|
|
}
|
|
|
|
// Token: 0x0600C091 RID: 49297 RVA: 0x002B7B80 File Offset: 0x002B5D80
|
|
[Token(Token = "0x600C091")]
|
|
[Address(RVA = "0x257E6F0", Offset = "0x257D6F0", VA = "0x18257E6F0")]
|
|
public static BigInteger CalculateGx(BigInteger p, BigInteger g, BigInteger x)
|
|
{
|
|
return g.ModPow(x, p);
|
|
}
|
|
|
|
// Token: 0x0600C092 RID: 49298 RVA: 0x002B7B9C File Offset: 0x002B5D9C
|
|
[Token(Token = "0x600C092")]
|
|
[Address(RVA = "0x25A7BA0", Offset = "0x25A6BA0", VA = "0x1825A7BA0")]
|
|
public static BigInteger CalculateGA(BigInteger p, BigInteger gx1, BigInteger gx3, BigInteger gx4)
|
|
{
|
|
return gx1.Multiply(gx3).Multiply(gx4).Mod(p);
|
|
}
|
|
|
|
// Token: 0x0600C093 RID: 49299 RVA: 0x002B7BC4 File Offset: 0x002B5DC4
|
|
[Token(Token = "0x600C093")]
|
|
[Address(RVA = "0x25A8540", Offset = "0x25A7540", VA = "0x1825A8540")]
|
|
public static BigInteger CalculateX2s(BigInteger q, BigInteger x2, BigInteger s)
|
|
{
|
|
return x2.Multiply(s).Mod(q);
|
|
}
|
|
|
|
// Token: 0x0600C094 RID: 49300 RVA: 0x002B7BE4 File Offset: 0x002B5DE4
|
|
[Token(Token = "0x600C094")]
|
|
[Address(RVA = "0x25A7B70", Offset = "0x25A6B70", VA = "0x1825A7B70")]
|
|
public static BigInteger CalculateA(BigInteger p, BigInteger q, BigInteger gA, BigInteger x2s)
|
|
{
|
|
return gA.ModPow(x2s, p);
|
|
}
|
|
|
|
// Token: 0x0600C095 RID: 49301 RVA: 0x002B7C00 File Offset: 0x002B5E00
|
|
[Token(Token = "0x600C095")]
|
|
[Address(RVA = "0x25A8580", Offset = "0x25A7580", VA = "0x1825A8580")]
|
|
public static BigInteger[] CalculateZeroKnowledgeProof(BigInteger p, BigInteger q, BigInteger g, BigInteger gx, BigInteger x, string participantId, IDigest digest, SecureRandom random)
|
|
{
|
|
BigInteger zero = JPakeUtilities.Zero;
|
|
BigInteger one = JPakeUtilities.One;
|
|
BigInteger bigInteger = q.Subtract(one);
|
|
BigInteger bigInteger3;
|
|
BigInteger bigInteger2 = g.ModPow(bigInteger3, p);
|
|
BigInteger[] array = new BigInteger[2];
|
|
if (bigInteger2 != 0)
|
|
{
|
|
}
|
|
array[0] = bigInteger2;
|
|
BigInteger bigInteger5;
|
|
BigInteger bigInteger4 = bigInteger3.Subtract(bigInteger5).Mod(q);
|
|
if (bigInteger4 != 0)
|
|
{
|
|
}
|
|
array[1] = bigInteger4;
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x0600C096 RID: 49302 RVA: 0x002B7C6C File Offset: 0x002B5E6C
|
|
[Token(Token = "0x600C096")]
|
|
[Address(RVA = "0x25A7C00", Offset = "0x25A6C00", VA = "0x1825A7C00")]
|
|
private static BigInteger CalculateHashForZeroKnowledgeProof(BigInteger g, BigInteger gr, BigInteger gx, string participantId, IDigest digest)
|
|
{
|
|
byte[] array = BigIntegers.AsUnsignedByteArray(g);
|
|
byte[] array2 = BigIntegers.AsUnsignedByteArray(gr);
|
|
byte[] array3 = BigIntegers.AsUnsignedByteArray(gx);
|
|
Encoding utf = Encoding.UTF8;
|
|
byte[] array4;
|
|
return new BigInteger(array4);
|
|
}
|
|
|
|
// Token: 0x0600C097 RID: 49303 RVA: 0x002B7CA4 File Offset: 0x002B5EA4
|
|
[Token(Token = "0x600C097")]
|
|
[Address(RVA = "0x25A8EB0", Offset = "0x25A7EB0", VA = "0x1825A8EB0")]
|
|
public static void ValidateGx4(BigInteger gx4)
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600C098 RID: 49304 RVA: 0x002B7CBC File Offset: 0x002B5EBC
|
|
[Token(Token = "0x600C098")]
|
|
[Address(RVA = "0x25A8E00", Offset = "0x25A7E00", VA = "0x1825A8E00")]
|
|
public static void ValidateGa(BigInteger ga)
|
|
{
|
|
}
|
|
|
|
// Token: 0x0600C099 RID: 49305 RVA: 0x002B7CD4 File Offset: 0x002B5ED4
|
|
[Token(Token = "0x600C099")]
|
|
[Address(RVA = "0x25A9310", Offset = "0x25A8310", VA = "0x1825A9310")]
|
|
public static void ValidateZeroKnowledgeProof(BigInteger p, BigInteger q, BigInteger g, BigInteger gx, BigInteger[] zeroKnowledgeProof, string participantId, IDigest digest)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600C099)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement.JPake.JPakeUtilities::ValidateZeroKnowledgeProof(BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger[],System.String,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IDigest)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_69:
|
|
stloc:CryptoException(var_7_73, newobj:CryptoException(CryptoException::.ctor, ldstr:string("Zero-knowledge proof validation 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.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: 0x0600C09A RID: 49306 RVA: 0x002B7D58 File Offset: 0x002B5F58
|
|
[Token(Token = "0x600C09A")]
|
|
[Address(RVA = "0x25A7E60", Offset = "0x25A6E60", VA = "0x1825A7E60")]
|
|
public static BigInteger CalculateKeyingMaterial(BigInteger p, BigInteger q, BigInteger gx4, BigInteger x2, BigInteger s, BigInteger B)
|
|
{
|
|
BigInteger bigInteger2;
|
|
BigInteger bigInteger = bigInteger2.Negate().Mod(q);
|
|
BigInteger bigInteger3 = gx4.ModPow(bigInteger, p);
|
|
BigInteger bigInteger4;
|
|
return bigInteger4.ModPow(x2, p);
|
|
}
|
|
|
|
// Token: 0x0600C09B RID: 49307 RVA: 0x002B7D8C File Offset: 0x002B5F8C
|
|
[Token(Token = "0x600C09B")]
|
|
[Address(RVA = "0x25A90F0", Offset = "0x25A80F0", VA = "0x1825A90F0")]
|
|
public static void ValidateParticipantIdsDiffer(string participantId1, string participantId2)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600C09B)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement.JPake.JPakeUtilities::ValidateParticipantIdsDiffer(System.String,System.String)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_0B:
|
|
stloc:CryptoException(var_0_20, newobj:CryptoException(CryptoException::.ctor, call:string(string::Concat, ldstr:string("Both participants are using the same participantId ("), ldloc:string(participantId1), ldstr:string("). This is not allowed. Each participant must use a unique participantId."))))
|
|
}
|
|
|
|
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: 0x0600C09C RID: 49308 RVA: 0x002B7DBC File Offset: 0x002B5FBC
|
|
[Token(Token = "0x600C09C")]
|
|
[Address(RVA = "0x25A9190", Offset = "0x25A8190", VA = "0x1825A9190")]
|
|
public static void ValidateParticipantIdsEqual(string expectedParticipantId, string actualParticipantId)
|
|
{
|
|
if (expectedParticipantId.Equals(actualParticipantId))
|
|
{
|
|
return;
|
|
}
|
|
string[] array = new string[5];
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x0600C09D RID: 49309 RVA: 0x002B7E48 File Offset: 0x002B6048
|
|
[Token(Token = "0x600C09D")]
|
|
[Address(RVA = "0x25A9080", Offset = "0x25A8080", VA = "0x1825A9080")]
|
|
public static void ValidateNotNull(object obj, string description)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600C09D)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement.JPake.JPakeUtilities::ValidateNotNull(System.Object,System.String)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_05:
|
|
stloc:ArgumentNullException(var_0_0B, newobj:ArgumentNullException(ArgumentNullException::.ctor, ldloc:string(description)))
|
|
}
|
|
|
|
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: 0x0600C09E RID: 49310 RVA: 0x002B7E60 File Offset: 0x002B6060
|
|
[Token(Token = "0x600C09E")]
|
|
[Address(RVA = "0x25A8090", Offset = "0x25A7090", VA = "0x1825A8090")]
|
|
public static BigInteger CalculateMacTag(string participantId, string partnerParticipantId, BigInteger gx1, BigInteger gx2, BigInteger gx3, BigInteger gx4, BigInteger keyingMaterial, IDigest digest)
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
byte[] array;
|
|
KeyParameter keyParameter = new KeyParameter(array);
|
|
HMac hmac;
|
|
IDigest underlyingDigest = hmac.GetUnderlyingDigest();
|
|
int num = 0;
|
|
Arrays.Fill(array, (byte)num);
|
|
JPakeUtilities.UpdateMac(hmac, "KC_1_U");
|
|
JPakeUtilities.UpdateMac(hmac, participantId);
|
|
JPakeUtilities.UpdateMac(hmac, partnerParticipantId);
|
|
byte[] array2 = BigIntegers.AsUnsignedByteArray(gx1);
|
|
JPakeUtilities.UpdateMac(hmac, array2);
|
|
byte[] array3 = BigIntegers.AsUnsignedByteArray(gx2);
|
|
JPakeUtilities.UpdateMac(hmac, array3);
|
|
byte[] array4;
|
|
JPakeUtilities.UpdateMac(hmac, array4);
|
|
byte[] array5;
|
|
JPakeUtilities.UpdateMac(hmac, array5);
|
|
return new BigInteger(MacUtilities.DoFinal(hmac));
|
|
}
|
|
|
|
// Token: 0x0600C09F RID: 49311 RVA: 0x002B7EF8 File Offset: 0x002B60F8
|
|
[Token(Token = "0x600C09F")]
|
|
[Address(RVA = "0x25A7F20", Offset = "0x25A6F20", VA = "0x1825A7F20")]
|
|
private static byte[] CalculateMacKey(BigInteger keyingMaterial, IDigest digest)
|
|
{
|
|
byte[] array = BigIntegers.AsUnsignedByteArray(keyingMaterial);
|
|
JPakeUtilities.UpdateDigest(digest, array);
|
|
Encoding utf = Encoding.UTF8;
|
|
return DigestUtilities.DoFinal(digest);
|
|
}
|
|
|
|
// Token: 0x0600C0A0 RID: 49312 RVA: 0x002B7F28 File Offset: 0x002B6128
|
|
[Token(Token = "0x600C0A0")]
|
|
[Address(RVA = "0x25A8F60", Offset = "0x25A7F60", VA = "0x1825A8F60")]
|
|
public static void ValidateMacTag(string participantId, string partnerParticipantId, BigInteger gx1, BigInteger gx2, BigInteger gx3, BigInteger gx4, BigInteger keyingMaterial, IDigest digest, BigInteger partnerMacTag)
|
|
{
|
|
/*
|
|
An exception occurred when decompiling this method (0600C0A0)
|
|
|
|
ICSharpCode.Decompiler.DecompilerException: Error decompiling System.Void BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Agreement.JPake.JPakeUtilities::ValidateMacTag(System.String,System.String,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger,BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.IDigest,BestHTTP.SecureProtocol.Org.BouncyCastle.Math.BigInteger)
|
|
|
|
---> System.Exception: Basic block has to end with unconditional control flow.
|
|
{
|
|
IL_05:
|
|
stloc:CryptoException(var_2_0F, newobj:CryptoException(CryptoException::.ctor, ldstr:string("Partner MacTag validation failed. Therefore, the password, MAC, or digest algorithm of each participant does not match.")))
|
|
}
|
|
|
|
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: 0x0600C0A1 RID: 49313 RVA: 0x002B7F44 File Offset: 0x002B6144
|
|
[Token(Token = "0x600C0A1")]
|
|
[Address(RVA = "0x25A8AC0", Offset = "0x25A7AC0", VA = "0x1825A8AC0")]
|
|
private static void UpdateDigest(IDigest digest, BigInteger bigInteger)
|
|
{
|
|
byte[] array = BigIntegers.AsUnsignedByteArray(bigInteger);
|
|
JPakeUtilities.UpdateDigest(digest, array);
|
|
}
|
|
|
|
// Token: 0x0600C0A2 RID: 49314 RVA: 0x002B7F60 File Offset: 0x002B6160
|
|
[Token(Token = "0x600C0A2")]
|
|
[Address(RVA = "0x25A8BD0", Offset = "0x25A7BD0", VA = "0x1825A8BD0")]
|
|
private static void UpdateDigest(IDigest digest, string str)
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
}
|
|
|
|
// Token: 0x0600C0A3 RID: 49315 RVA: 0x002B7F7C File Offset: 0x002B617C
|
|
[Token(Token = "0x600C0A3")]
|
|
[Address(RVA = "0x25A8B30", Offset = "0x25A7B30", VA = "0x1825A8B30")]
|
|
private static void UpdateDigest(IDigest digest, byte[] bytes)
|
|
{
|
|
int length = bytes.Length;
|
|
int num = 0;
|
|
Arrays.Fill(bytes, (byte)num);
|
|
}
|
|
|
|
// Token: 0x0600C0A4 RID: 49316 RVA: 0x002B7FA0 File Offset: 0x002B61A0
|
|
[Token(Token = "0x600C0A4")]
|
|
[Address(RVA = "0x25A88D0", Offset = "0x25A78D0", VA = "0x1825A88D0")]
|
|
private static void UpdateDigestIncludingSize(IDigest digest, BigInteger bigInteger)
|
|
{
|
|
byte[] array = BigIntegers.AsUnsignedByteArray(bigInteger);
|
|
JPakeUtilities.UpdateDigestIncludingSize(digest, array);
|
|
}
|
|
|
|
// Token: 0x0600C0A5 RID: 49317 RVA: 0x002B7FBC File Offset: 0x002B61BC
|
|
[Token(Token = "0x600C0A5")]
|
|
[Address(RVA = "0x25A8A30", Offset = "0x25A7A30", VA = "0x1825A8A30")]
|
|
private static void UpdateDigestIncludingSize(IDigest digest, string str)
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
}
|
|
|
|
// Token: 0x0600C0A6 RID: 49318 RVA: 0x002B7FD8 File Offset: 0x002B61D8
|
|
[Token(Token = "0x600C0A6")]
|
|
[Address(RVA = "0x25A8940", Offset = "0x25A7940", VA = "0x1825A8940")]
|
|
private static void UpdateDigestIncludingSize(IDigest digest, byte[] bytes)
|
|
{
|
|
byte[] array = Pack.UInt32_To_BE((uint)bytes.Length);
|
|
int length = bytes.Length;
|
|
int num = 0;
|
|
Arrays.Fill(bytes, (byte)num);
|
|
}
|
|
|
|
// Token: 0x0600C0A7 RID: 49319 RVA: 0x002B800C File Offset: 0x002B620C
|
|
[Token(Token = "0x600C0A7")]
|
|
[Address(RVA = "0x25A8C60", Offset = "0x25A7C60", VA = "0x1825A8C60")]
|
|
private static void UpdateMac(IMac mac, BigInteger bigInteger)
|
|
{
|
|
byte[] array = BigIntegers.AsUnsignedByteArray(bigInteger);
|
|
JPakeUtilities.UpdateMac(mac, array);
|
|
}
|
|
|
|
// Token: 0x0600C0A8 RID: 49320 RVA: 0x002B8028 File Offset: 0x002B6228
|
|
[Token(Token = "0x600C0A8")]
|
|
[Address(RVA = "0x25A8D70", Offset = "0x25A7D70", VA = "0x1825A8D70")]
|
|
private static void UpdateMac(IMac mac, string str)
|
|
{
|
|
Encoding utf = Encoding.UTF8;
|
|
}
|
|
|
|
// Token: 0x0600C0A9 RID: 49321 RVA: 0x002B8044 File Offset: 0x002B6244
|
|
[Token(Token = "0x600C0A9")]
|
|
[Address(RVA = "0x25A8CD0", Offset = "0x25A7CD0", VA = "0x1825A8CD0")]
|
|
private static void UpdateMac(IMac mac, byte[] bytes)
|
|
{
|
|
int length = bytes.Length;
|
|
int num = 0;
|
|
Arrays.Fill(bytes, (byte)num);
|
|
}
|
|
|
|
// Token: 0x0600C0AA RID: 49322 RVA: 0x002B8068 File Offset: 0x002B6268
|
|
[Token(Token = "0x600C0AA")]
|
|
[Address(RVA = "0x25A88C0", Offset = "0x25A78C0", VA = "0x1825A88C0")]
|
|
private static byte[] IntToByteArray(int value)
|
|
{
|
|
return Pack.UInt32_To_BE((uint)value);
|
|
}
|
|
|
|
// Token: 0x0600C0AB RID: 49323 RVA: 0x002B807C File Offset: 0x002B627C
|
|
[Token(Token = "0x600C0AB")]
|
|
[Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")]
|
|
protected JPakeUtilities()
|
|
{
|
|
}
|
|
|
|
// Token: 0x040079FA RID: 31226
|
|
[Token(Token = "0x40079FA")]
|
|
public static readonly BigInteger Zero = BigInteger.Zero;
|
|
|
|
// Token: 0x040079FB RID: 31227
|
|
[Token(Token = "0x40079FB")]
|
|
public static readonly BigInteger One = BigInteger.One;
|
|
}
|
|
}
|