internal/ethapi: Fix signHash bug when message is not hex

This commit is contained in:
Jorge Izquierdo 2016-12-15 23:51:44 +01:00
parent 38827dd9ca
commit 711c4fcd28
No known key found for this signature in database
GPG key ID: 9E01C52314ADB34C

View file

@ -292,9 +292,12 @@ func (s *PrivateAccountAPI) SendTransaction(ctx context.Context, args SendTxArgs
// safely used to calculate a signature from. The hash is calulcated with: // safely used to calculate a signature from. The hash is calulcated with:
// keccak256("\x19Ethereum Signed Message:\n"${message length}${message}). // keccak256("\x19Ethereum Signed Message:\n"${message length}${message}).
func signHash(message string) []byte { func signHash(message string) []byte {
data := common.FromHex(message)
// Give context to the signed message. This prevents an adversery to sign a tx. // Give context to the signed message. This prevents an adversery to sign a tx.
// It has no cryptographic purpose. // It has no cryptographic purpose.
data := common.FromHex(message)
if len(data) == 0 {
data = []byte(message)
}
msg := fmt.Sprintf("\x19Ethereum Signed Message:\n%d%s", len(data), data) msg := fmt.Sprintf("\x19Ethereum Signed Message:\n%d%s", len(data), data)
// Always hash, this prevents choosen plaintext attacks that can extract key information // Always hash, this prevents choosen plaintext attacks that can extract key information
return crypto.Keccak256([]byte(msg)) return crypto.Keccak256([]byte(msg))