Ejemplo n.º 1
0
        public static BigInteger ModOddInverse(BigInteger M, BigInteger X)
        {
            if (!M.TestBit(0))
            {
                throw new ArgumentException("must be odd", "M");
            }
            if (M.SignValue != 1)
            {
                throw new ArithmeticException("BigInteger: modulus not positive");
            }
            if (X.SignValue < 0 || X.CompareTo(M) >= 0)
            {
                X = X.Mod(M);
            }

            int bits = M.BitLength;

            uint[] m   = Nat.FromBigInteger(bits, M);
            uint[] x   = Nat.FromBigInteger(bits, X);
            int    len = m.Length;

            uint[] z = Nat.Create(len);
            if (0 == Mod.ModOddInverse(m, x, z))
            {
                throw new ArithmeticException("BigInteger not invertible");
            }
            return(Nat.ToBigInteger(len, z));
        }
Ejemplo n.º 2
0
        private ECFieldElement GenerateSquareInput_CarryBug()
        {
            uint[] x = Nat.Create(12);
            x[0]  = (uint)Random.NextInt() >> 1;
            x[6]  = 2;
            x[10] = 0xFFFF0000;
            x[11] = 0xFFFFFFFF;

            return(FE(Nat.ToBigInteger(12, x)));
        }
Ejemplo n.º 3
0
        protected virtual BigInteger ModInverse(BigInteger x)
        {
            int bits = FieldSize;
            int len  = (bits + 31) >> 5;

            uint[] p = Nat.FromBigInteger(bits, q);
            uint[] n = Nat.FromBigInteger(bits, x);
            uint[] z = Nat.Create(len);
            Mod.Invert(p, n, z);
            return(Nat.ToBigInteger(len, z));
        }
    protected virtual BigInteger ModInverse(BigInteger x)
    {
        int fieldSize = FieldSize;
        int len       = fieldSize + 31 >> 5;

        uint[] p     = Nat.FromBigInteger(fieldSize, q);
        uint[] array = Nat.FromBigInteger(fieldSize, x);
        uint[] z     = Nat.Create(len);
        Mod.Invert(p, array, z);
        return(Nat.ToBigInteger(len, z));
    }
Ejemplo n.º 5
0
        protected virtual BigInteger ModInverse(BigInteger x)
        {
            var bits = this.FieldSize;
            var len  = (bits + 31) >> 5;
            var p    = Nat.FromBigInteger(bits, this.Q);
            var n    = Nat.FromBigInteger(bits, x);
            var z    = Nat.Create(len);

            Mod.Invert(p, n, z);
            return(Nat.ToBigInteger(len, z));
        }
Ejemplo n.º 6
0
 public override BigInteger ToBigInteger()
 {
     return(Nat.ToBigInteger(12, x));
 }
Ejemplo n.º 7
0
 public override BigInteger ToBigInteger()
 {
     return(Nat.ToBigInteger(17, this.x));
 }
Ejemplo n.º 8
0
 public override BigInteger ToBigInteger() =>
 Nat.ToBigInteger(0x11, this.x);