Open mratsim opened 4 years ago
https://github.com/status-im/nim-blscurve/pull/53 shows how you can get started. I hope you'll be able to take if from here.
Ah, somehow I missed this PR
what's our stance on herumi, in the end? it seems to have reached a critical support point
A a minimum we need to add fuzzing to Hash-To-Curve as we might receive forged messages that might trigger edge cases.
One nice thing is that Milagro is using Exception-Free Addition formulas that fail to handle infinity points and for a point P(x, y) that needs special handling of Q(x, y) or Q(x, -y)
For actual elliptic curve testing, it's quite probably the a fuzzer won't be able to create valid elliptic curve points (though AFL learned to create valid jpegs from nothing but fuzzing https://lcamtuf.blogspot.com/2014/11/pulling-jpegs-out-of-thin-air.html) so we will need to turn to differential fuzzing.
Thankfully there is a host of alternative implementations that we can use and that are sufficiently fast:
And somewhat slower: