mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
tests/fuzzers/bls12381: add fuzzers for subgroup checks
This commit is contained in:
parent
8c2bb6c383
commit
f9eed104b0
2 changed files with 48 additions and 0 deletions
|
|
@ -35,6 +35,42 @@ import (
|
|||
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 {
|
||||
input := bytes.NewReader(data)
|
||||
|
||||
|
|
|
|||
|
|
@ -98,3 +98,15 @@ func FuzzMapG2(f *testing.F) {
|
|||
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)
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue