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; } }