Esempio n. 1
0
 public static void AddOne(uint[] x, uint[] z)
 {
     Nat.Inc(8, x, z);
     if (Nat256.Gte(z, Curve25519Field.P))
     {
         Curve25519Field.SubPFrom(z);
     }
 }
Esempio n. 2
0
 public static void Add(uint[] x, uint[] y, uint[] z)
 {
     Nat256.Add(x, y, z);
     if (Nat256.Gte(z, Curve25519Field.P))
     {
         Curve25519Field.SubPFrom(z);
     }
 }
Esempio n. 3
0
 public static void Twice(uint[] x, uint[] z)
 {
     Nat.ShiftUpBit(8, x, 0u, z);
     if (Nat256.Gte(z, Curve25519Field.P))
     {
         Curve25519Field.SubPFrom(z);
     }
 }
Esempio n. 4
0
        public static void Reduce27(uint x, uint[] z)
        {
            uint num  = z[7];
            uint num2 = x << 1 | num >> 31;

            num &= 2147483647u;
            num += Nat.AddWordTo(7, num2 * 19u, z);
            z[7] = num;
            if (num >= 2147483647u && Nat256.Gte(z, Curve25519Field.P))
            {
                Curve25519Field.SubPFrom(z);
            }
        }
Esempio n. 5
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            uint num = xx[7];

            Nat.ShiftUpBit(8, xx, 8, num, z, 0);
            uint num2 = Nat256.MulByWordAddTo(19u, xx, z) << 1;
            uint num3 = z[7];

            num2 += (num3 >> 31) - (num >> 31);
            num3 &= 2147483647u;
            num3 += Nat.AddWordTo(7, num2 * 19u, z);
            z[7]  = num3;
            if (num3 >= 2147483647u && Nat256.Gte(z, Curve25519Field.P))
            {
                Curve25519Field.SubPFrom(z);
            }
        }