Skip to content

Commit 7543148

Browse files
Add scalar inverse tests
1 parent 8d4f12e commit 7543148

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

Src/Tests/Bitcoin/Cryptography/EllipticCurve/Scalar8x32Tests.cs

+15-25
Original file line numberDiff line numberDiff line change
@@ -1481,31 +1481,21 @@ public void Libsecp256k1_StaticTest(byte[] xba, byte[] yba, byte[] r1ba, byte[]
14811481
Assert.True(z.Verify());
14821482
Assert.Equal(r1, z);
14831483

1484-
// TODO: activate the inverse tests, our Inverse() currently has a bug
1485-
1486-
//if (!y.IsZero)
1487-
//{
1488-
// //secp256k1_scalar_inverse(&zz, &y);
1489-
// Scalar8x32 zz = y.Inverse();
1490-
// //CHECK(!secp256k1_scalar_check_overflow(&zz));
1491-
// Assert.True(zz.Verify());
1492-
// //secp256k1_scalar_inverse_var(&zzv, &y);
1493-
// Scalar8x32 zzv = y.InverseVar();
1494-
// //CHECK(secp256k1_scalar_eq(&zzv, &zz));
1495-
// Assert.Equal(zzv, zz);
1496-
// //secp256k1_scalar_mul(&z, &z, &zz);
1497-
// z = z.Multiply(zz);
1498-
// //CHECK(!secp256k1_scalar_check_overflow(&z));
1499-
// Assert.True(z.Verify());
1500-
// //CHECK(secp256k1_scalar_eq(&x, &z));
1501-
// Assert.Equal(x, z);
1502-
// //secp256k1_scalar_mul(&zz, &zz, &y);
1503-
// zz = zz.Multiply(y);
1504-
// //CHECK(!secp256k1_scalar_check_overflow(&zz));
1505-
// Assert.True(zz.Verify());
1506-
// //CHECK(secp256k1_scalar_eq(&secp256k1_scalar_one, &zz));
1507-
// Assert.Equal(Scalar8x32.One, zz);
1508-
//}
1484+
if (!y.IsZero)
1485+
{
1486+
Scalar8x32 zz = y.Inverse();
1487+
Assert.True(zz.Verify());
1488+
Scalar8x32 zzv = y.InverseVar();
1489+
Assert.Equal(zzv, zz);
1490+
// x*y*y' == x*1 == x (y' represents inverse of y)
1491+
z = z.Multiply(zz);
1492+
Assert.True(z.Verify());
1493+
Assert.Equal(x, z);
1494+
// y'*y == 1
1495+
zz = zz.Multiply(y);
1496+
Assert.True(zz.Verify());
1497+
Assert.Equal(Scalar8x32.One, zz);
1498+
}
15091499
}
15101500

15111501
#endregion

0 commit comments

Comments
 (0)