code: func (api *ExternalSigner) SignData(account accounts.Account, mimeType string, data []byte) ([]byte, error) {
  	var res hexutil.Bytes
  	var signAddress = common.NewMixedcaseAddress(account.Address)
  	if err := api.client.Call(&res, "account_signData",
  		mimeType,
  		&signAddress, // Need to use the pointer here, because of how MarshalJSON is defined
  		hexutil.Encode(data)); err != nil {
  		return nil, err
  	}
  	// If V is on 27/28-form, convert to to 0/1 for Clique
  	if mimeType == accounts.MimetypeClique && (res[64] == 27 || res[64] == 28) {
  		res[64] -= 27 // Transform V from 27/28 to 0/1 for Clique use
  	}
  	return res, nil
  }
docs: // SignData signs keccak256(data). The mimetype parameter describes the type of data being signed