Skip to content

secp256k1: ported BitCurve.Add changes#1

Merged
AskAlexSharov merged 1 commit into
erigontech:mainfrom
iszubok:2680-To-port-bitcurve.add-changes
Nov 3, 2021
Merged

secp256k1: ported BitCurve.Add changes#1
AskAlexSharov merged 1 commit into
erigontech:mainfrom
iszubok:2680-To-port-bitcurve.add-changes

Conversation

@iszubok
Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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