From 859dd6b17d982f5a5cf874cd56a0362c374c0666 Mon Sep 17 00:00:00 2001 From: felicityin Date: Sat, 13 Apr 2024 21:38:10 +0800 Subject: [PATCH] fix: ECPoint.ScalarMult --- crypto/ecpoint.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/crypto/ecpoint.go b/crypto/ecpoint.go index d0248398..aa7edf5d 100644 --- a/crypto/ecpoint.go +++ b/crypto/ecpoint.go @@ -60,7 +60,8 @@ func (p *ECPoint) Add(p1 *ECPoint) (*ECPoint, error) { } func (p *ECPoint) ScalarMult(k *big.Int) *ECPoint { - x, y := p.curve.ScalarMult(p.X(), p.Y(), k.Bytes()) + kModN := new(big.Int).Mod(k, p.curve.Params().N) + x, y := p.curve.ScalarMult(p.X(), p.Y(), kModN.Bytes()) newP, err := NewECPoint(p.curve, x, y) // it must be on the curve, no need to check. if err != nil { panic(fmt.Errorf("scalar mult to an ecpoint %s", err.Error()))