Files
niko c12fbe3fc6 m
2026-04-12 16:51:38 +02:00

219 lines
6.5 KiB
C#

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: 0x02001AF1 RID: 6897
[Token(Token = "0x2001AF1")]
public abstract class X25519
{
// Token: 0x0600A5D7 RID: 42455 RVA: 0x00237154 File Offset: 0x00235354
[Token(Token = "0x600A5D7")]
[Address(RVA = "0x745690", Offset = "0x744690", VA = "0x180745690")]
public static bool CalculateAgreement(byte[] k, int kOff, byte[] u, int uOff, byte[] r, int rOff)
{
bool flag;
return !flag;
}
// Token: 0x0600A5D8 RID: 42456 RVA: 0x00237168 File Offset: 0x00235368
[Token(Token = "0x600A5D8")]
[Address(RVA = "0x45D6B0", Offset = "0x45C6B0", VA = "0x18045D6B0")]
private static uint Decode32(byte[] bs, int off)
{
int length = bs.Length;
int num = off + 1;
throw new NullReferenceException();
}
// Token: 0x0600A5D9 RID: 42457 RVA: 0x00237188 File Offset: 0x00235388
[Token(Token = "0x600A5D9")]
[Address(RVA = "0x745750", Offset = "0x744750", VA = "0x180745750")]
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: 0x0600A5DA RID: 42458 RVA: 0x002371D8 File Offset: 0x002353D8
[Token(Token = "0x600A5DA")]
[Address(RVA = "0x7458C0", Offset = "0x7448C0", VA = "0x1807458C0")]
public static void GeneratePrivateKey(SecureRandom random, byte[] k)
{
byte b = k[3];
k[3] = b;
k[3] = b;
}
// Token: 0x0600A5DB RID: 42459 RVA: 0x00237204 File Offset: 0x00235404
[Token(Token = "0x600A5DB")]
[Address(RVA = "0x745950", Offset = "0x744950", VA = "0x180745950")]
public static void GeneratePublicKey(byte[] k, int kOff, byte[] r, int rOff)
{
X25519.ScalarMultBase(k, kOff, r, rOff);
}
// Token: 0x0600A5DC RID: 42460 RVA: 0x0023721C File Offset: 0x0023541C
[Token(Token = "0x600A5DC")]
[Address(RVA = "0x745960", Offset = "0x744960", VA = "0x180745960")]
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: 0x0600A5DD RID: 42461 RVA: 0x0023727C File Offset: 0x0023547C
[Token(Token = "0x600A5DD")]
[Address(RVA = "0x745AC0", Offset = "0x744AC0", VA = "0x180745AC0")]
public static void Precompute()
{
Ed25519.Precompute();
}
// Token: 0x0600A5DE RID: 42462 RVA: 0x00237290 File Offset: 0x00235490
[Token(Token = "0x600A5DE")]
[Address(RVA = "0x745E30", Offset = "0x744E30", VA = "0x180745E30")]
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: 0x0600A5DF RID: 42463 RVA: 0x002374E8 File Offset: 0x002356E8
[Token(Token = "0x600A5DF")]
[Address(RVA = "0x745B10", Offset = "0x744B10", VA = "0x180745B10")]
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: 0x0600A5E0 RID: 42464 RVA: 0x002375A0 File Offset: 0x002357A0
[Token(Token = "0x600A5E0")]
[Address(RVA = "0x412370", Offset = "0x411370", VA = "0x180412370")]
protected X25519()
{
}
// Token: 0x04006CBD RID: 27837
[Token(Token = "0x4006CBD")]
public const int PointSize = 32;
// Token: 0x04006CBE RID: 27838
[Token(Token = "0x4006CBE")]
public const int ScalarSize = 32;
// Token: 0x04006CBF RID: 27839
[Token(Token = "0x4006CBF")]
private const int C_A = 486662;
// Token: 0x04006CC0 RID: 27840
[Token(Token = "0x4006CC0")]
private const int C_A24 = 121666;
}
}