From df37004f57a751b0f089dcef7b8fbcdf306bd08f Mon Sep 17 00:00:00 2001 From: Denis Davidyuk Date: Sat, 1 May 2021 22:12:34 +0300 Subject: [PATCH] refactor(crypto)!: rename messageToBinary to messageToHash adding hashing --- src/account/base.js | 4 ++-- src/utils/crypto.js | 8 ++++---- test/integration/contract.js | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/account/base.js b/src/account/base.js index 64453006cb..07d5e1da9c 100644 --- a/src/account/base.js +++ b/src/account/base.js @@ -24,7 +24,7 @@ import stampit from '@stamp/it' import { required } from '@stamp/required' -import { hash, messageToBinary, decodeBase64Check, assertedType, verifyMessage as verifyMessageCrypto } from '../utils/crypto' +import { messageToHash, decodeBase64Check, assertedType, verifyMessage as verifyMessageCrypto } from '../utils/crypto' import { buildTx, buildTxHash } from '../tx/builder' import { decode } from '../tx/builder/helpers' import { TX_TYPE } from '../tx/builder/schema' @@ -78,7 +78,7 @@ async function signTransaction (tx, opt) { * @return {String} Signature */ async function signMessage (message, opt = { returnHex: false }) { - const sig = await this.sign(hash(messageToBinary(message)), opt) + const sig = await this.sign(messageToHash(message), opt) return opt.returnHex ? Buffer.from(sig).toString('hex') : sig } diff --git a/src/utils/crypto.js b/src/utils/crypto.js index d2ae768fe5..cb4b29282d 100644 --- a/src/utils/crypto.js +++ b/src/utils/crypto.js @@ -328,19 +328,19 @@ export function prepareTx (signature, data) { return [Buffer.from([11]), Buffer.from([1]), [Buffer.from(signature)], data] } -export function messageToBinary (message) { +export function messageToHash (message) { const p = Buffer.from('aeternity Signed Message:\n', 'utf8') const msg = Buffer.from(message, 'utf8') if (msg.length >= 0xFD) throw new Error('message too long') - return Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]) + return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg])) } export function signMessage (message, privateKey) { - return sign(hash(messageToBinary(message)), privateKey) + return sign(messageToHash(message), privateKey) } export function verifyMessage (str, signature, publicKey) { - return verify(hash(messageToBinary(str)), signature, publicKey) + return verify(messageToHash(str), signature, publicKey) } /** diff --git a/test/integration/contract.js b/test/integration/contract.js index 3304a73477..96d8274894 100644 --- a/test/integration/contract.js +++ b/test/integration/contract.js @@ -22,7 +22,7 @@ import { DRY_RUN_ACCOUNT } from '../../src/tx/builder/schema' import * as R from 'ramda' import { randomName } from '../utils' import { decodeEvents, readType, SOPHIA_TYPES } from '../../src/contract/aci/transformation' -import { hash, messageToBinary } from '../../src/utils/crypto' +import { messageToHash } from '../../src/utils/crypto' import { getFunctionACI } from '../../src/contract/aci/helpers' const identityContract = ` @@ -295,8 +295,7 @@ describe('Contract', function () { return contract.contractDeploy(code.bytecode, identityContract).should.eventually.have.property('address') }) it('Verify message in Sophia', async () => { - const msg = messageToBinary('Hello') - const msgHash = hash(msg) + const msgHash = messageToHash('Hello') const signature = await contract.sign(msgHash) const signContract = await contract.getContractInstance(signSource) await signContract.deploy()