a
This commit is contained in:
@@ -0,0 +1,218 @@
|
||||
using System;
|
||||
using BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.Rfc8032;
|
||||
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
|
||||
using Cpp2IlInjected;
|
||||
|
||||
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Math.EC.Rfc7748
|
||||
{
|
||||
// Token: 0x02001A11 RID: 6673
|
||||
[Token(Token = "0x2001A11")]
|
||||
public abstract class X25519
|
||||
{
|
||||
// Token: 0x0600A209 RID: 41481 RVA: 0x0022E0A8 File Offset: 0x0022C2A8
|
||||
[Token(Token = "0x600A209")]
|
||||
[Address(RVA = "0x1F60380", Offset = "0x1F5F180", VA = "0x181F60380")]
|
||||
public static bool CalculateAgreement(byte[] k, int kOff, byte[] u, int uOff, byte[] r, int rOff)
|
||||
{
|
||||
bool flag;
|
||||
return !flag;
|
||||
}
|
||||
|
||||
// Token: 0x0600A20A RID: 41482 RVA: 0x0022E0BC File Offset: 0x0022C2BC
|
||||
[Token(Token = "0x600A20A")]
|
||||
[Address(RVA = "0x1824CD0", Offset = "0x1823AD0", VA = "0x181824CD0")]
|
||||
private static uint Decode32(byte[] bs, int off)
|
||||
{
|
||||
int length = bs.Length;
|
||||
int num = off + 1;
|
||||
throw new NullReferenceException();
|
||||
}
|
||||
|
||||
// Token: 0x0600A20B RID: 41483 RVA: 0x0022E0DC File Offset: 0x0022C2DC
|
||||
[Token(Token = "0x600A20B")]
|
||||
[Address(RVA = "0x1F60440", Offset = "0x1F5F240", VA = "0x181F60440")]
|
||||
private static void DecodeScalar(byte[] k, int kOff, uint[] n)
|
||||
{
|
||||
int num = 0;
|
||||
int length = k.Length;
|
||||
int num2 = kOff + 1;
|
||||
byte b = k[k];
|
||||
num++;
|
||||
n[0] = (uint)b;
|
||||
uint num3 = n[3];
|
||||
n[3] = num3;
|
||||
n[3] = num3;
|
||||
}
|
||||
|
||||
// Token: 0x0600A20C RID: 41484 RVA: 0x0022E12C File Offset: 0x0022C32C
|
||||
[Token(Token = "0x600A20C")]
|
||||
[Address(RVA = "0x1F605B0", Offset = "0x1F5F3B0", VA = "0x181F605B0")]
|
||||
public static void GeneratePrivateKey(SecureRandom random, byte[] k)
|
||||
{
|
||||
byte b = k[3];
|
||||
k[3] = b;
|
||||
k[3] = b;
|
||||
}
|
||||
|
||||
// Token: 0x0600A20D RID: 41485 RVA: 0x0022E158 File Offset: 0x0022C358
|
||||
[Token(Token = "0x600A20D")]
|
||||
[Address(RVA = "0x1F60640", Offset = "0x1F5F440", VA = "0x181F60640")]
|
||||
public static void GeneratePublicKey(byte[] k, int kOff, byte[] r, int rOff)
|
||||
{
|
||||
X25519.ScalarMultBase(k, kOff, r, rOff);
|
||||
}
|
||||
|
||||
// Token: 0x0600A20E RID: 41486 RVA: 0x0022E170 File Offset: 0x0022C370
|
||||
[Token(Token = "0x600A20E")]
|
||||
[Address(RVA = "0x1F60650", Offset = "0x1F5F450", VA = "0x181F60650")]
|
||||
private static void PointDouble(int[] x, int[] z)
|
||||
{
|
||||
int[] array = new int[10];
|
||||
int[] array2 = new int[10];
|
||||
X25519Field.Apm(x, z, array, array2);
|
||||
X25519Field.Sqr(array, array);
|
||||
X25519Field.Sqr(array2, array2);
|
||||
X25519Field.Mul(array, array2, x);
|
||||
X25519Field.Sub(array, array2, array);
|
||||
X25519Field.Mul(array, 121666, z);
|
||||
X25519Field.Add(z, array2, z);
|
||||
X25519Field.Mul(z, array, z);
|
||||
}
|
||||
|
||||
// Token: 0x0600A20F RID: 41487 RVA: 0x0022E1D0 File Offset: 0x0022C3D0
|
||||
[Token(Token = "0x600A20F")]
|
||||
[Address(RVA = "0x1F607B0", Offset = "0x1F5F5B0", VA = "0x181F607B0")]
|
||||
public static void Precompute()
|
||||
{
|
||||
Ed25519.Precompute();
|
||||
}
|
||||
|
||||
// Token: 0x0600A210 RID: 41488 RVA: 0x0022E1E4 File Offset: 0x0022C3E4
|
||||
[Token(Token = "0x600A210")]
|
||||
[Address(RVA = "0x1F60B20", Offset = "0x1F5F920", VA = "0x181F60B20")]
|
||||
public static void ScalarMult(byte[] k, int kOff, byte[] u, int uOff, byte[] r, int rOff)
|
||||
{
|
||||
uint[] array = new uint[8];
|
||||
X25519.DecodeScalar(k, kOff, array);
|
||||
int[] array2 = new int[10];
|
||||
X25519Field.Decode(u, uOff, array2);
|
||||
int[] array3 = new int[10];
|
||||
int num = 0;
|
||||
int num2 = array2[num];
|
||||
num++;
|
||||
array3[0] = num2;
|
||||
int[] array4 = new int[10];
|
||||
uint num3;
|
||||
array4[0] = (int)num3;
|
||||
int[] array5 = new int[10];
|
||||
array5[0] = (int)num3;
|
||||
int[] array6 = new int[10];
|
||||
int[] array7 = new int[10];
|
||||
int[] array8 = new int[10];
|
||||
X25519Field.Apm(array5, array6, array7, array5);
|
||||
X25519Field.Apm(array3, array4, array6, array3);
|
||||
X25519Field.Mul(array7, array3, array7);
|
||||
X25519Field.Mul(array5, array6, array5);
|
||||
X25519Field.Sqr(array6, array6);
|
||||
X25519Field.Sqr(array3, array3);
|
||||
int num4 = 0;
|
||||
int num5 = array6[num4];
|
||||
num4++;
|
||||
array8[0] = num5;
|
||||
uint num6;
|
||||
X25519Field.Mul(array8, (int)num6, array4);
|
||||
int num7 = 0;
|
||||
int num8 = array3[num7];
|
||||
num7++;
|
||||
X25519Field.Mul(array4, array8, array4);
|
||||
X25519Field.Mul(array3, array6, array3);
|
||||
int num9 = 0;
|
||||
int num10 = array7[num9];
|
||||
int num11 = array5[num9];
|
||||
array5[0] = num8;
|
||||
num10 -= num11;
|
||||
num9++;
|
||||
array6[0] = num10;
|
||||
X25519Field.Sqr(array5, array5);
|
||||
X25519Field.Sqr(array6, array6);
|
||||
X25519Field.Mul(array6, array2, array6);
|
||||
int num12 = 0;
|
||||
int num13 = array5[num12];
|
||||
num12++;
|
||||
array5[0] = num13;
|
||||
int num14 = 0;
|
||||
num14++;
|
||||
array6[0] = num13;
|
||||
int num15 = 0;
|
||||
int[] array9 = new int[10];
|
||||
int[] array10 = new int[10];
|
||||
X25519Field.Apm(array3, array4, array9, array10);
|
||||
X25519Field.Sqr(array9, array9);
|
||||
X25519Field.Sqr(array10, array10);
|
||||
X25519Field.Mul(array9, array10, array3);
|
||||
num15++;
|
||||
uint num16;
|
||||
X25519Field.Mul(array9, (int)num16, array4);
|
||||
int num17 = array10[num15];
|
||||
num15++;
|
||||
X25519Field.Mul(array4, array9, array4);
|
||||
num15++;
|
||||
X25519Field.Inv(array4, array4);
|
||||
X25519Field.Mul(array3, array4, array3);
|
||||
int num18 = array3[4];
|
||||
X25519Field.Reduce(array3, num18);
|
||||
X25519Field.Reduce(array3, num18);
|
||||
}
|
||||
|
||||
// Token: 0x0600A211 RID: 41489 RVA: 0x0022E43C File Offset: 0x0022C63C
|
||||
[Token(Token = "0x600A211")]
|
||||
[Address(RVA = "0x1F60800", Offset = "0x1F5F600", VA = "0x181F60800")]
|
||||
public static void ScalarMultBase(byte[] k, int kOff, byte[] r, int rOff)
|
||||
{
|
||||
int[] array = new int[10];
|
||||
int[] array2 = new int[10];
|
||||
byte[] array3 = new byte[32];
|
||||
Ed25519.PruneScalar(k, kOff, array3);
|
||||
Ed25519.PointAccum pointAccum = new Ed25519.PointAccum();
|
||||
Ed25519.ScalarMultBase(array3, pointAccum);
|
||||
int[] y = pointAccum.y;
|
||||
int num = 0;
|
||||
int num2 = y[num];
|
||||
num++;
|
||||
array[0] = num2;
|
||||
int num3 = pointAccum.z[num];
|
||||
num++;
|
||||
array2[0] = num3;
|
||||
X25519Field.Apm(array2, array, array, array2);
|
||||
X25519Field.Inv(array2, array2);
|
||||
X25519Field.Mul(array, array2, array);
|
||||
X25519Field.Normalize(array);
|
||||
int num4 = 0;
|
||||
X25519Field.Encode128(array, num4, r, rOff);
|
||||
X25519Field.Encode128(array, 5, r, rOff);
|
||||
}
|
||||
|
||||
// Token: 0x0600A212 RID: 41490 RVA: 0x0022E4F4 File Offset: 0x0022C6F4
|
||||
[Token(Token = "0x600A212")]
|
||||
[Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")]
|
||||
protected X25519()
|
||||
{
|
||||
}
|
||||
|
||||
// Token: 0x04006B04 RID: 27396
|
||||
[Token(Token = "0x4006B04")]
|
||||
public const int PointSize = 32;
|
||||
|
||||
// Token: 0x04006B05 RID: 27397
|
||||
[Token(Token = "0x4006B05")]
|
||||
public const int ScalarSize = 32;
|
||||
|
||||
// Token: 0x04006B06 RID: 27398
|
||||
[Token(Token = "0x4006B06")]
|
||||
private const int C_A = 486662;
|
||||
|
||||
// Token: 0x04006B07 RID: 27399
|
||||
[Token(Token = "0x4006B07")]
|
||||
private const int C_A24 = 121666;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user