mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +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"
|
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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue