You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
diff --git a/crypto/secp256k1/curve.go b/crypto/secp256k1/curve.go
index 5409ee1d2..c305f58da 100644
--- a/crypto/secp256k1/curve.go
+++ b/crypto/secp256k1/curve.go
@@ -116,6 +116,9 @@ func (BitCurve *BitCurve) IsOnCurve(x, y *big.Int) bool {
// affineFromJacobian reverses the Jacobian transform. See the comment at the
// top of the file.
func (BitCurve *BitCurve) affineFromJacobian(x, y, z *big.Int) (xOut, yOut *big.Int) {
+ if z.Sign() == 0 {
+ return new(big.Int), new(big.Int)
+ }
zinv := new(big.Int).ModInverse(z, BitCurve.P)
zinvsq := new(big.Int).Mul(zinv, zinv)
Tests:
func TestAffine(t *testing.T) {
x := new(big.Int)
y := new(big.Int)
z := new(big.Int)
theCurve.affineFromJacobian(x, y, z)
}
func TestAdd(t *testing.T) {
x := new(big.Int)
y := new(big.Int)
z := new(big.Int)
w := new(big.Int)
theCurve.Add(x, y, z, w)
}
Solution:
Tests:
see also: ethereum/go-ethereum#18419
The text was updated successfully, but these errors were encountered: