示例#1
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(8, x, z);

            if (c != 0 || (z[7] == P7 && Nat256.Gte(z, P)))
            {
                Nat.Add33To(8, PInv33, z);
            }
        }
示例#2
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(7, x, z);

            if (c != 0 || (z[6] == P6 && Nat224.Gte(z, P)))
            {
                Nat.Add33To(7, PInv33, z);
            }
        }
示例#3
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.Add33To(5, PInv33, z);
            }
        }
示例#4
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(6, x, z);

            if (c != 0 || (z[5] == P5 && Nat192.Gte(z, P)))
            {
                Nat.Add33To(6, PInv33, z);
            }
        }
示例#5
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(4, x, z);

            if (c != 0 || (z[3] >= P3 && Nat128.Gte(z, P)))
            {
                AddPInvTo(z);
            }
        }
示例#6
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(12, x, z);

            if (c != 0 || (z[11] == P11 && Nat.Gte(12, z, P)))
            {
                AddPInvTo(z);
            }
        }
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(8, x, z);

            if (c != 0 || (z[7] >= P7 && Nat256.Gte(z, P)))
            {
                AddPInvTo(z);
            }
        }
示例#8
0
        public static void AddOne(uint[] x, uint[] z)
        {
            Nat.Copy(12, x, z);
            uint c = Nat.Inc(12, z, 0);

            if (c != 0 || (z[11] == P11 && Nat.Gte(12, z, P)))
            {
                Nat.Sub(12, z, P, z);
            }
        }
        public static void AddOne(uint[] x, uint[] z)
        {
            uint num = Nat.Inc(0x10, x, z) + x[0x10];

            if ((num > 0x1ff) || ((num == 0x1ff) && Nat.Eq(0x10, z, P)))
            {
                num += Nat.Inc(0x10, z);
                num &= 0x1ff;
            }
            z[0x10] = num;
        }
示例#10
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint c = Nat.Inc(16, x, z) + x[16];

            if (c > P16 || (c == P16 && Nat.Eq(16, z, P)))
            {
                c += Nat.Inc(16, z);
                c &= P16;
            }
            z[16] = c;
        }
示例#11
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint num = Nat.Inc(16, x, z) + x[16];

            if (num > 511 || (num == 511 && Nat.Eq(16, z, P)))
            {
                num += Nat.Inc(16, z);
                num &= 0x1FF;
            }
            z[16] = num;
        }
示例#12
0
        public static void AddOne(uint[] x, uint[] z)
        {
            uint num = Nat.Inc(16, x, z) + x[16];

            if (num > 511u || (num == 511u && Nat.Eq(16, z, SecP521R1Field.P)))
            {
                num += Nat.Inc(16, z);
                num &= 511u;
            }
            z[16] = num;
        }
示例#13
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;
        }
示例#14
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;
        }
示例#15
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;
        }
示例#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;
        }
示例#17
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            uint c    = xx[0x20];
            uint num2 = Nat.ShiftDownBits(0x10, xx, 0x10, 9, c, z, 0) >> 0x17;

            num2 += c >> 9;
            num2 += Nat.AddTo(0x10, xx, z);
            if ((num2 > 0x1ff) || ((num2 == 0x1ff) && Nat.Eq(0x10, z, P)))
            {
                num2 += Nat.Inc(0x10, z);
                num2 &= 0x1ff;
            }
            z[0x10] = num2;
        }
示例#18
0
        public static void Reduce(uint[] xx, uint[] z)
        {
            uint num  = xx[32];
            uint num2 = Nat.ShiftDownBits(16, xx, 16, 9, num, z, 0) >> 23;

            num2 += num >> 9;
            num2 += Nat.AddTo(16, xx, z);
            if (num2 > 511 || (num2 == 511 && Nat.Eq(16, z, P)))
            {
                num2 += Nat.Inc(16, z);
                num2 &= 0x1FF;
            }
            z[16] = num2;
        }
示例#19
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, 0) >> 23;

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