Skip to content

Commit

Permalink
remove uneccessary error from random scalar generator
Browse files Browse the repository at this point in the history
  • Loading branch information
jwasinger committed Aug 14, 2024
1 parent 084a110 commit c4e99a1
Showing 1 changed file with 20 additions and 59 deletions.
79 changes: 20 additions & 59 deletions tests/fuzzers/bls12381/bls12381_fuzz.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,7 @@ import (

func fuzzG1SubgroupChecks(data []byte) int {
input := bytes.NewReader(data)
cpG1, blG1, err := getG1Points(input)
if err != nil {
return 0
}
cpG1, blG1 := getG1Points(input)
inSubGroupGnark := cpG1.IsInSubGroup()
inSubGroupBLST := blG1.InG1()
if inSubGroupGnark != inSubGroupBLST {
Expand All @@ -50,10 +47,7 @@ func fuzzG1SubgroupChecks(data []byte) int {

func fuzzG2SubgroupChecks(data []byte) int {
input := bytes.NewReader(data)
gpG2, blG2, err := getG2Points(input)
if err != nil {
return 0
}
gpG2, blG2 := getG2Points(input)
inSubGroupGnark := gpG2.IsInSubGroup()
inSubGroupBLST := blG2.InG2()
if inSubGroupGnark != inSubGroupBLST {
Expand All @@ -66,16 +60,10 @@ func fuzzCrossPairing(data []byte) int {
input := bytes.NewReader(data)

// get random G1 points
cpG1, blG1, err := getG1Points(input)
if err != nil {
return 0
}
cpG1, blG1 := getG1Points(input)

// get random G2 points
cpG2, blG2, err := getG2Points(input)
if err != nil {
return 0
}
cpG2, blG2 := getG2Points(input)

// compute pairing using gnark
cResult, err := bls12381.Pair([]bls12381.G1Affine{*cpG1}, []bls12381.G2Affine{*cpG2})
Expand Down Expand Up @@ -122,16 +110,10 @@ func fuzzCrossG1Add(data []byte) int {
input := bytes.NewReader(data)

// get random G1 points
cp1, bl1, err := getG1Points(input)
if err != nil {
return 0
}
cp1, bl1 := getG1Points(input)

// get random G1 points
cp2, bl2, err := getG1Points(input)
if err != nil {
return 0
}
cp2, bl2 := getG1Points(input)

// compute cp = cp1 + cp2
_cp1 := new(bls12381.G1Jac).FromAffine(cp1)
Expand All @@ -150,16 +132,10 @@ func fuzzCrossG2Add(data []byte) int {
input := bytes.NewReader(data)

// get random G2 points
gp1, bl1, err := getG2Points(input)
if err != nil {
return 0
}
gp1, bl1 := getG2Points(input)

// get random G2 points
gp2, bl2, err := getG2Points(input)
if err != nil {
return 0
}
gp2, bl2 := getG2Points(input)

// compute cp = cp1 + cp2
_gp1 := new(bls12381.G2Jac).FromAffine(gp1)
Expand All @@ -183,15 +159,10 @@ func fuzzCrossG1MultiExp(data []byte) int {
// n random scalars (max 17)
for i := 0; i < 17; i++ {
// note that geth/crypto/bls12381 works only with scalars <= 32bytes
s, err := randomScalar(input, fr.Modulus())
if err != nil {
break
}
s := randomScalar(input, fr.Modulus())
// get a random G1 point as basis
cp1, _, err := getG1Points(input)
if err != nil {
break
}
cp1, _ := getG1Points(input)

var gnarkScalar = &fr.Element{}
gnarkScalar = gnarkScalar.SetBigInt(s)
gnarkScalars = append(gnarkScalars, *gnarkScalar)
Expand All @@ -210,12 +181,9 @@ func fuzzCrossG1MultiExp(data []byte) int {
return 1
}

func getG1Points(input io.Reader) (*bls12381.G1Affine, *blst.P1Affine, error) {
func getG1Points(input io.Reader) (*bls12381.G1Affine, *blst.P1Affine) {
// sample a random scalar
s, err := randomScalar(input, fp.Modulus())
if err != nil {
return nil, nil, err
}
s := randomScalar(input, fp.Modulus())

// compute a random point
cp := new(bls12381.G1Affine)
Expand All @@ -230,15 +198,12 @@ func getG1Points(input io.Reader) (*bls12381.G1Affine, *blst.P1Affine, error) {
panic("bytes(blst.G1) != bytes(geth.G1)")
}

return cp, p1, nil
return cp, p1
}

func getG2Points(input io.Reader) (*bls12381.G2Affine, *blst.P2Affine, error) {
func getG2Points(input io.Reader) (*bls12381.G2Affine, *blst.P2Affine) {
// sample a random scalar
s, err := randomScalar(input, fp.Modulus())
if err != nil {
return nil, nil, err
}
s := randomScalar(input, fp.Modulus())

// compute a random point
gp := new(bls12381.G2Affine)
Expand All @@ -254,16 +219,12 @@ func getG2Points(input io.Reader) (*bls12381.G2Affine, *blst.P2Affine, error) {
panic("bytes(blst.G2) != bytes(bls12381.G2)")
}

return gp, p2, nil
return gp, p2
}

func randomScalar(r io.Reader, max *big.Int) (k *big.Int, err error) {
for {
k, err = rand.Int(r, max)
if err != nil || k.Sign() > 0 {
return
}
}
func randomScalar(r io.Reader, max *big.Int) *big.Int {
k, _ := rand.Int(r, max)
return k
}

// multiExpG1 is a naive implementation of G1 multi-exponentiation
Expand Down

0 comments on commit c4e99a1

Please sign in to comment.