keys: simplify PublicKey() for PrivateKey
Public key is just a point, so use the coordinates obtained previously to initialize the PublicKey structure without jumping through the hoops of encoding/decoding.
This commit is contained in:
parent
f0fbe9f6c9
commit
60bc2e8053
1 changed files with 1 additions and 22 deletions
|
@ -1,7 +1,6 @@
|
||||||
package keys
|
package keys
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
|
@ -61,8 +60,6 @@ func NewPrivateKeyFromRawBytes(b []byte) (*PrivateKey, error) {
|
||||||
// PublicKey derives the public key from the private key.
|
// PublicKey derives the public key from the private key.
|
||||||
func (p *PrivateKey) PublicKey() (*PublicKey, error) {
|
func (p *PrivateKey) PublicKey() (*PublicKey, error) {
|
||||||
var (
|
var (
|
||||||
err error
|
|
||||||
pk PublicKey
|
|
||||||
c = elliptic.P256()
|
c = elliptic.P256()
|
||||||
q = new(big.Int).SetBytes(p.b)
|
q = new(big.Int).SetBytes(p.b)
|
||||||
)
|
)
|
||||||
|
@ -72,25 +69,7 @@ func (p *PrivateKey) PublicKey() (*PublicKey, error) {
|
||||||
return nil, errors.New("failed to derive public key using elliptic curve")
|
return nil, errors.New("failed to derive public key using elliptic curve")
|
||||||
}
|
}
|
||||||
|
|
||||||
bx := x.Bytes()
|
return &PublicKey{X: x, Y: y}, nil
|
||||||
padded := append(
|
|
||||||
bytes.Repeat(
|
|
||||||
[]byte{0x00},
|
|
||||||
32-len(bx),
|
|
||||||
),
|
|
||||||
bx...,
|
|
||||||
)
|
|
||||||
|
|
||||||
prefix := []byte{0x03}
|
|
||||||
if y.Bit(0) == 0 {
|
|
||||||
prefix = []byte{0x02}
|
|
||||||
}
|
|
||||||
b := append(prefix, padded...)
|
|
||||||
|
|
||||||
if err = pk.DecodeBytes(b); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &pk, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPrivateKeyFromWIF returns a NEO PrivateKey from the given
|
// NewPrivateKeyFromWIF returns a NEO PrivateKey from the given
|
||||||
|
|
Loading…
Reference in a new issue