166 lines
5.6 KiB
C#
166 lines
5.6 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
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: 0x02001736 RID: 5942
|
|
[Token(Token = "0x2001736")]
|
|
[StructLayout(3)]
|
|
public class Srp6Utilities
|
|
{
|
|
// Token: 0x0600A0A4 RID: 41124 RVA: 0x0025585C File Offset: 0x00253A5C
|
|
[Token(Token = "0x600A0A4")]
|
|
[Address(RVA = "0x2188440", Offset = "0x2186E40", VA = "0x182188440")]
|
|
public static BigInteger CalculateK(IDigest digest, BigInteger N, BigInteger g)
|
|
{
|
|
return Srp6Utilities.HashPaddedPair(digest, N, N, g);
|
|
}
|
|
|
|
// Token: 0x0600A0A5 RID: 41125 RVA: 0x00255874 File Offset: 0x00253A74
|
|
[Token(Token = "0x600A0A5")]
|
|
[Address(RVA = "0x2188580", Offset = "0x2186F80", VA = "0x182188580")]
|
|
public static BigInteger CalculateU(IDigest digest, BigInteger N, BigInteger A, BigInteger B)
|
|
{
|
|
return Srp6Utilities.HashPaddedPair(digest, N, A, B);
|
|
}
|
|
|
|
// Token: 0x0600A0A6 RID: 41126 RVA: 0x0025588C File Offset: 0x00253A8C
|
|
[Token(Token = "0x600A0A6")]
|
|
[Address(RVA = "0x2188590", Offset = "0x2186F90", VA = "0x182188590")]
|
|
public static BigInteger CalculateX(IDigest digest, BigInteger N, byte[] salt, byte[] identity, byte[] password)
|
|
{
|
|
byte[] array = new byte[0];
|
|
int length = identity.Length;
|
|
int num = 0;
|
|
if (num < identity)
|
|
{
|
|
num += num;
|
|
num++;
|
|
}
|
|
int length2 = salt.Length;
|
|
int length3 = array.Length;
|
|
return new BigInteger(1, array);
|
|
}
|
|
|
|
// Token: 0x0600A0A7 RID: 41127 RVA: 0x002558D4 File Offset: 0x00253AD4
|
|
[Token(Token = "0x600A0A7")]
|
|
[Address(RVA = "0x21887B0", Offset = "0x21871B0", VA = "0x1821887B0")]
|
|
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: 0x0600A0A8 RID: 41128 RVA: 0x0025592C File Offset: 0x00253B2C
|
|
[Token(Token = "0x600A0A8")]
|
|
[Address(RVA = "0x2188C70", Offset = "0x2187670", VA = "0x182188C70")]
|
|
public static BigInteger ValidatePublicValue(BigInteger N, BigInteger val)
|
|
{
|
|
return val.Mod(N);
|
|
}
|
|
|
|
// Token: 0x0600A0A9 RID: 41129 RVA: 0x00255954 File Offset: 0x00253B54
|
|
[Token(Token = "0x600A0A9")]
|
|
[Address(RVA = "0x2188570", Offset = "0x2186F70", VA = "0x182188570")]
|
|
public static BigInteger CalculateM1(IDigest digest, BigInteger N, BigInteger A, BigInteger B, BigInteger S)
|
|
{
|
|
BigInteger bigInteger;
|
|
return bigInteger;
|
|
}
|
|
|
|
// Token: 0x0600A0AA RID: 41130 RVA: 0x00255964 File Offset: 0x00253B64
|
|
[Token(Token = "0x600A0AA")]
|
|
[Address(RVA = "0x2188570", Offset = "0x2186F70", VA = "0x182188570")]
|
|
public static BigInteger CalculateM2(IDigest digest, BigInteger N, BigInteger A, BigInteger M1, BigInteger S)
|
|
{
|
|
BigInteger bigInteger;
|
|
return bigInteger;
|
|
}
|
|
|
|
// Token: 0x0600A0AB RID: 41131 RVA: 0x00255974 File Offset: 0x00253B74
|
|
[Token(Token = "0x600A0AB")]
|
|
[Address(RVA = "0x2188460", Offset = "0x2186E60", VA = "0x182188460")]
|
|
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: 0x0600A0AC RID: 41132 RVA: 0x002559BC File Offset: 0x00253BBC
|
|
[Token(Token = "0x600A0AC")]
|
|
[Address(RVA = "0x2188AC0", Offset = "0x21874C0", VA = "0x182188AC0")]
|
|
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: 0x0600A0AD RID: 41133 RVA: 0x00255A1C File Offset: 0x00253C1C
|
|
[Token(Token = "0x600A0AD")]
|
|
[Address(RVA = "0x2188960", Offset = "0x2187360", VA = "0x182188960")]
|
|
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: 0x0600A0AE RID: 41134 RVA: 0x00255A70 File Offset: 0x00253C70
|
|
[Token(Token = "0x600A0AE")]
|
|
[Address(RVA = "0x21888C0", Offset = "0x21872C0", VA = "0x1821888C0")]
|
|
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: 0x0600A0AF RID: 41135 RVA: 0x00255AB0 File Offset: 0x00253CB0
|
|
[Token(Token = "0x600A0AF")]
|
|
[Address(RVA = "0x3C1670", Offset = "0x3C0070", VA = "0x1803C1670")]
|
|
public Srp6Utilities()
|
|
{
|
|
}
|
|
}
|
|
}
|