public void Test_SECP192r1 () { SECP192r1 secp = new SECP192r1 (); Number max1 = secp.ToElement (SECP192r1.PRIME - Number.One); Number max2 = secp.ToElement (SECP192r1.PRIME - new Number (new uint[] { 0, 0, 1, 0, 0, 0 })); Number hoge = secp.Multiply (max1, max2); }
public void SqrtTest () { IFiniteField[] ffList = new IFiniteField[2]; ffList[0] = new SECP192r1 (); ffList[1] = new Montgomery (ffList[0].Modulus); int repeats = 10; foreach (IFiniteField ff in ffList) { for (int i = 0; i < repeats; i++) { Number x = ff.ToElement (Number.CreateRandomElement (ff.Modulus)); Number xx = ff.Multiply (x, x); Number sqrt = ff.Sqrt (xx); Assert.IsTrue (ff.Multiply (sqrt, sqrt).CompareTo (xx) == 0); } } }
public void PowTest () { IFiniteField[] ffList = new IFiniteField[2]; ffList[0] = new SECP192r1 (); ffList[1] = new Montgomery (ffList[0].Modulus); foreach (IFiniteField ff in ffList) { Number x = ff.ToElement (Number.CreateRandomElement (ff.Modulus)); Number pow2 = ff.Multiply (x, x); Number pow3 = ff.Multiply (pow2, x); Number pow4 = ff.Multiply (pow3, x); Assert.IsTrue (ff.Pow (x, Number.Zero).CompareTo (ff.ToElement (Number.One)) == 0); Assert.IsTrue (ff.Pow (x, Number.One).CompareTo (x) == 0); Assert.IsTrue (ff.Pow (x, Number.Two).CompareTo (pow2) == 0); Assert.IsTrue (ff.Pow (x, Number.Three).CompareTo (pow3) == 0); Assert.IsTrue (ff.Pow (x, Number.Four).CompareTo (pow4) == 0); } }