diff options
author | Dan Finlay <dan@danfinlay.com> | 2017-03-07 07:03:49 +0800 |
---|---|---|
committer | Dan Finlay <dan@danfinlay.com> | 2017-03-07 07:04:11 +0800 |
commit | 9bd8c5f723abef25b8864457df7207eb361be8e3 (patch) | |
tree | 93ba58224b857f2db55b75caff3ad3159e17dedd /ui/app/components/binary-renderer.js | |
parent | f9b2c12dc34992deb1ef95f4a1f7572aac4aa1af (diff) | |
download | tangerine-wallet-browser-9bd8c5f723abef25b8864457df7207eb361be8e3.tar.gz tangerine-wallet-browser-9bd8c5f723abef25b8864457df7207eb361be8e3.tar.zst tangerine-wallet-browser-9bd8c5f723abef25b8864457df7207eb361be8e3.zip |
Render personal_sign messages as utf-8 text
Calls to `personal_sign` are now:
- When hex encoded, preserved as hex encoded, but displayed as utf-8 text.
- When not hex encoded, decoded as utf-8 text as hex for signing.
- The messages proposed for signing are displayed as UTF-8 text.
- When the message cannot be rendered as UTF-8 text, it is displayed as hexadecimal.
Fixes #1173
Diffstat (limited to 'ui/app/components/binary-renderer.js')
-rw-r--r-- | ui/app/components/binary-renderer.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ui/app/components/binary-renderer.js b/ui/app/components/binary-renderer.js new file mode 100644 index 000000000..a9d49b128 --- /dev/null +++ b/ui/app/components/binary-renderer.js @@ -0,0 +1,43 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const ethUtil = require('ethereumjs-util') + +module.exports = BinaryRenderer + +inherits(BinaryRenderer, Component) +function BinaryRenderer () { + Component.call(this) +} + +BinaryRenderer.prototype.render = function () { + const props = this.props + const { value } = props + const text = this.hexToText(value) + + return ( + h('textarea.font-small', { + readOnly: true, + style: { + width: '315px', + maxHeight: '210px', + resize: 'none', + border: 'none', + background: 'white', + padding: '3px', + }, + defaultValue: text, + }) + ) +} + +BinaryRenderer.prototype.hexToText = function (hex) { + try { + const stripped = ethUtil.stripHexPrefix(hex) + const buff = Buffer.from(stripped, 'hex') + return buff.toString('utf8') + } catch (e) { + return hex + } +} + |