tests/fuzzers/bls12381: add fuzzers for subgroup checks

This commit is contained in:
Marius van der Wijden 2024-04-08 13:03:35 +02:00
parent 8c2bb6c383
commit f9eed104b0
2 changed files with 48 additions and 0 deletions

View file

@ -35,6 +35,42 @@ import (
blst "github.com/supranational/blst/bindings/go" blst "github.com/supranational/blst/bindings/go"
) )
func fuzzG1SubgroupChecks(data []byte) int {
input := bytes.NewReader(data)
kpG1, cpG1, blG1, err := getG1Points(input)
if err != nil {
return 0
}
inSubGroupKilic := bls12381.NewG1().InCorrectSubgroup(kpG1)
inSubGroupGnark := cpG1.IsInSubGroup()
inSubGroupBLST := blG1.InG1()
if inSubGroupKilic != inSubGroupGnark {
panic(fmt.Sprintf("differing subgroup check, kilic %v, gnark %v", inSubGroupKilic, inSubGroupGnark))
}
if inSubGroupKilic != inSubGroupBLST {
panic(fmt.Sprintf("differing subgroup check, kilic %v, blst %v", inSubGroupKilic, inSubGroupBLST))
}
return 1
}
func fuzzG2SubgroupChecks(data []byte) int {
input := bytes.NewReader(data)
kpG2, cpG2, blG2, err := getG2Points(input)
if err != nil {
return 0
}
inSubGroupKilic := bls12381.NewG2().InCorrectSubgroup(kpG2)
inSubGroupGnark := cpG2.IsInSubGroup()
inSubGroupBLST := blG2.InG2()
if inSubGroupKilic != inSubGroupGnark {
panic(fmt.Sprintf("differing subgroup check, kilic %v, gnark %v", inSubGroupKilic, inSubGroupGnark))
}
if inSubGroupKilic != inSubGroupBLST {
panic(fmt.Sprintf("differing subgroup check, kilic %v, blst %v", inSubGroupKilic, inSubGroupBLST))
}
return 1
}
func fuzzCrossPairing(data []byte) int { func fuzzCrossPairing(data []byte) int {
input := bytes.NewReader(data) input := bytes.NewReader(data)

View file

@ -98,3 +98,15 @@ func FuzzMapG2(f *testing.F) {
fuzz(blsMapG2, data) fuzz(blsMapG2, data)
}) })
} }
func FuzzG1SubgroupChecks(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
fuzzG1SubgroupChecks(data)
})
}
func FuzzG2SubgroupChecks(f *testing.F) {
f.Fuzz(func(t *testing.T, data []byte) {
fuzzG2SubgroupChecks(data)
})
}