The JSON-RPC interface describes that the data returned from the eth_sign call is the signed data while the go implementation signs a hash of the data:
func (s *PublicTransactionPoolAPI) Sign(address common.Address, data string) (string, error) {
signature, error := s.am.Sign(accounts.Account{Address: address}, common.HexToHash(data).Bytes())
return common.ToHex(signature), error
}
The JSON-RPC interface describes that the data returned from the eth_sign call is the signed data while the go implementation signs a hash of the data:
https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign
Go:
https://github.com/ethereum/go-ethereum/blob/develop/eth/api.go#L1108