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 #1173feature/default_network_editable
parent
f9b2c12dc3
commit
9bd8c5f723
@ -0,0 +1,25 @@ |
|||||||
|
var assert = require('assert') |
||||||
|
var BinaryRenderer = require('../../../ui/app/components/binary-renderer') |
||||||
|
|
||||||
|
describe('BinaryRenderer', function() { |
||||||
|
|
||||||
|
let binaryRenderer |
||||||
|
const message = 'Hello, world!' |
||||||
|
const buffer = new Buffer(message, 'utf8') |
||||||
|
const hex = buffer.toString('hex') |
||||||
|
|
||||||
|
beforeEach(function() { |
||||||
|
binaryRenderer = new BinaryRenderer() |
||||||
|
}) |
||||||
|
|
||||||
|
it('recovers message', function() { |
||||||
|
const result = binaryRenderer.hexToText(hex) |
||||||
|
assert.equal(result, message) |
||||||
|
}) |
||||||
|
|
||||||
|
|
||||||
|
it('recovers message with hex prefix', function() { |
||||||
|
const result = binaryRenderer.hexToText('0x' + hex) |
||||||
|
assert.equal(result, message) |
||||||
|
}) |
||||||
|
}) |
@ -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 |
||||||
|
} |
||||||
|
} |
||||||
|
|
Loading…
Reference in new issue