crypto: fix error check in toECDSA (#15632)

With this change,

    key, err := crypto.HexToECDSA("000000...")
    
returns nil key and an error instead of a non-nil key with nil X
and Y inside. Issue found by @guidovranken.
This commit is contained in:
Felix Lange
2017-12-11 22:49:09 +01:00
committed by GitHub
parent 2499b1b139
commit 1a32bdf92c
2 changed files with 12 additions and 0 deletions

View File

@ -98,6 +98,9 @@ func toECDSA(d []byte, strict bool) (*ecdsa.PrivateKey, error) {
}
priv.D = new(big.Int).SetBytes(d)
priv.PublicKey.X, priv.PublicKey.Y = priv.PublicKey.Curve.ScalarBaseMult(d)
if priv.PublicKey.X == nil {
return nil, errors.New("invalid private key")
}
return priv, nil
}