From 1f8a47852b725b529dd55ad71f484d8116ee442c Mon Sep 17 00:00:00 2001 From: Christoph-Samuel Pitter Date: Mon, 14 Feb 2022 16:28:54 +0100 Subject: [PATCH] replaced an outdated signing library with its new version, replaces a require with import, changed a few types around to make it work --- .nvmrc | 2 +- packages/smartcontracts/package.json | 26 ++--- .../test/StreamRegistry.test.ts | 99 ++++++++++--------- 3 files changed, 66 insertions(+), 61 deletions(-) diff --git a/.nvmrc b/.nvmrc index e22c25eea..202290b82 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v16.10.0 \ No newline at end of file +v16.13.1 \ No newline at end of file diff --git a/packages/smartcontracts/package.json b/packages/smartcontracts/package.json index 2ccc5cc53..3afa6c23a 100644 --- a/packages/smartcontracts/package.json +++ b/packages/smartcontracts/package.json @@ -46,7 +46,6 @@ "@openzeppelin/hardhat-upgrades": "^1.12.0", "debug": "^4.3.1", "eth-ens-namehash": "^2.0.8", - "eth-sig-util": "^2.5.4", "ethers": "^5.1.4", "event-stream": "^4.0.1", "hardhat": "^2.2.1", @@ -56,32 +55,33 @@ "hardhat-typechain": "^0.3.5" }, "devDependencies": { - "solc": "0.8.6", - "solidity-coverage": "^0.7.17", - "typechain": "^4.0.3", - "solhint": "^3.3.4", - "ts-mocha": "9.0.2", - "eslint": "^7.32.0", - "mocha": "9.2.0", - "@types/chai": "^4.2.22", - "@typescript-eslint/eslint-plugin": "^4.22.1", - "@typescript-eslint/parser": "^4.22.1", - "chai": "^4.3.4", - "chai-bignumber": "^3.0.0", + "@metamask/eth-sig-util": "^4.0.0", "@nomiclabs/hardhat-ethers": "^2.0.2", "@typechain/ethers-v5": "^6.0.5", + "@types/chai": "^4.2.22", "@types/debug": "^4.1.7", "@types/mocha": "^9.1.0", "@types/node": "^15.0.1", + "@typescript-eslint/eslint-plugin": "^4.22.1", + "@typescript-eslint/parser": "^4.22.1", "bignumber.js": "^9.0.1", + "chai": "^4.3.4", + "chai-bignumber": "^3.0.0", + "eslint": "^7.32.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-streamr-nodejs": "2.0.1", "eslint-plugin-chai-friendly": "^0.6.0", "eslint-plugin-import": "^2.22.1", "eslint-plugin-promise": "^4.2.1", "ethereum-waffle": "^3.3.0", + "mocha": "9.2.0", + "solc": "0.8.6", + "solhint": "^3.3.4", + "solidity-coverage": "^0.7.17", "ts-generator": "^0.1.1", + "ts-mocha": "9.0.2", "ts-node": "^9.1.1", + "typechain": "^4.0.3", "typescript": "^4.2.4" } } diff --git a/packages/smartcontracts/test/StreamRegistry.test.ts b/packages/smartcontracts/test/StreamRegistry.test.ts index 88b5e58df..34aac3e07 100644 --- a/packages/smartcontracts/test/StreamRegistry.test.ts +++ b/packages/smartcontracts/test/StreamRegistry.test.ts @@ -1,16 +1,12 @@ import { waffle, upgrades, ethers } from 'hardhat' import { expect, use } from 'chai' import { BigNumber, utils, Wallet } from 'ethers' +import { signTypedData, SignTypedDataVersion, TypedMessage } from '@metamask/eth-sig-util' -// import StreamRegistryJson from '../artifacts/contracts/StreamRegistry/StreamRegistry.sol/StreamRegistry.json' -// import ENSMockJson from '../artifacts/contracts/StreamRegistry/StreamRegistry.sol/StreamRegistry.json' -// import { ENSMock } from '../typechain/StreamRegistry' import ForwarderJson from '../test-contracts/MinimalForwarder.json' import type { MinimalForwarder } from '../test-contracts/MinimalForwarder' import type { StreamRegistry } from '../typechain/StreamRegistry' -const ethSigUtil = require('eth-sig-util') - const { deployContract } = waffle const { provider } = waffle @@ -669,20 +665,23 @@ describe('StreamRegistry', (): void => { nonce: (await minimalForwarderFromUser0.getNonce(adminAdress)).toString(), data } - const sign = ethSigUtil.signTypedMessage(utils.arrayify(wallets[0].privateKey), // user0 - { - data: { - types, - domain: { - name: 'MinimalForwarder', - version: '0.0.1', - chainId: (await provider.getNetwork()).chainId, - verifyingContract: minimalForwarderFromUser0.address, - }, - primaryType: 'ForwardRequest', - message: req - } - }) + const d: TypedMessage = { + types, + domain: { + name: 'MinimalForwarder', + version: '0.0.1', + chainId: (await provider.getNetwork()).chainId, + verifyingContract: minimalForwarderFromUser0.address, + }, + primaryType: 'ForwardRequest', + message: req, + } + const options = { + data: d, + privateKey: utils.arrayify(wallets[0].privateKey) as Buffer, + version: SignTypedDataVersion.V4, + } + const sign = signTypedData(options) // user0 const res = await minimalForwarderFromUser0.verify(req, sign) await expect(res).to.be.true @@ -706,20 +705,23 @@ describe('StreamRegistry', (): void => { data } // signing with user1 (walletindex 2) - const sign = ethSigUtil.signTypedMessage(utils.arrayify(wallets[2].privateKey), // user0 - { - data: { - types, - domain: { - name: 'MinimalForwarder', - version: '0.0.1', - chainId: (await provider.getNetwork()).chainId, - verifyingContract: minimalForwarderFromUser0.address, - }, - primaryType: 'ForwardRequest', - message: req - } - }) + const d: TypedMessage = { + types, + domain: { + name: 'MinimalForwarder', + version: '0.0.1', + chainId: (await provider.getNetwork()).chainId, + verifyingContract: minimalForwarderFromUser0.address, + }, + primaryType: 'ForwardRequest', + message: req, + } + const options = { + data: d, + privateKey: utils.arrayify(wallets[2].privateKey) as Buffer, + version: SignTypedDataVersion.V4, + } + const sign = signTypedData(options) // user0 const res = await minimalForwarderFromUser0.verify(req, sign) await expect(res).to.be.false @@ -740,20 +742,23 @@ describe('StreamRegistry', (): void => { data } // signing with user1 (walletindex 2) - const sign = ethSigUtil.signTypedMessage(utils.arrayify(wallets[0].privateKey), // user0 - { - data: { - types, - domain: { - name: 'MinimalForwarder', - version: '0.0.1', - chainId: (await provider.getNetwork()).chainId, - verifyingContract: minimalForwarderFromUser0.address, - }, - primaryType: 'ForwardRequest', - message: req - } - }) + const d: TypedMessage = { + types, + domain: { + name: 'MinimalForwarder', + version: '0.0.1', + chainId: (await provider.getNetwork()).chainId, + verifyingContract: minimalForwarderFromUser0.address, + }, + primaryType: 'ForwardRequest', + message: req, + } + const options = { + data: d, + privateKey: utils.arrayify(wallets[0].privateKey) as Buffer, + version: SignTypedDataVersion.V4, + } + const sign = signTypedData(options) // user0 const res = await minimalForwarderFromUser0.verify(req, sign) await expect(res).to.be.true