From 3907daf00c515b8d69bbb68da88f5171c53a6474 Mon Sep 17 00:00:00 2001 From: RDxR10 Date: Sun, 1 Jan 2023 12:10:09 +0530 Subject: [PATCH 1/3] Update bignum_pure.go --- bls/bignum_pure.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bls/bignum_pure.go b/bls/bignum_pure.go index 5b36554..7c4bc0e 100644 --- a/bls/bignum_pure.go +++ b/bls/bignum_pure.go @@ -6,6 +6,7 @@ package bls import ( "crypto/rand" "math/big" + "errors" ) var _modulus big.Int @@ -91,11 +92,15 @@ func AddModFr(dst *Fr, a, b *Fr) { (*big.Int)(dst).Mod((*big.Int)(dst), &_modulus) } -func DivModFr(dst *Fr, a, b *Fr) { +func DivModFr(dst *Fr, a, b *Fr) error { + if EqualZero(b) { + return errors.New("division by zero") + } var tmp Fr InvModFr(&tmp, b) (*big.Int)(dst).Mul((*big.Int)(a), (*big.Int)(&tmp)) (*big.Int)(dst).Mod((*big.Int)(dst), &_modulus) + return nil } func MulModFr(dst *Fr, a, b *Fr) { From 7d886a9a906fb24864b352cfacab6d06583e83ea Mon Sep 17 00:00:00 2001 From: RDxR10 Date: Sun, 1 Jan 2023 14:29:41 +0530 Subject: [PATCH 2/3] Update bignum_pure.go --- bls/bignum_pure.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/bls/bignum_pure.go b/bls/bignum_pure.go index 7c4bc0e..1acd373 100644 --- a/bls/bignum_pure.go +++ b/bls/bignum_pure.go @@ -92,15 +92,11 @@ func AddModFr(dst *Fr, a, b *Fr) { (*big.Int)(dst).Mod((*big.Int)(dst), &_modulus) } -func DivModFr(dst *Fr, a, b *Fr) error { - if EqualZero(b) { - return errors.New("division by zero") - } +func DivModFr(dst *Fr, a, b *Fr) { var tmp Fr InvModFr(&tmp, b) (*big.Int)(dst).Mul((*big.Int)(a), (*big.Int)(&tmp)) (*big.Int)(dst).Mod((*big.Int)(dst), &_modulus) - return nil } func MulModFr(dst *Fr, a, b *Fr) { @@ -116,6 +112,14 @@ func InvModFr(dst *Fr, v *Fr) { (*big.Int)(dst).ModInverse((*big.Int)(v), &_modulus) } +func InvModFr(dst *Fr, v *Fr) error { + if EqualZero(v) { + return errors.New("division by zero") + } + (*big.Int)(dst).ModInverse((*big.Int)(v), &_modulus) + return nil +} + // BatchInvModFr computes the inverse for each input. // Warning: this does not actually batch, this is just here for compatibility with other BLS backends that do. func BatchInvModFr(f []Fr) { From 1f0f747b0a94eee751fa706eaf00153a7d766131 Mon Sep 17 00:00:00 2001 From: RDxR10 Date: Sun, 1 Jan 2023 14:30:36 +0530 Subject: [PATCH 3/3] Update bignum_pure.go --- bls/bignum_pure.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/bls/bignum_pure.go b/bls/bignum_pure.go index 1acd373..75a397a 100644 --- a/bls/bignum_pure.go +++ b/bls/bignum_pure.go @@ -108,10 +108,6 @@ func PowModFr(dst *Fr, a, b *Fr) { (*big.Int)(dst).Exp((*big.Int)(a), (*big.Int)(b), &_modulus) } -func InvModFr(dst *Fr, v *Fr) { - (*big.Int)(dst).ModInverse((*big.Int)(v), &_modulus) -} - func InvModFr(dst *Fr, v *Fr) error { if EqualZero(v) { return errors.New("division by zero")