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: 0x02001A13 RID: 6675 [Token(Token = "0x2001A13")] public abstract class X448 { // Token: 0x0600A234 RID: 41524 RVA: 0x0022F778 File Offset: 0x0022D978 [Token(Token = "0x600A234")] [Address(RVA = "0x1F65D90", Offset = "0x1F64B90", VA = "0x181F65D90")] public static bool CalculateAgreement(byte[] k, int kOff, byte[] u, int uOff, byte[] r, int rOff) { bool flag; return !flag; } // Token: 0x0600A235 RID: 41525 RVA: 0x0022F78C File Offset: 0x0022D98C [Token(Token = "0x600A235")] [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: 0x0600A236 RID: 41526 RVA: 0x0022F7AC File Offset: 0x0022D9AC [Token(Token = "0x600A236")] [Address(RVA = "0x1F65E50", Offset = "0x1F64C50", VA = "0x181F65E50")] 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; } // Token: 0x0600A237 RID: 41527 RVA: 0x0022F7E0 File Offset: 0x0022D9E0 [Token(Token = "0x600A237")] [Address(RVA = "0x1F65F90", Offset = "0x1F64D90", VA = "0x181F65F90")] public static void GeneratePrivateKey(SecureRandom random, byte[] k) { double num = random.NextDouble(); } // Token: 0x0600A238 RID: 41528 RVA: 0x0022F7FC File Offset: 0x0022D9FC [Token(Token = "0x600A238")] [Address(RVA = "0x1F66000", Offset = "0x1F64E00", VA = "0x181F66000")] public static void GeneratePublicKey(byte[] k, int kOff, byte[] r, int rOff) { uint[] array = new uint[16]; uint[] array2 = new uint[16]; Ed448.ScalarMultBaseXY(k, kOff, array, array2); X448Field.Inv(array, array); X448Field.Mul(array, array2, array); X448Field.Sqr(array, array); X448Field.Reduce(array, 1); X448Field.Reduce(array, -1); X448Field.Encode(array, r, rOff); } // Token: 0x0600A239 RID: 41529 RVA: 0x0022F850 File Offset: 0x0022DA50 [Token(Token = "0x600A239")] [Address(RVA = "0x1F66150", Offset = "0x1F64F50", VA = "0x181F66150")] private static void PointDouble(uint[] x, uint[] z) { uint[] array = new uint[16]; uint[] array2 = new uint[16]; X448Field.Add(x, z, array); X448Field.Sub(x, z, array2); X448Field.Sqr(array, array); X448Field.Sqr(array2, array2); X448Field.Mul(array, array2, x); X448Field.Sub(array, array2, array); X448Field.Mul(array, (uint)39082, z); X448Field.Add(z, array2, z); X448Field.Mul(z, array, z); } // Token: 0x0600A23A RID: 41530 RVA: 0x0022F8B8 File Offset: 0x0022DAB8 [Token(Token = "0x600A23A")] [Address(RVA = "0x1F66280", Offset = "0x1F65080", VA = "0x181F66280")] public static void Precompute() { Ed448.Precompute(); } // Token: 0x0600A23B RID: 41531 RVA: 0x0022F8CC File Offset: 0x0022DACC [Token(Token = "0x600A23B")] [Address(RVA = "0x1F662D0", Offset = "0x1F650D0", VA = "0x181F662D0")] public static void ScalarMult(byte[] k, int kOff, byte[] u, int uOff, byte[] r, int rOff) { uint[] array = new uint[14]; int num = 0; int length = k.Length; int num2 = kOff + 1; num++; byte b; array[0] = (uint)b; uint[] array2 = new uint[16]; int num3 = 0; X448Field.Decode56(u, uOff, array2, num3); uint num4; X448Field.Decode56(u, uOff, array2, (int)num4); uint num5; X448Field.Decode56(u, uOff, array2, (int)num5); uint num6; X448Field.Decode56(u, uOff, array2, (int)num6); uint num7; X448Field.Decode56(u, uOff, array2, (int)num7); uint num8; X448Field.Decode56(u, uOff, array2, (int)num8); uint num9; X448Field.Decode56(u, uOff, array2, (int)num9); uint num10; X448Field.Decode56(u, uOff, array2, (int)num10); uint[] array3 = new uint[16]; uint num11 = array2[num]; num++; array3[0] = num11; uint[] array4 = new uint[16]; uint num12; array4[0] = num12; uint[] array5 = new uint[16]; array5[0] = num12; uint[] array6 = new uint[16]; uint[] array7 = new uint[16]; uint[] array8 = new uint[16]; uint num13 = array6[num]; num++; array7[0] = num13; X448Field.Sub(array5, array6, array5); uint num14 = array4[num]; num++; array6[0] = num14; X448Field.Sub(array3, array4, array3); X448Field.Mul(array7, array3, array7); X448Field.Mul(array5, array6, array5); X448Field.Sqr(array6, array6); X448Field.Sqr(array3, array3); X448Field.Sub(array6, array3, array8); uint num15; X448Field.Mul(array8, num15, array4); num++; X448Field.Mul(array4, array8, array4); X448Field.Mul(array3, array6, array3); X448Field.Sub(array7, array5, array6); num++; X448Field.Sqr(array5, array5); X448Field.Sqr(array6, array6); X448Field.Mul(array6, array2, array6); uint num17; uint num16 = array[(int)num17]; uint num18 = array5[num]; num++; array5[0] = num18; num++; array6[0] = num18; uint[] array9 = new uint[16]; uint[] array10 = new uint[16]; uint num19 = array4[num]; num++; array9[0] = num19; X448Field.Sub(array3, array4, array10); X448Field.Sqr(array9, array9); X448Field.Sqr(array10, array10); X448Field.Mul(array9, array10, array3); X448Field.Sub(array9, array10, array9); uint num20; X448Field.Mul(array9, num20, array4); num++; X448Field.Mul(array4, array9, array4); num++; X448Field.Inv(array4, array4); X448Field.Mul(array3, array4, array3); uint num21 = array3[7]; num21 += (uint)1; num21 += (uint)1; uint num22 = array3[num]; num++; num22 += num21; array3[0] = num22; array3[7] = (uint)num; uint num23 = array3[num]; num++; num23 += (uint)num; array3[0] = num23; array3[7] = 0U; } // Token: 0x0600A23C RID: 41532 RVA: 0x0022FBBC File Offset: 0x0022DDBC [Token(Token = "0x600A23C")] [Address(RVA = "0x1F66000", Offset = "0x1F64E00", VA = "0x181F66000")] public static void ScalarMultBase(byte[] k, int kOff, byte[] r, int rOff) { uint[] array = new uint[16]; uint[] array2 = new uint[16]; Ed448.ScalarMultBaseXY(k, kOff, array, array2); X448Field.Inv(array, array); X448Field.Mul(array, array2, array); X448Field.Sqr(array, array); X448Field.Reduce(array, 1); X448Field.Reduce(array, -1); X448Field.Encode(array, r, rOff); } // Token: 0x0600A23D RID: 41533 RVA: 0x0022FC10 File Offset: 0x0022DE10 [Token(Token = "0x600A23D")] [Address(RVA = "0x3F5100", Offset = "0x3F3F00", VA = "0x1803F5100")] protected X448() { } // Token: 0x04006B0D RID: 27405 [Token(Token = "0x4006B0D")] public const int PointSize = 56; // Token: 0x04006B0E RID: 27406 [Token(Token = "0x4006B0E")] public const int ScalarSize = 56; // Token: 0x04006B0F RID: 27407 [Token(Token = "0x4006B0F")] private const uint C_A = 156326U; // Token: 0x04006B10 RID: 27408 [Token(Token = "0x4006B10")] private const uint C_A24 = 39082U; } }