From 038b50455e8ca7cdc98a4cc80ddb4bb58f1c06b3 Mon Sep 17 00:00:00 2001 From: Jaco Date: Wed, 23 Jun 2021 13:15:21 +0300 Subject: [PATCH] Update deps (blake2js w/ types, @ledger/hw-transport) (#1027) * Update deps (blake2js w/ types, @ledger/hw-transport) * Lint fix * Exapnd blake2 tests --- package.json | 4 +- packages/hw-ledger-transports/package.json | 1 + packages/util-crypto/package.json | 2 +- packages/util-crypto/src/blake2/asHex.spec.ts | 60 +++++++++++-------- packages/util-crypto/src/blake2/asHex.ts | 4 +- packages/util-crypto/src/blake2/asU8a.spec.ts | 16 ++--- packages/util-crypto/src/blake2/asU8a.ts | 4 +- yarn.lock | 21 +++---- 8 files changed, 58 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index 4a26f0b24..60d3252af 100644 --- a/package.json +++ b/package.json @@ -19,12 +19,12 @@ "postinstall": "polkadot-dev-yarn-only", "test": "polkadot-dev-run-test --coverage --runInBand --testPathIgnorePatterns crosscheck --testPathIgnorePatterns toMiniSecretCmp", "test:mnemonicCmp": "polkadot-dev-run-test packages/util-crypto/src/mnemonic/toMiniSecretCmp.spec.ts", - "test:one": "polkadot-dev-run-test" + "test:one": "polkadot-dev-run-test --runInBand" }, "devDependencies": { "@babel/core": "^7.14.6", "@polkadot/dev": "^0.62.43", - "@polkadot/ts": "^0.3.91", + "@polkadot/ts": "^0.4.1", "@types/jest": "^26.0.23" }, "version": "6.9.2-5" diff --git a/packages/hw-ledger-transports/package.json b/packages/hw-ledger-transports/package.json index a08277040..853a7e63d 100644 --- a/packages/hw-ledger-transports/package.json +++ b/packages/hw-ledger-transports/package.json @@ -16,6 +16,7 @@ }, "dependencies": { "@babel/runtime": "^7.14.6", + "@ledgerhq/hw-transport": "^6.0.2", "@ledgerhq/hw-transport-webhid": "^6.0.2", "@ledgerhq/hw-transport-webusb": "^6.0.2" }, diff --git a/packages/util-crypto/package.json b/packages/util-crypto/package.json index 4b9bec221..536c2b945 100644 --- a/packages/util-crypto/package.json +++ b/packages/util-crypto/package.json @@ -26,7 +26,7 @@ "@polkadot/x-randomvalues": "6.9.2-5", "base-x": "^3.0.8", "base64-js": "^1.5.1", - "blakejs": "^1.1.0", + "blakejs": "^1.1.1", "bn.js": "^4.11.9", "create-hash": "^1.2.0", "elliptic": "^6.5.4", diff --git a/packages/util-crypto/src/blake2/asHex.spec.ts b/packages/util-crypto/src/blake2/asHex.spec.ts index 1322f5bb6..bd44de0a8 100644 --- a/packages/util-crypto/src/blake2/asHex.spec.ts +++ b/packages/util-crypto/src/blake2/asHex.spec.ts @@ -11,35 +11,43 @@ describe('blake2AsHex', (): void => { await waitReady(); }); - it('returns a 64-bit value (specified)', (): void => { - expect( - blake2AsHex('abc', 64) - ).toEqual('0xd8bb14d833d59559'); - }); + describe.each([false, true])('onlyJs=%p', (onlyJs): void => { + it('returns a 64-bit value (specified)', (): void => { + expect( + blake2AsHex('abc', 64, null, onlyJs) + ).toEqual('0xd8bb14d833d59559'); + }); - it('returns a 128-bit value (as specified)', (): void => { - expect( - blake2AsHex('abc', 128) - ).toEqual('0xcf4ab791c62b8d2b2109c90275287816'); - }); + it('returns a 128-bit value (as specified)', (): void => { + expect( + blake2AsHex('abc', 128, null, onlyJs) + ).toEqual('0xcf4ab791c62b8d2b2109c90275287816'); + }); - it('returns a 256-bit value (default)', (): void => { - expect( - blake2AsHex('abc') - ).toEqual('0xbddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319'); - }); + it('returns a 128-bit value (as specified, with key)', (): void => { + expect( + blake2AsHex('abc', 128, new Uint8Array([1, 2]), onlyJs) + ).toEqual('0x36f3d08cda72a00ddf2be103eb5770d9'); + }); - it('returns a 512-bit value (as specified)', (): void => { - expect( - blake2AsHex('abc', 512) - ).toEqual('0xba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923'); - }); + it('returns a 256-bit value (default)', (): void => { + expect( + blake2AsHex('abc', undefined, null, onlyJs) + ).toEqual('0xbddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319'); + }); - it('matches with the Rust implementation', (): void => { - expect( - blake2AsHex( - hexToU8a('0x454545454545454545454545454545454545454545454545454545454545454501000000000000002481853da20b9f4322f34650fea5f240dcbfb266d02db94bfa0153c31f4a29dbdbf025dd4a69a6f4ee6e1577b251b655097e298b692cb34c18d3182cac3de0dc00000000'), 256 - ) - ).toEqual('0x1025e5db74fdaf4d2818822dccf0e1604ae9ccc62f26cecfde23448ff0248abf'); + it('returns a 512-bit value (as specified)', (): void => { + expect( + blake2AsHex('abc', 512, null, onlyJs) + ).toEqual('0xba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923'); + }); + + it('matches with the Rust implementation', (): void => { + expect( + blake2AsHex( + hexToU8a('0x454545454545454545454545454545454545454545454545454545454545454501000000000000002481853da20b9f4322f34650fea5f240dcbfb266d02db94bfa0153c31f4a29dbdbf025dd4a69a6f4ee6e1577b251b655097e298b692cb34c18d3182cac3de0dc00000000'), 256, undefined, onlyJs + ) + ).toEqual('0x1025e5db74fdaf4d2818822dccf0e1604ae9ccc62f26cecfde23448ff0248abf'); + }); }); }); diff --git a/packages/util-crypto/src/blake2/asHex.ts b/packages/util-crypto/src/blake2/asHex.ts index a943dd2e2..8d206544f 100644 --- a/packages/util-crypto/src/blake2/asHex.ts +++ b/packages/util-crypto/src/blake2/asHex.ts @@ -19,8 +19,8 @@ import { blake2AsU8a } from './asU8a'; * blake2AsHex('abc'); // => 0xba80a53f981c4d0d * ``` */ -export function blake2AsHex (data: Uint8Array | string, bitLength = 256): string { +export function blake2AsHex (data: Uint8Array | string, bitLength = 256, key?: Uint8Array | null, onlyJs = false): string { return u8aToHex( - blake2AsU8a(data, bitLength) + blake2AsU8a(data, bitLength, key, onlyJs) ); } diff --git a/packages/util-crypto/src/blake2/asU8a.spec.ts b/packages/util-crypto/src/blake2/asU8a.spec.ts index 8fcbe722e..dd6eb9836 100644 --- a/packages/util-crypto/src/blake2/asU8a.spec.ts +++ b/packages/util-crypto/src/blake2/asU8a.spec.ts @@ -11,38 +11,32 @@ describe('blake2AsU8a', (): void => { await waitReady(); }); - [false, true].forEach((onlyJs): void => { - it(`returns a 64-bit value by default (onlyJs=${onlyJs.toString()})`, (): void => { + describe.each([false, true])('onlyJs=%p', (onlyJs): void => { + it('returns a 64-bit value by default', (): void => { expect( blake2AsU8a('abc', undefined, undefined, onlyJs) ).toEqual( new Uint8Array([189, 221, 129, 60, 99, 66, 57, 114, 49, 113, 239, 63, 238, 152, 87, 155, 148, 150, 78, 59, 177, 203, 62, 66, 114, 98, 200, 192, 104, 213, 35, 25]) ); }); - }); - [false, true].forEach((onlyJs): void => { - it(`returns a 128-bit value (as specified, onlyJs=${onlyJs.toString()})`, (): void => { + it('returns a 128-bit value (as specified,)', (): void => { expect( blake2AsU8a('abc', 128, undefined, onlyJs) ).toEqual( new Uint8Array([207, 74, 183, 145, 198, 43, 141, 43, 33, 9, 201, 2, 117, 40, 120, 22]) ); }); - }); - [false, true].forEach((onlyJs): void => { - it(`returns a 256-bit value (as specified, onlyJs=${onlyJs.toString()})`, (): void => { + it('returns a 256-bit value (as specified)', (): void => { expect( blake2AsU8a('abc', 256, undefined, onlyJs) ).toEqual( new Uint8Array([189, 221, 129, 60, 99, 66, 57, 114, 49, 113, 239, 63, 238, 152, 87, 155, 148, 150, 78, 59, 177, 203, 62, 66, 114, 98, 200, 192, 104, 213, 35, 25]) ); }); - }); - [false, true].forEach((onlyJs): void => { - it(`returns a 512-bit value (as specified, onlyJs=${onlyJs.toString()})`, (): void => { + it('returns a 512-bit value (as specified)', (): void => { expect( blake2AsU8a('abc', 512, undefined, onlyJs) ).toEqual( diff --git a/packages/util-crypto/src/blake2/asU8a.ts b/packages/util-crypto/src/blake2/asU8a.ts index 5858d3d63..1b5d896de 100644 --- a/packages/util-crypto/src/blake2/asU8a.ts +++ b/packages/util-crypto/src/blake2/asU8a.ts @@ -20,10 +20,10 @@ import { blake2b, isReady } from '@polkadot/wasm-crypto'; * blake2AsU8a('abc'); // => [0xba, 0x80, 0xa53, 0xf98, 0x1c, 0x4d, 0x0d] * ``` */ -export function blake2AsU8a (data: Uint8Array | string, bitLength = 256, key: Uint8Array | null = null, onlyJs = false): Uint8Array { +export function blake2AsU8a (data: Uint8Array | string, bitLength = 256, key?: Uint8Array | null, onlyJs = false): Uint8Array { const byteLength = Math.ceil(bitLength / 8); return isReady() && !onlyJs ? blake2b(u8aToU8a(data), u8aToU8a(key), byteLength) - : js.blake2b(u8aToU8a(data), key, byteLength); + : js.blake2b(u8aToU8a(data), key || undefined, byteLength); } diff --git a/yarn.lock b/yarn.lock index b8da7327f..60eab8907 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2062,6 +2062,7 @@ __metadata: resolution: "@polkadot/hw-ledger-transports@workspace:packages/hw-ledger-transports" dependencies: "@babel/runtime": ^7.14.6 + "@ledgerhq/hw-transport": ^6.0.2 "@ledgerhq/hw-transport-node-hid-singleton": ^6.0.2 "@ledgerhq/hw-transport-webhid": ^6.0.2 "@ledgerhq/hw-transport-webusb": ^6.0.2 @@ -2105,12 +2106,12 @@ __metadata: languageName: unknown linkType: soft -"@polkadot/ts@npm:^0.3.91": - version: 0.3.91 - resolution: "@polkadot/ts@npm:0.3.91" +"@polkadot/ts@npm:^0.4.1": + version: 0.4.1 + resolution: "@polkadot/ts@npm:0.4.1" dependencies: "@types/chrome": ^0.0.145 - checksum: 1ab644ebac9a1263b28f7bd21b7a2ae3243e472248e61049550849242a8ddd3643db622f41c0b82b694a273fea80ed996fba2b48d5c26232194aab4bd1ae5b6f + checksum: 12698097281fdaf13b627bf992dad3c700512963353dab348498d53fd980292d1e24c7406560e5e7e1b07add77fe79e430d10f5c0da643019a24783c0974e5b7 languageName: node linkType: hard @@ -2130,7 +2131,7 @@ __metadata: "@types/xxhashjs": ^0.2.2 base-x: ^3.0.8 base64-js: ^1.5.1 - blakejs: ^1.1.0 + blakejs: ^1.1.1 bn.js: ^4.11.9 create-hash: ^1.2.0 elliptic: ^6.5.4 @@ -3448,10 +3449,10 @@ __metadata: languageName: node linkType: hard -"blakejs@npm:^1.1.0": - version: 1.1.0 - resolution: "blakejs@npm:1.1.0" - checksum: 69df62aee27e30ff2af8d709dd4676e037f2e92ded09b0d1a8187d1a69edaf05f4e63f3f473a0e44576e517196e54193641eec345bcc505c8a221940ec491141 +"blakejs@npm:^1.1.0, blakejs@npm:^1.1.1": + version: 1.1.1 + resolution: "blakejs@npm:1.1.1" + checksum: 77a0875af41fe0a6b15feacc69a4a730063df697b2932adbde15aa2c9c58a592870cd511a494ceee59cc8143ae64964dfa1bf301dab275b330debcd12c2b3db9 languageName: node linkType: hard @@ -9706,7 +9707,7 @@ resolve@^2.0.0-next.3: dependencies: "@babel/core": ^7.14.6 "@polkadot/dev": ^0.62.43 - "@polkadot/ts": ^0.3.91 + "@polkadot/ts": ^0.4.1 "@types/jest": ^26.0.23 languageName: unknown linkType: soft