Skip to content

Commit

Permalink
Add scalar inverse tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Coding-Enthusiast committed Dec 22, 2023
1 parent 8d4f12e commit 7543148
Showing 1 changed file with 15 additions and 25 deletions.
40 changes: 15 additions & 25 deletions Src/Tests/Bitcoin/Cryptography/EllipticCurve/Scalar8x32Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1481,31 +1481,21 @@ public void Libsecp256k1_StaticTest(byte[] xba, byte[] yba, byte[] r1ba, byte[]
Assert.True(z.Verify());
Assert.Equal(r1, z);

// TODO: activate the inverse tests, our Inverse() currently has a bug

//if (!y.IsZero)
//{
// //secp256k1_scalar_inverse(&zz, &y);
// Scalar8x32 zz = y.Inverse();
// //CHECK(!secp256k1_scalar_check_overflow(&zz));
// Assert.True(zz.Verify());
// //secp256k1_scalar_inverse_var(&zzv, &y);
// Scalar8x32 zzv = y.InverseVar();
// //CHECK(secp256k1_scalar_eq(&zzv, &zz));
// Assert.Equal(zzv, zz);
// //secp256k1_scalar_mul(&z, &z, &zz);
// z = z.Multiply(zz);
// //CHECK(!secp256k1_scalar_check_overflow(&z));
// Assert.True(z.Verify());
// //CHECK(secp256k1_scalar_eq(&x, &z));
// Assert.Equal(x, z);
// //secp256k1_scalar_mul(&zz, &zz, &y);
// zz = zz.Multiply(y);
// //CHECK(!secp256k1_scalar_check_overflow(&zz));
// Assert.True(zz.Verify());
// //CHECK(secp256k1_scalar_eq(&secp256k1_scalar_one, &zz));
// Assert.Equal(Scalar8x32.One, zz);
//}
if (!y.IsZero)
{
Scalar8x32 zz = y.Inverse();
Assert.True(zz.Verify());
Scalar8x32 zzv = y.InverseVar();
Assert.Equal(zzv, zz);
// x*y*y' == x*1 == x (y' represents inverse of y)
z = z.Multiply(zz);
Assert.True(z.Verify());
Assert.Equal(x, z);
// y'*y == 1
zz = zz.Multiply(y);
Assert.True(zz.Verify());
Assert.Equal(Scalar8x32.One, zz);
}
}

#endregion
Expand Down

0 comments on commit 7543148

Please sign in to comment.