forked from cerc-io/plugeth
Added length checkes
This commit is contained in:
parent
1c7fd62e57
commit
06e76422b5
@ -56,6 +56,10 @@ func Ecrecover(data []byte) []byte {
|
||||
|
||||
// New methods using proper ecdsa keys from the stdlib
|
||||
func ToECDSA(prv []byte) *ecdsa.PrivateKey {
|
||||
if len(prv) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
priv := new(ecdsa.PrivateKey)
|
||||
priv.PublicKey.Curve = S256()
|
||||
priv.D = ethutil.BigD(prv)
|
||||
@ -64,14 +68,27 @@ func ToECDSA(prv []byte) *ecdsa.PrivateKey {
|
||||
}
|
||||
|
||||
func FromECDSA(prv *ecdsa.PrivateKey) []byte {
|
||||
if prv == nil {
|
||||
return nil
|
||||
}
|
||||
return prv.D.Bytes()
|
||||
}
|
||||
|
||||
func PubToECDSA(pub []byte) *ecdsa.PublicKey {
|
||||
func ToECDSAPub(pub []byte) *ecdsa.PublicKey {
|
||||
if len(pub) == 0 {
|
||||
return nil
|
||||
}
|
||||
x, y := elliptic.Unmarshal(S256(), pub)
|
||||
return &ecdsa.PublicKey{S256(), x, y}
|
||||
}
|
||||
|
||||
func FromECDSAPub(pub *ecdsa.PublicKey) []byte {
|
||||
if pub == nil {
|
||||
return nil
|
||||
}
|
||||
return elliptic.Marshal(S256(), pub.X, pub.Y)
|
||||
}
|
||||
|
||||
func GenerateKey() (*ecdsa.PrivateKey, error) {
|
||||
return ecdsa.GenerateKey(S256(), rand.Reader)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user