• Marius van der Wijden's avatar
    crypto/secp256k1: fix undefined behavior in BitCurve.Add (#22621) · 0703ef62
    Marius van der Wijden authored
    This commit changes the behavior of BitCurve.Add to be more inline
    with btcd. It fixes two different bugs:
    
    1) 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)
    
    2) Adding the same point to itself produced the point at infinity.
       This is incorrect, now doubleJacobian is used to correctly calculate it.
       Thus (a,b) + (a,b) == 2* (a,b) and not (0,0) anymore.
    
    The change also adds a differential fuzzer for Add, testing it against btcd.
    Co-authored-by: 's avatarFelix Lange <fjl@twurst.com>
    0703ef62
Name
Last commit
Last update
.github Loading commit data...
accounts Loading commit data...
build Loading commit data...
cmd Loading commit data...
common Loading commit data...
consensus Loading commit data...
console Loading commit data...
contracts/checkpointoracle Loading commit data...
core Loading commit data...
crypto Loading commit data...
docs/audits Loading commit data...
eth Loading commit data...
ethclient Loading commit data...
ethdb Loading commit data...
ethstats Loading commit data...
event Loading commit data...
graphql Loading commit data...
internal Loading commit data...
les Loading commit data...
light Loading commit data...
log Loading commit data...
metrics Loading commit data...
miner Loading commit data...
mobile Loading commit data...
node Loading commit data...
p2p Loading commit data...
params Loading commit data...
rlp Loading commit data...
rpc Loading commit data...
signer Loading commit data...
swarm Loading commit data...
tests Loading commit data...
trie Loading commit data...
.dockerignore Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitmodules Loading commit data...
.golangci.yml Loading commit data...
.mailmap Loading commit data...
.travis.yml Loading commit data...
AUTHORS Loading commit data...
COPYING Loading commit data...
COPYING.LESSER Loading commit data...
Dockerfile Loading commit data...
Dockerfile.alltools Loading commit data...
Makefile Loading commit data...
README.md Loading commit data...
SECURITY.md Loading commit data...
appveyor.yml Loading commit data...
circle.yml Loading commit data...
go.mod Loading commit data...
go.sum Loading commit data...
interfaces.go Loading commit data...
oss-fuzz.sh Loading commit data...