crypto: drop home-grown elliptic crypto, use crypto/elliptic
As NEO uses P256 we can use standard crypto/elliptic library for almost everything, the only exception being decompression of the Y coordinate. For some reason the standard library only supports uncompressed format in its Marshal()/Unmarshal() functions. elliptic.P256() is known to have constant-time implementation, so it fixes #245 (and the decompression using big.Int operates on public key, so nobody really cares about that part being constant-time). New decompress function is inspired by https://stackoverflow.com/questions/46283760, even though the previous one really did the same thing just in a little less obvious way.
This commit is contained in:
parent
0b884b92b3
commit
f0fbe9f6c9
5 changed files with 66 additions and 348 deletions
|
@ -5,12 +5,11 @@ import (
|
|||
"encoding/hex"
|
||||
"testing"
|
||||
|
||||
"github.com/CityOfZion/neo-go/pkg/crypto"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestEncodeDecodeInfinity(t *testing.T) {
|
||||
key := &PublicKey{crypto.ECPoint{}}
|
||||
key := &PublicKey{}
|
||||
buf := new(bytes.Buffer)
|
||||
assert.Nil(t, key.EncodeBinary(buf))
|
||||
assert.Equal(t, 1, buf.Len())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue