示例#1
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint c = Nat256.Add(x, y, z);

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

            if (c != 0 || (z[7] == P7 && Nat256.Gte(z, P)))
            {
                AddPInvTo(z);
            }
        }
示例#3
0
        public static void AddExt(uint[] xx, uint[] yy, uint[] zz)
        {
            uint c = Nat256.Add(xx, yy, zz);

            if (c != 0 || (zz[7] >= PExt7 && Nat256.Gte(zz, PExt)))
            {
                Nat.AddTo(PExtInv.Length, PExtInv, zz);
            }
        }
示例#4
0
        public static void Subtract(uint[] x, uint[] y, uint[] z)
        {
            int c = Nat256.Sub(x, y, z);

            if (c != 0)
            {
                Nat256.Add(z, P, z);
            }
        }
示例#5
0
 public static void Add(uint[] x, uint[] y, uint[] z)
 {
     Nat256.Add(x, y, z);
     if (Nat256.Gte(z, P))
     {
         Nat256.AddWord(PInv, z, 0);
         z[7] &= P7;
     }
 }
示例#6
0
        public static void Add(uint[] x, uint[] y, uint[] z)
        {
            uint c = Nat256.Add(x, y, z);

            if (c != 0 || (z[7] == P7 && Nat256.Gte(z, P)))
            {
                Nat256.AddDWord(PInv, z, 0);
            }
        }
示例#7
0
        public static void Half(uint[] x, uint[] z)
        {
            if ((x[0] & 1u) == 0u)
            {
                Nat.ShiftDownBit(8, x, 0u, z);
                return;
            }
            uint c = Nat256.Add(x, SecP256K1Field.P, z);

            Nat.ShiftDownBit(8, z, c);
        }
示例#8
0
        public static void Half(uint[] x, uint[] z)
        {
            if ((x[0] & 1) == 0)
            {
                Nat.ShiftDownBit(8, x, 0u, z);
                return;
            }
            uint c = Nat256.Add(x, P, z);

            Nat.ShiftDownBit(8, z, c);
        }
示例#9
0
 public static void Half(uint[] x, uint[] z)
 {
     if ((x[0] & 1) == 0)
     {
         Nat.ShiftDownBit(8, x, 0, z);
     }
     else
     {
         Nat256.Add(x, P, z);
         Nat.ShiftDownBit(8, z, 0);
     }
 }
示例#10
0
 public static void Half(uint[] x, uint[] z)
 {
     if ((x[0] & 1) == 0)
     {
         Nat256.ShiftDownBit(x, 0, z);
     }
     else
     {
         uint c = Nat256.Add(x, P, z);
         Nat256.ShiftDownBit(z, c, z);
     }
 }