Forward and log EC recover err and remove dup pubkey len check
This commit is contained in:
@ -68,10 +68,8 @@ func Ripemd160(data []byte) []byte {
|
||||
return ripemd.Sum(nil)
|
||||
}
|
||||
|
||||
func Ecrecover(hash, sig []byte) []byte {
|
||||
r, _ := secp256k1.RecoverPubkey(hash, sig)
|
||||
|
||||
return r
|
||||
func Ecrecover(hash, sig []byte) ([]byte, error) {
|
||||
return secp256k1.RecoverPubkey(hash, sig)
|
||||
}
|
||||
|
||||
// New methods using proper ecdsa keys from the stdlib
|
||||
@ -145,14 +143,14 @@ func GenerateKey() (*ecdsa.PrivateKey, error) {
|
||||
return ecdsa.GenerateKey(S256(), rand.Reader)
|
||||
}
|
||||
|
||||
func SigToPub(hash, sig []byte) *ecdsa.PublicKey {
|
||||
s := Ecrecover(hash, sig)
|
||||
if s == nil || len(s) != 65 {
|
||||
return nil
|
||||
func SigToPub(hash, sig []byte) (*ecdsa.PublicKey, error) {
|
||||
s, err := Ecrecover(hash, sig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
x, y := elliptic.Unmarshal(S256(), s)
|
||||
return &ecdsa.PublicKey{S256(), x, y}
|
||||
return &ecdsa.PublicKey{S256(), x, y}, nil
|
||||
}
|
||||
|
||||
func Sign(hash []byte, prv *ecdsa.PrivateKey) (sig []byte, err error) {
|
||||
|
Reference in New Issue
Block a user