Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

secp256k1: ported BitCurve.Add changes #1

Merged

Conversation

iszubok
Copy link
Contributor

@iszubok iszubok commented Nov 2, 2021

Fixes erigontech/erigon#2680

The following functionality were ported in func (BitCurve *BitCurve) Add in file curve.go:
When adding a point at infinity to another point, the other point
should be returned. While this is undefined behavior, it is better
to be more inline with the go standard library.
Thus (0,0) + (a, b) = (a,b)
Adding the same point to itself produced the point at infinity.
This is incorrect, now doubleJacobian is used to correctly calculate it.
This is also similar to the go standard library.
Thus (a,b) + (a,b) == 2* (a,b) and not (0,0) anymore

The rest of changes are made to support compiling with and without cgo, in order to be able to compile fuzzer.
Another PR in main erigon repository will be added for fuzzer implementation.

Functional changes in func (BitCurve *BitCurve) Add in curve.go:
-(0,0) + (a, b) = (a,b).
-(a,b) + (a,b) == 2* (a,b) and not (0,0) anymore

Other changes to split out C code in order to be able to build fuzzers
@AskAlexSharov
Copy link
Collaborator

I will merge and create release tag. Wait 1 sec.

@AskAlexSharov AskAlexSharov merged commit 52ae753 into erigontech:main Nov 3, 2021
@AskAlexSharov
Copy link
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

To port bitcurve.add changes
2 participants