158 lines
5.5 KiB
C#
158 lines
5.5 KiB
C#
using System;
|
|
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.Srp
|
|
{
|
|
// Token: 0x02001D13 RID: 7443
|
|
[Token(Token = "0x2001D13")]
|
|
public class Srp6Utilities
|
|
{
|
|
// Token: 0x0600BC7E RID: 48254 RVA: 0x002ADD28 File Offset: 0x002ABF28
|
|
[Token(Token = "0x600BC7E")]
|
|
[Address(RVA = "0x1B48650", Offset = "0x1B47450", VA = "0x181B48650")]
|
|
public static BigInteger CalculateK(IDigest digest, BigInteger N, BigInteger g)
|
|
{
|
|
return Srp6Utilities.HashPaddedPair(digest, N, N, g);
|
|
}
|
|
|
|
// Token: 0x0600BC7F RID: 48255 RVA: 0x002ADD40 File Offset: 0x002ABF40
|
|
[Token(Token = "0x600BC7F")]
|
|
[Address(RVA = "0x1B48790", Offset = "0x1B47590", VA = "0x181B48790")]
|
|
public static BigInteger CalculateU(IDigest digest, BigInteger N, BigInteger A, BigInteger B)
|
|
{
|
|
return Srp6Utilities.HashPaddedPair(digest, N, A, B);
|
|
}
|
|
|
|
// Token: 0x0600BC80 RID: 48256 RVA: 0x002ADD58 File Offset: 0x002ABF58
|
|
[Token(Token = "0x600BC80")]
|
|
[Address(RVA = "0x1B487A0", Offset = "0x1B475A0", VA = "0x181B487A0")]
|
|
public static BigInteger CalculateX(IDigest digest, BigInteger N, byte[] salt, byte[] identity, byte[] password)
|
|
{
|
|
byte[] array = new byte[0];
|
|
int length = identity.Length;
|
|
int length2 = salt.Length;
|
|
int length3 = array.Length;
|
|
return new BigInteger(1, array);
|
|
}
|
|
|
|
// Token: 0x0600BC81 RID: 48257 RVA: 0x002ADD94 File Offset: 0x002ABF94
|
|
[Token(Token = "0x600BC81")]
|
|
[Address(RVA = "0x1B48950", Offset = "0x1B47750", VA = "0x181B48950")]
|
|
public static BigInteger GeneratePrivateValue(IDigest digest, BigInteger N, BigInteger g, SecureRandom random)
|
|
{
|
|
int num = 0;
|
|
int num2 = N.BitLength;
|
|
num2 -= num;
|
|
uint num3;
|
|
num2 = Math.Min((int)num3, num2);
|
|
BigInteger one = BigInteger.One;
|
|
int num4 = num2 - 1;
|
|
BigInteger bigInteger = one.ShiftLeft(num4);
|
|
BigInteger one2 = BigInteger.One;
|
|
BigInteger bigInteger2 = N.Subtract(one2);
|
|
return BigIntegers.CreateRandomInRange(bigInteger, bigInteger2, random);
|
|
}
|
|
|
|
// Token: 0x0600BC82 RID: 48258 RVA: 0x002ADDEC File Offset: 0x002ABFEC
|
|
[Token(Token = "0x600BC82")]
|
|
[Address(RVA = "0x1B48E10", Offset = "0x1B47C10", VA = "0x181B48E10")]
|
|
public static BigInteger ValidatePublicValue(BigInteger N, BigInteger val)
|
|
{
|
|
return val.Mod(N);
|
|
}
|
|
|
|
// Token: 0x0600BC83 RID: 48259 RVA: 0x002ADE14 File Offset: 0x002AC014
|
|
[Token(Token = "0x600BC83")]
|
|
[Address(RVA = "0x1B48780", Offset = "0x1B47580", VA = "0x181B48780")]
|
|
public static BigInteger CalculateM1(IDigest digest, BigInteger N, BigInteger A, BigInteger B, BigInteger S)
|
|
{
|
|
BigInteger bigInteger;
|
|
return bigInteger;
|
|
}
|
|
|
|
// Token: 0x0600BC84 RID: 48260 RVA: 0x002ADE24 File Offset: 0x002AC024
|
|
[Token(Token = "0x600BC84")]
|
|
[Address(RVA = "0x1B48780", Offset = "0x1B47580", VA = "0x181B48780")]
|
|
public static BigInteger CalculateM2(IDigest digest, BigInteger N, BigInteger A, BigInteger M1, BigInteger S)
|
|
{
|
|
BigInteger bigInteger;
|
|
return bigInteger;
|
|
}
|
|
|
|
// Token: 0x0600BC85 RID: 48261 RVA: 0x002ADE34 File Offset: 0x002AC034
|
|
[Token(Token = "0x600BC85")]
|
|
[Address(RVA = "0x1B48670", Offset = "0x1B47470", VA = "0x181B48670")]
|
|
public static BigInteger CalculateKey(IDigest digest, BigInteger N, BigInteger S)
|
|
{
|
|
int num = 0;
|
|
int num2 = N.BitLength;
|
|
num2 += 7;
|
|
num += num2;
|
|
byte[] padded = Srp6Utilities.GetPadded(S, num);
|
|
int length = padded.Length;
|
|
byte[] array = new byte[padded];
|
|
return new BigInteger(1, array);
|
|
}
|
|
|
|
// Token: 0x0600BC86 RID: 48262 RVA: 0x002ADE7C File Offset: 0x002AC07C
|
|
[Token(Token = "0x600BC86")]
|
|
[Address(RVA = "0x1B48C60", Offset = "0x1B47A60", VA = "0x181B48C60")]
|
|
private static BigInteger HashPaddedTriplet(IDigest digest, BigInteger N, BigInteger n1, BigInteger n2, BigInteger n3)
|
|
{
|
|
int num = 0;
|
|
int num2 = N.BitLength;
|
|
num2 += 7;
|
|
num2 += num;
|
|
byte[] padded = Srp6Utilities.GetPadded(n1, num2);
|
|
byte[] padded2 = Srp6Utilities.GetPadded(n2, num2);
|
|
int length = padded.Length;
|
|
int length2 = padded2.Length;
|
|
byte[] array2;
|
|
byte[] array = new byte[array2.Length];
|
|
return new BigInteger(1, array);
|
|
}
|
|
|
|
// Token: 0x0600BC87 RID: 48263 RVA: 0x002ADEDC File Offset: 0x002AC0DC
|
|
[Token(Token = "0x600BC87")]
|
|
[Address(RVA = "0x1B48B00", Offset = "0x1B47900", VA = "0x181B48B00")]
|
|
private static BigInteger HashPaddedPair(IDigest digest, BigInteger N, BigInteger n1, BigInteger n2)
|
|
{
|
|
int num = 0;
|
|
int num2 = N.BitLength;
|
|
num2 += 7;
|
|
num2 += num;
|
|
byte[] padded = Srp6Utilities.GetPadded(n1, num2);
|
|
byte[] padded2 = Srp6Utilities.GetPadded(n2, num2);
|
|
int length = padded.Length;
|
|
byte[] array = new byte[padded2.Length];
|
|
return new BigInteger(1, array);
|
|
}
|
|
|
|
// Token: 0x0600BC88 RID: 48264 RVA: 0x002ADF30 File Offset: 0x002AC130
|
|
[Token(Token = "0x600BC88")]
|
|
[Address(RVA = "0x1B48A60", Offset = "0x1B47860", VA = "0x181B48A60")]
|
|
private static byte[] GetPadded(BigInteger n, int length)
|
|
{
|
|
byte[] array = BigIntegers.AsUnsignedByteArray(n);
|
|
if (array.Length < length)
|
|
{
|
|
byte[] array2 = new byte[length];
|
|
int length2 = array.Length;
|
|
int num = 0;
|
|
Array.Copy(array, num, array2, length, length2);
|
|
}
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x0600BC89 RID: 48265 RVA: 0x002ADF70 File Offset: 0x002AC170
|
|
[Token(Token = "0x600BC89")]
|
|
[Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")]
|
|
public Srp6Utilities()
|
|
{
|
|
}
|
|
}
|
|
}
|