Exemplo n.º 1
0
 public static void Twice(uint[] x, uint[] z)
 {
     if (Nat.ShiftUpBit(5, x, 0u, z) != 0 || (z[4] == uint.MaxValue && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 2
0
 public static void Twice(uint[] x, uint[] z)
 {
     if (Nat.ShiftUpBit(5, x, 0u, z) != 0u || (z[4] == 4294967295u && Nat160.Gte(z, SecP160R1Field.P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 3
0
 public static void Reduce32(uint x, uint[] z)
 {
     if ((x != 0 && Nat160.MulWordsAdd(2147483649u, x, z, 0) != 0) || (z[4] == uint.MaxValue && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 4
0
 public static void AddOne(uint[] x, uint[] z)
 {
     if (Nat.Inc(5, x, z) != 0u || (z[4] == 4294967295u && Nat160.Gte(z, SecP160R1Field.P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 5
0
 public static void AddOne(uint[] x, uint[] z)
 {
     if ((Nat.Inc(5, x, z) != 0) || ((z[4] == uint.MaxValue) && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 0x80000001, z);
     }
 }
Exemplo n.º 6
0
 public static void Reduce32(uint x, uint[] z)
 {
     if ((x != 0u && Nat160.MulWordsAdd(2147483649u, x, z, 0) != 0u) || (z[4] == 4294967295u && Nat160.Gte(z, SecP160R1Field.P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 7
0
 public static void Reduce32(uint x, uint[] z)
 {
     if (((x != 0) && (Nat160.MulWordsAdd(0x80000001, x, z, 0) != 0)) || ((z[4] == uint.MaxValue) && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 0x80000001, z);
     }
 }
Exemplo n.º 8
0
 public static void Twice(uint[] x, uint[] z)
 {
     if ((Nat.ShiftUpBit(5, x, 0, z) != 0) || ((z[4] == uint.MaxValue) && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 0x80000001, z);
     }
 }
Exemplo n.º 9
0
 public static void Add(uint[] x, uint[] y, uint[] z)
 {
     if (Nat160.Add(x, y, z) != 0 || (z[4] == 4294967295u && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 10
0
 public static void AddOne(uint[] x, uint[] z)
 {
     if (Nat.Inc(5, x, z) != 0 || (z[4] == uint.MaxValue && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, 2147483649u, z);
     }
 }
Exemplo n.º 11
0
 public static void Reduce32(uint x, uint[] z)
 {
     if ((x != 0 && Nat160.MulWordsAdd(PInv, x, z, 0) != 0) ||
         (z[4] == P4 && Nat160.Gte(z, P)))
     {
         Nat.AddWordTo(5, PInv, z);
     }
 }
Exemplo n.º 12
0
        public static void Twice(uint[] x, uint[] z)
        {
            uint c = Nat.ShiftUpBit(5, x, 0, z);

            if (c != 0 || (z[4] == P4 && Nat160.Gte(z, P)))
            {
                Nat.AddWordTo(5, PInv, z);
            }
        }
Exemplo n.º 13
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(5, x, z);

            if (c != 0 || (z[4] == P4 && Nat160.Gte(z, P)))
            {
                Nat.AddWordTo(5, PInv, z);
            }
        }
Exemplo n.º 14
0
        public static void Reduce27(uint x, uint[] z)
        {
            uint num  = z[7];
            uint num2 = (x << 1) | (num >> 31);

            num &= 0x7FFFFFFFu;
            if ((z[7] = num + Nat.AddWordTo(7, num2 * 19, z)) >= 2147483647 && Nat256.Gte(z, P))
            {
                SubPFrom(z);
            }
        }
Exemplo n.º 15
0
    public static void Reduce27(uint x, uint[] z)
    {
        uint num  = z[7];
        uint num2 = (x << 1) | (num >> 31);

        num &= int.MaxValue;
        if ((z[7] = num + Nat.AddWordTo(7, num2 * 19, z)) >= int.MaxValue && Nat256.Gte(z, P))
        {
            SubPFrom(z);
        }
    }
Exemplo n.º 16
0
        public static void Reduce23(uint[] z)
        {
            uint num  = z[16];
            uint num2 = Nat.AddWordTo(16, num >> 9, z) + (num & 511u);

            if (num2 > 511u || (num2 == 511u && Nat.Eq(16, z, SecP521R1Field.P)))
            {
                num2 += Nat.Inc(16, z);
                num2 &= 511u;
            }
            z[16] = num2;
        }
Exemplo n.º 17
0
        public static void Reduce23(uint[] z)
        {
            uint num  = z[0x10];
            uint num2 = Nat.AddWordTo(0x10, num >> 9, z) + (num & 0x1ff);

            if ((num2 > 0x1ff) || ((num2 == 0x1ff) && Nat.Eq(0x10, z, P)))
            {
                num2 += Nat.Inc(0x10, z);
                num2 &= 0x1ff;
            }
            z[0x10] = num2;
        }
Exemplo n.º 18
0
        public static void Reduce23(uint[] z)
        {
            uint z16 = z[16];
            uint c   = Nat.AddWordTo(16, z16 >> 9, z) + (z16 & P16);

            if (c > P16 || (c == P16 && Nat.Eq(16, z, P)))
            {
                c += Nat.Inc(16, z);
                c &= P16;
            }
            z[16] = c;
        }
Exemplo n.º 19
0
        public static void Reduce23(uint[] z)
        {
            uint num  = z[16];
            uint num2 = Nat.AddWordTo(16, num >> 9, z) + (num & 0x1FF);

            if (num2 > 511 || (num2 == 511 && Nat.Eq(16, z, P)))
            {
                num2 += Nat.Inc(16, z);
                num2 &= 0x1FF;
            }
            z[16] = num2;
        }
Exemplo n.º 20
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);
            }
        }
Exemplo n.º 21
0
        public static void Reduce27(uint x, uint[] z)
        {
            uint num  = z[7];
            uint num2 = (x << 1) | (num >> 0x1f);

            num &= 0x7fffffff;
            num += Nat.AddWordTo(7, num2 * 0x13, z);
            z[7] = num;
            if ((num >= 0x7fffffff) && Nat256.Gte(z, P))
            {
                SubPFrom(z);
            }
        }
Exemplo n.º 22
0
        public static void Reduce27(uint x, uint[] z)
        {
            Debug.Assert(x >> 26 == 0);

            uint z7 = z[7];
            uint c  = (x << 1 | z7 >> 31);

            z7  &= P7;
            z7  += Nat.AddWordTo(7, c * PInv, z);
            z[7] = z7;
            if (z7 >= P7 && Nat256.Gte(z, P))
            {
                SubPFrom(z);
            }
        }
Exemplo n.º 23
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 &= 0x7FFFFFFFu;
            if ((z[7] = num3 + Nat.AddWordTo(7, num2 * 19, z)) >= 2147483647 && Nat256.Gte(z, P))
            {
                SubPFrom(z);
            }
        }
Exemplo n.º 24
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            uint c = xx[7];

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

            num2 += (num3 >> 0x1f) - (c >> 0x1f);
            num3 &= 0x7fffffff;
            num3 += Nat.AddWordTo(7, num2 * 0x13, z);
            z[7]  = num3;
            if ((num3 >= 0x7fffffff) && Nat256.Gte(z, P))
            {
                SubPFrom(z);
            }
        }
Exemplo n.º 25
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);
            }
        }
Exemplo n.º 26
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            Debug.Assert(xx[15] >> 30 == 0);

            uint xx07 = xx[7];

            Nat.ShiftUpBit(8, xx, 8, xx07, z, 0);
            uint c   = Nat256.MulByWordAddTo(PInv, xx, z) << 1;
            uint z07 = z[7];

            z[7] = z07 & P7;
            c   += (z07 >> 31) - (xx07 >> 31);
            Nat.AddWordTo(8, c * PInv, z);
            if (Nat256.Gte(z, P))
            {
                AddPInvTo(z);
            }
        }
Exemplo n.º 27
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            Debug.Assert(xx[15] >> 30 == 0);

            uint xx07 = xx[7];

            Nat.ShiftUpBit(8, xx, 8, xx07, z, 0);
            uint c  = Nat256.MulByWordAddTo(PInv, xx, z) << 1;
            uint z7 = z[7];

            c   += (z7 >> 31) - (xx07 >> 31);
            z7  &= P7;
            z7  += Nat.AddWordTo(7, c * PInv, z);
            z[7] = z7;
            if (z7 >= P7 && Nat256.Gte(z, P))
            {
                SubPFrom(z);
            }
        }