Ejemplo n.º 1
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if ((Nat.Add(10, xx, yy, zz) != 0u || (zz[9] == 4294967295u && Nat.Gte(10, zz, SecP160R2Field.PExt))) && Nat.AddTo(SecP160R2Field.PExtInv.Length, SecP160R2Field.PExtInv, zz) != 0u)
     {
         Nat.IncAt(10, zz, SecP160R2Field.PExtInv.Length);
     }
 }
Ejemplo n.º 2
0
 public static void Add(uint[] x, uint[] y, uint[] z)
 {
     if (Nat.Add(12, x, y, z) != 0 || (z[11] == uint.MaxValue && Nat.Gte(12, z, P)))
     {
         AddPInvTo(z);
     }
 }
Ejemplo n.º 3
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if ((Nat.Add(12, xx, yy, zz) != 0 || (zz[11] == 4294967295u && Nat.Gte(12, zz, PExt))) && Nat.AddTo(PExtInv.Length, PExtInv, zz) != 0)
     {
         Nat.IncAt(12, zz, PExtInv.Length);
     }
 }
Ejemplo n.º 4
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if ((Nat.Add(10, xx, yy, zz) != 0 || (zz[9] == uint.MaxValue && Nat.Gte(10, zz, PExt))) && Nat.AddTo(PExtInv.Length, PExtInv, zz) != 0)
     {
         Nat.IncAt(10, zz, PExtInv.Length);
     }
 }
Ejemplo n.º 5
0
 public static void Add(uint[] x, uint[] y, uint[] z)
 {
     if (Nat.Add(12, x, y, z) != 0 || (z[11] == 4294967295u && Nat.Gte(12, z, P)))
     {
         AddPInvTo(z);
     }
 }
Ejemplo n.º 6
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if (((Nat.Add(12, xx, yy, zz) != 0) || ((zz[11] == uint.MaxValue) && Nat.Gte(12, zz, PExt))) && (Nat.AddTo(PExtInv.Length, PExtInv, zz) != 0))
     {
         Nat.IncAt(12, zz, PExtInv.Length);
     }
 }
Ejemplo n.º 7
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if ((Nat.Add(24, xx, yy, zz) != 0u || (zz[23] == 4294967295u && Nat.Gte(24, zz, SecP384R1Field.PExt))) && Nat.AddTo(SecP384R1Field.PExtInv.Length, SecP384R1Field.PExtInv, zz) != 0u)
     {
         Nat.IncAt(24, zz, SecP384R1Field.PExtInv.Length);
     }
 }
Ejemplo n.º 8
0
 public static void Add(uint[] x, uint[] y, uint[] z)
 {
     if (Nat.Add(12, x, y, z) != 0u || (z[11] == 4294967295u && Nat.Gte(12, z, SecP384R1Field.P)))
     {
         SecP384R1Field.AddPInvTo(z);
     }
 }
Ejemplo n.º 9
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if (Nat.Add(16, xx, yy, zz) != 0 || (zz[15] >= 4294967294u && Nat.Gte(16, zz, PExt)))
     {
         Nat.SubFrom(16, PExt, zz);
     }
 }
Ejemplo n.º 10
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if ((Nat.Add(0x10, xx, yy, zz) != 0) || ((zz[15] >= 0xfffffffe) && Nat.Gte(0x10, zz, PExt)))
     {
         Nat.SubFrom(0x10, PExt, zz);
     }
 }
Ejemplo n.º 11
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     Nat.Add(16, xx, yy, zz);
     if (Nat.Gte(16, zz, Curve25519Field.PExt))
     {
         Curve25519Field.SubPExtFrom(zz);
     }
 }
Ejemplo n.º 12
0
 public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
 {
     Nat.Add(16, xx, yy, zz);
     if (Nat.Gte(16, zz, PExt))
     {
         SubPExtFrom(zz);
     }
 }
Ejemplo n.º 13
0
        public static void SubtractExt(uint[] xx, uint[] yy, uint[] zz)
        {
            int c = Nat.Sub(24, xx, yy, zz);

            if (c != 0)
            {
                Nat.Add(24, zz, PExt, zz);
            }
        }
Ejemplo n.º 14
0
        public static void Subtract(uint[] x, uint[] y, uint[] z)
        {
            int c = Nat.Sub(12, x, y, z);

            if (c != 0)
            {
                Nat.Add(12, z, P, z);
            }
        }
Ejemplo n.º 15
0
    public static void Add(uint[] p, uint[] x, uint[] y, uint[] z)
    {
        int len = p.Length;

        if (Nat.Add(len, x, y, z) != 0)
        {
            Nat.SubFrom(len, p, z);
        }
    }
Ejemplo n.º 16
0
        public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
        {
            uint c = Nat.Add(24, xx, yy, zz);

            if (c != 0 || (zz[23] == PExt23 && Nat.Gte(24, zz, PExt)))
            {
                Nat.Sub(24, zz, PExt, zz);
            }
        }
Ejemplo n.º 17
0
        public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
        {
            uint c = Nat.Add(16, xx, yy, zz);

            if (c != 0 || (zz[15] >= PExt15 && Nat.Gte(16, zz, PExt)))
            {
                Nat.SubFrom(16, PExt, zz);
            }
        }
Ejemplo n.º 18
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint c = Nat.Add(12, x, y, z);

            if (c != 0 || (z[11] == P11 && Nat.Gte(12, z, P)))
            {
                AddPInvTo(z);
            }
        }
Ejemplo n.º 19
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint num = (Nat.Add(0x10, x, y, z) + x[0x10]) + y[0x10];

            if ((num > 0x1ff) || ((num == 0x1ff) && Nat.Eq(0x10, z, P)))
            {
                num += Nat.Inc(0x10, z);
                num &= 0x1ff;
            }
            z[0x10] = num;
        }
Ejemplo n.º 20
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint num = Nat.Add(16, x, y, z) + x[16] + y[16];

            if (num > 511 || (num == 511 && Nat.Eq(16, z, P)))
            {
                num += Nat.Inc(16, z);
                num &= 0x1FF;
            }
            z[16] = num;
        }
Ejemplo n.º 21
0
        public static void Half(uint[] x, uint[] z)
        {
            if ((x[0] & 1) == 0)
            {
                Nat.ShiftDownBit(12, x, 0u, z);
                return;
            }
            uint c = Nat.Add(12, x, P, z);

            Nat.ShiftDownBit(12, z, c);
        }
Ejemplo n.º 22
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint c = Nat.Add(16, x, y, z) + x[16] + y[16];

            if (c > P16 || (c == P16 && Nat.Eq(16, z, P)))
            {
                c += Nat.Inc(16, z);
                c &= P16;
            }
            z[16] = c;
        }
Ejemplo n.º 23
0
 private static void InversionResult(uint[] p, int ac, uint[] a, uint[] z)
 {
     if (ac < 0)
     {
         Nat.Add(p.Length, a, p, z);
     }
     else
     {
         Array.Copy(a, 0, z, 0, p.Length);
     }
 }
Ejemplo n.º 24
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint num = Nat.Add(16, x, y, z) + x[16] + y[16];

            if (num > 511u || (num == 511u && Nat.Eq(16, z, SecP521R1Field.P)))
            {
                num += Nat.Inc(16, z);
                num &= 511u;
            }
            z[16] = num;
        }
Ejemplo n.º 25
0
        public static void Half(uint[] x, uint[] z)
        {
            if ((x[0] & 1u) == 0u)
            {
                Nat.ShiftDownBit(12, x, 0u, z);
                return;
            }
            uint c = Nat.Add(12, x, SecP384R1Field.P, z);

            Nat.ShiftDownBit(12, z, c);
        }
Ejemplo n.º 26
0
        public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
        {
            uint c = Nat.Add(14, xx, yy, zz);

            if (c != 0 || (zz[13] == PExt13 && Nat.Gte(14, zz, PExt)))
            {
                if (Nat.AddTo(PExtInv.Length, PExtInv, zz) != 0)
                {
                    Nat.IncAt(14, zz, PExtInv.Length);
                }
            }
        }
Ejemplo n.º 27
0
        public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
        {
            var c = Nat.Add(16, xx, yy, zz);

            if (c != 0 || zz[15] == PExt15 && Nat.Gte(16, zz, PExt))
            {
                if (Nat.AddTo(PExtInv.Length, PExtInv, zz) != 0)
                {
                    Nat.IncAt(16, zz, PExtInv.Length);
                }
            }
        }
Ejemplo n.º 28
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            Debug.Assert(xx[32] >> 18 == 0);
            uint xx32 = xx[32];
            uint c    = Nat.ShiftDownBits(16, xx, 16, 9, xx32, z) >> 23;

            c += xx32 >> 9;
            c += Nat.Add(16, z, xx, z);
            if (c > P16 || (c == P16 && Nat.Eq(16, z, P)))
            {
                c += Nat.Inc(16, z, 0);
                c &= P16;
            }
            z[16] = c;
        }