示例#1
0
 public static void SubtractExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if ((Nat.Sub(12, xx, yy, zz) != 0) && (Nat.SubFrom(PExtInv.Length, PExtInv, zz) != 0))
     {
         Nat.DecAt(12, zz, PExtInv.Length);
     }
 }
        private static void SubPInvFrom(uint[] z)
        {
            long num = z[0] - 1L;

            z[0] = (uint)num;
            num  = num >> 0x20;
            num  = ((long)((ulong)num)) + (z[1] + 1L);
            z[1] = (uint)num;
            num  = num >> 0x20;
            if (num != 0L)
            {
                num += z[2];
                z[2] = (uint)num;
                num  = num >> 0x20;
            }
            num  = ((long)((ulong)num)) + (z[3] - 1L);
            z[3] = (uint)num;
            num  = num >> 0x20;
            num  = ((long)((ulong)num)) + (z[4] - 1L);
            z[4] = (uint)num;
            num  = num >> 0x20;
            if (num != 0L)
            {
                Nat.DecAt(12, z, 5);
            }
        }
示例#3
0
        private static void SubPInvFrom(uint[] z)
        {
            long c = (long)z[0] - 1;

            z[0] = (uint)c;
            c  >>= 32;
            c   += (long)z[1] + 1;
            z[1] = (uint)c;
            c  >>= 32;
            if (c != 0)
            {
                c   += (long)z[2];
                z[2] = (uint)c;
                c  >>= 32;
            }
            c   += (long)z[3] - 1;
            z[3] = (uint)c;
            c  >>= 32;
            c   += (long)z[4] - 1;
            z[4] = (uint)c;
            c  >>= 32;
            if (c != 0)
            {
                Nat.DecAt(12, z, 5);
            }
        }
示例#4
0
 public static void SubtractExt(uint[] xx, uint[] yy, uint[] zz)
 {
     if (Nat.Sub(24, xx, yy, zz) != 0 && Nat.SubFrom(PExtInv.Length, PExtInv, zz) != 0)
     {
         Nat.DecAt(24, zz, PExtInv.Length);
     }
 }
示例#5
0
        private static void SubPInvFrom(uint[] z)
        {
            long num = (long)z[0] - 1L;

            z[0]  = (uint)num;
            num >>= 32;
            num  += (long)z[1] + 1L;
            z[1]  = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num  += z[2];
                z[2]  = (uint)num;
                num >>= 32;
            }
            num  += (long)z[3] - 1L;
            z[3]  = (uint)num;
            num >>= 32;
            num  += (long)z[4] - 1L;
            z[4]  = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                Nat.DecAt(12, z, 5);
            }
        }
示例#6
0
        public static void SubtractExt(uint[] xx, uint[] yy, uint[] zz)
        {
            int num = Nat.Sub(10, xx, yy, zz);

            if (num != 0 && Nat.SubFrom(SecP160R2Field.PExtInv.Length, SecP160R2Field.PExtInv, zz) != 0)
            {
                Nat.DecAt(10, zz, SecP160R2Field.PExtInv.Length);
            }
        }
示例#7
0
        private static void SubPInvFrom(uint[] z)
        {
            long c = (long)z[0] - PInv;

            z[0] = (uint)c;
            c  >>= 32;
            if (c != 0)
            {
                Nat.DecAt(7, z, 1);
            }
            z[7] &= P7;
        }
示例#8
0
        public static void SubtractExt(uint[] xx, uint[] yy, uint[] zz)
        {
            int c = Nat.Sub(10, xx, yy, zz);

            if (c != 0)
            {
                if (Nat.SubFrom(PExtInv.Length, PExtInv, zz) != 0)
                {
                    Nat.DecAt(10, zz, PExtInv.Length);
                }
            }
        }
示例#9
0
        private static uint AddPTo(uint[] z)
        {
            long c = (long)z[0] - PInv;

            z[0] = (uint)c;
            c  >>= 32;
            if (c != 0)
            {
                c = Nat.DecAt(7, z, 1);
            }
            c   += (long)z[7] + (P7 + 1);
            z[7] = (uint)c;
            c  >>= 32;
            return((uint)c);
        }
示例#10
0
        private static uint AddPTo(uint[] z)
        {
            long num = (long)((ulong)z[0] - 19uL);

            z[0]  = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num = (long)Nat.DecAt(7, z, 1);
            }
            num  += (long)((ulong)z[7] + (ulong)-2147483648);
            z[7]  = (uint)num;
            num >>= 32;
            return((uint)num);
        }
示例#11
0
        private static uint AddPTo(uint[] z)
        {
            long num = z[0] - 0x13L;

            z[0] = (uint)num;
            num  = num >> 0x20;
            if (num != 0L)
            {
                num = Nat.DecAt(7, z, 1);
            }
            num  = (long)(((ulong)num) + (z[7] + 0x80000000L));
            z[7] = (uint)num;
            num  = num >> 0x20;
            return((uint)num);
        }
示例#12
0
        private static uint AddPTo(uint[] z)
        {
            long num = (long)z[0] - 19L;

            z[0]  = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                num = Nat.DecAt(7, z, 1);
            }
            num  += (long)z[7] + 2147483648L;
            z[7]  = (uint)num;
            num >>= 32;
            return((uint)num);
        }
示例#13
0
        private static void SubPInvFrom(uint[] z)
        {
            long num = (long)z[0] - 1L;

            z[0]  = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                num  += z[1];
                z[1]  = (uint)num;
                num >>= 32;
            }
            num  += (long)z[2] - 1L;
            z[2]  = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                Nat.DecAt(6, z, 3);
            }
        }
示例#14
0
        private static void SubPInvFrom(uint[] z)
        {
            long c = (long)z[0] - 1;

            z[0] = (uint)c;
            c  >>= 32;
            if (c != 0)
            {
                c   += (long)z[1];
                z[1] = (uint)c;
                c  >>= 32;
            }
            c   += (long)z[2] - 1;
            z[2] = (uint)c;
            c  >>= 32;
            if (c != 0)
            {
                Nat.DecAt(6, z, 3);
            }
        }
示例#15
0
        private static int SubPExtFrom(uint[] zz)
        {
            long num = zz[0] - PExt[0];

            zz[0] = (uint)num;
            num   = num >> 0x20;
            if (num != 0L)
            {
                num = Nat.DecAt(8, zz, 1);
            }
            num   = ((long)((ulong)num)) + (zz[8] + 0x13L);
            zz[8] = (uint)num;
            num   = num >> 0x20;
            if (num != 0L)
            {
                num = Nat.IncAt(15, zz, 9);
            }
            num    = (long)(((ulong)num) + (zz[15] - (PExt[15] + 1)));
            zz[15] = (uint)num;
            num    = num >> 0x20;
            return((int)num);
        }
示例#16
0
        private static int SubPExtFrom(uint[] zz)
        {
            long c = (long)zz[0] - PExt[0];

            zz[0] = (uint)c;
            c   >>= 32;
            if (c != 0)
            {
                c = Nat.DecAt(8, zz, 1);
            }
            c    += (long)zz[8] + PInv;
            zz[8] = (uint)c;
            c   >>= 32;
            if (c != 0)
            {
                c = Nat.IncAt(15, zz, 9);
            }
            c     += (long)zz[15] - (PExt[15] + 1);
            zz[15] = (uint)c;
            c    >>= 32;
            return((int)c);
        }
示例#17
0
        private static uint AddPExtTo(uint[] zz)
        {
            long c = (long)zz[0] + PExt[0];

            zz[0] = (uint)c;
            c   >>= 32;
            if (c != 0)
            {
                c = Nat.IncAt(8, zz, 1);
            }
            c    += (long)zz[8] - PInv;
            zz[8] = (uint)c;
            c   >>= 32;
            if (c != 0)
            {
                c = Nat.DecAt(15, zz, 9);
            }
            c     += (long)zz[15] + (PExt[15] + 1);
            zz[15] = (uint)c;
            c    >>= 32;
            return((uint)c);
        }
示例#18
0
        private static uint AddPExtTo(uint[] zz)
        {
            long num = (long)((ulong)zz[0] + (ulong)Curve25519Field.PExt[0]);

            zz[0] = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num = (long)((ulong)Nat.IncAt(8, zz, 1));
            }
            num  += (long)((ulong)zz[8] - 19uL);
            zz[8] = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num = (long)Nat.DecAt(15, zz, 9);
            }
            num   += (long)((ulong)zz[15] + (ulong)(Curve25519Field.PExt[15] + 1u));
            zz[15] = (uint)num;
            num  >>= 32;
            return((uint)num);
        }
示例#19
0
        private static int SubPExtFrom(uint[] zz)
        {
            long num = (long)zz[0] - (long)PExt[0];

            zz[0] = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                num = Nat.DecAt(8, zz, 1);
            }
            num  += (long)zz[8] + 19L;
            zz[8] = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                num = Nat.IncAt(15, zz, 9);
            }
            num   += (long)zz[15] - (long)(PExt[15] + 1);
            zz[15] = (uint)num;
            num  >>= 32;
            return((int)num);
        }
示例#20
0
        private static uint AddPExtTo(uint[] zz)
        {
            long num = (long)zz[0] + (long)PExt[0];

            zz[0] = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                num = Nat.IncAt(8, zz, 1);
            }
            num  += (long)zz[8] - 19L;
            zz[8] = (uint)num;
            num >>= 32;
            if (num != 0)
            {
                num = Nat.DecAt(15, zz, 9);
            }
            num   += (long)zz[15] + (long)(PExt[15] + 1);
            zz[15] = (uint)num;
            num  >>= 32;
            return((uint)num);
        }
示例#21
0
        private static uint AddPExtTo(uint[] zz)
        {
            long num = zz[0] + PExt[0];

            zz[0] = (uint)num;
            num   = num >> 0x20;
            if (num != 0L)
            {
                num = Nat.IncAt(8, zz, 1);
            }
            num   = ((long)((ulong)num)) + (zz[8] - 0x13L);
            zz[8] = (uint)num;
            num   = num >> 0x20;
            if (num != 0L)
            {
                num = Nat.DecAt(15, zz, 9);
            }
            num    = (long)(((ulong)num) + (zz[15] + (PExt[15] + 1)));
            zz[15] = (uint)num;
            num    = num >> 0x20;
            return((uint)num);
        }
示例#22
0
        private static int SubPExtFrom(uint[] zz)
        {
            long num = (long)((ulong)zz[0] - (ulong)Curve25519Field.PExt[0]);

            zz[0] = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num = (long)Nat.DecAt(8, zz, 1);
            }
            num  += (long)((ulong)zz[8] + 19uL);
            zz[8] = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num = (long)((ulong)Nat.IncAt(15, zz, 9));
            }
            num   += (long)((ulong)zz[15] - (ulong)(Curve25519Field.PExt[15] + 1u));
            zz[15] = (uint)num;
            num  >>= 32;
            return((int)num);
        }
示例#23
0
        private static void SubPInvFrom(uint[] z)
        {
            long num = (long)((ulong)z[0] + 1uL);

            z[0]  = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                num  += (long)((ulong)z[1]);
                z[1]  = (uint)num;
                num >>= 32;
                num  += (long)((ulong)z[2]);
                z[2]  = (uint)num;
                num >>= 32;
            }
            num  += (long)((ulong)z[3] - 1uL);
            z[3]  = (uint)num;
            num >>= 32;
            if (num != 0L)
            {
                Nat.DecAt(7, z, 4);
            }
        }