diff --git a/packages/encryption/package.json b/packages/encryption/package.json
index 168085a816c6..530a6d11e5ad 100644
--- a/packages/encryption/package.json
+++ b/packages/encryption/package.json
@@ -10,6 +10,7 @@
}
},
"dependencies": {
+ "@dimensiondev/secp256k1-webcrypto": "1.0.0-20220412114204-be816df",
"@dimensiondev/stego-js": "0.11.1-20201027083223-8ab41be",
"@masknet/shared-base": "workspace:*",
"@masknet/typed-message": "workspace:*",
diff --git a/packages/encryption/tests/setup.ts b/packages/encryption/tests/setup.ts
index 1f0839cbce28..26c67f53e009 100644
--- a/packages/encryption/tests/setup.ts
+++ b/packages/encryption/tests/setup.ts
@@ -1,22 +1,10 @@
import { test } from '@jest/globals'
-import { webcrypto } from 'crypto'
import { atob, btoa } from 'buffer'
+import { polyfill } from '@dimensiondev/secp256k1-webcrypto/node'
test('Setup env', () => {})
if (!Reflect.get(globalThis, 'crypto')) {
- Object.assign(globalThis, {
- crypto: webcrypto,
- atob,
- btoa,
- self: globalThis,
- navigator: {
- userAgent: 'Chrome/99.0.0.0',
- },
- })
-
- // @ts-ignore
- await import('../../polyfills/dist/secp256k1.js')
- Reflect.deleteProperty(globalThis, 'navigator')
- Reflect.deleteProperty(globalThis, 'self')
+ polyfill()
+ Object.assign(globalThis, { atob, btoa })
}
diff --git a/packages/mask/.webpack/config.ts b/packages/mask/.webpack/config.ts
index 04395d158fe6..169a2c487097 100644
--- a/packages/mask/.webpack/config.ts
+++ b/packages/mask/.webpack/config.ts
@@ -269,7 +269,6 @@ export function createConfiguration(rawFlags: BuildFlags): Configuration {
addHTMLEntry({
chunks: ['background'],
filename: 'background.html',
- secp256k1: true,
gun: true,
sourceMap: !!sourceMapKind,
}),
@@ -297,18 +296,11 @@ export function createConfiguration(rawFlags: BuildFlags): Configuration {
}
function addHTMLEntry(
options: HTMLPlugin.Options & {
- secp256k1?: boolean
sourceMap: boolean
gun?: boolean
},
) {
let templateContent = readFileSync(join(__dirname, './template.html'), 'utf8')
- if (options.secp256k1) {
- templateContent = templateContent.replace(
- ``,
- '',
- )
- }
if (options.gun) {
templateContent = templateContent.replace(``, '')
}
diff --git a/packages/mask/.webpack/template.html b/packages/mask/.webpack/template.html
index 11a6e47c32df..2b2a8cc3c964 100644
--- a/packages/mask/.webpack/template.html
+++ b/packages/mask/.webpack/template.html
@@ -6,7 +6,6 @@
-
diff --git a/packages/mask/background/setup.ts b/packages/mask/background/setup.ts
index b1446fa111ac..359b798972b8 100644
--- a/packages/mask/background/setup.ts
+++ b/packages/mask/background/setup.ts
@@ -1,4 +1,6 @@
+import { polyfill } from '@dimensiondev/secp256k1-webcrypto'
import { setupMaskKVStorageBackend } from '../shared/kv-storage'
import { inMemory_KVStorageBackend, indexedDB_KVStorageBackend } from './database/kv-storage'
+polyfill()
setupMaskKVStorageBackend(indexedDB_KVStorageBackend, inMemory_KVStorageBackend)
diff --git a/packages/mask/package.json b/packages/mask/package.json
index 3c584d161b21..e2c5afd0dfb1 100644
--- a/packages/mask/package.json
+++ b/packages/mask/package.json
@@ -8,6 +8,7 @@
"@dimensiondev/holoflows-kit": "^0.9.0-20210902104757-7c3d0d0",
"@dimensiondev/mask-wallet-core": "0.1.0-20211013082857-eb62e5f",
"@dimensiondev/metamask-extension-provider": "3.0.6-20210519045409-1835d4d",
+ "@dimensiondev/secp256k1-webcrypto": "1.0.0-20220412114204-be816df",
"@ethersproject/abi": "^5.4.0",
"@ethersproject/address": "^5.0.4",
"@ethersproject/providers": "^5.0.9",
diff --git a/packages/polyfills/builder.mjs b/packages/polyfills/builder.mjs
index afc8ace7001e..56bff31e87bb 100644
--- a/packages/polyfills/builder.mjs
+++ b/packages/polyfills/builder.mjs
@@ -20,7 +20,7 @@ let polyfillVersion = '__'
const lockfile = await readFile(lockfilePath)
const hash = createHash('sha256')
hash.update(lockfile)
- polyfillVersion = 'v4' + hash.digest('hex')
+ polyfillVersion = 'v5' + hash.digest('hex')
}
const versionFilePath = fileURLToPath(new URL('./dist/version.txt', import.meta.url))
@@ -52,18 +52,9 @@ for (const optionsObj of options) {
await Promise.all(optionsObj.output.map(bundle.write))
}
-const elliptic = await readFile(fileURLToPath(new URL('./dist/internal_elliptic.js', import.meta.url)), 'utf-8')
-const liner = await readFile(require.resolve('webcrypto-liner/build/webcrypto-liner.shim.min.mjs'), 'utf-8')
-await writeFile(
- fileURLToPath(new URL('./dist/secp256k1.js', import.meta.url)),
- `${elliptic};
-${liner};`,
-)
-
await normalize(new URL('./dist/dom.js', import.meta.url))
await normalize(new URL('./dist/ecmascript.js', import.meta.url))
await normalize(new URL('./dist/intl.js', import.meta.url))
-await normalize(new URL('./dist/secp256k1.js', import.meta.url))
await normalize(new URL('./dist/worker.js', import.meta.url))
await writeFile(versionFilePath, polyfillVersion)
diff --git a/packages/polyfills/elliptic.js b/packages/polyfills/elliptic.js
deleted file mode 100644
index 7575b1b1c3a7..000000000000
--- a/packages/polyfills/elliptic.js
+++ /dev/null
@@ -1,4 +0,0 @@
-import elliptic from 'elliptic'
-import { Buffer } from './node_modules/buffer/index'
-globalThis.elliptic = elliptic
-globalThis.Buffer = Buffer
diff --git a/packages/polyfills/package.json b/packages/polyfills/package.json
index ef092ba0c91e..6cc611a533f8 100644
--- a/packages/polyfills/package.json
+++ b/packages/polyfills/package.json
@@ -18,8 +18,6 @@
"dependencies": {
"buffer": "^6.0.3",
"clipboard-polyfill": "^3.0.3",
- "core-js": "^3.21.1",
- "elliptic": "^6.5.4",
- "webcrypto-liner": "1.3.1"
+ "core-js": "^3.21.1"
}
}
diff --git a/packages/polyfills/rollup.config.js b/packages/polyfills/rollup.config.js
index d2e87c000eab..1a894c663d6f 100644
--- a/packages/polyfills/rollup.config.js
+++ b/packages/polyfills/rollup.config.js
@@ -30,14 +30,6 @@ export default [
},
plugins: plugins(),
},
- {
- input: join(__dirname, './elliptic.js'),
- output: {
- file: 'internal_elliptic.js',
- format: 'iife',
- },
- plugins: plugins(),
- },
]
function plugins() {
return [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index be09674594cf..d19964c7e2ea 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -237,11 +237,13 @@ importers:
packages/encryption:
specifiers:
+ '@dimensiondev/secp256k1-webcrypto': 1.0.0-20220412114204-be816df
'@dimensiondev/stego-js': 0.11.1-20201027083223-8ab41be
'@masknet/shared-base': workspace:*
'@masknet/typed-message': workspace:*
'@msgpack/msgpack': ^2.7.2
dependencies:
+ '@dimensiondev/secp256k1-webcrypto': 1.0.0-20220412114204-be816df
'@dimensiondev/stego-js': 0.11.1-20201027083223-8ab41be
'@masknet/shared-base': link:../shared-base
'@masknet/typed-message': link:../typed-message
@@ -288,6 +290,7 @@ importers:
'@dimensiondev/holoflows-kit': ^0.9.0-20210902104757-7c3d0d0
'@dimensiondev/mask-wallet-core': 0.1.0-20211013082857-eb62e5f
'@dimensiondev/metamask-extension-provider': 3.0.6-20210519045409-1835d4d
+ '@dimensiondev/secp256k1-webcrypto': 1.0.0-20220412114204-be816df
'@dimensiondev/webextension-shim': 0.0.3-20210823035705-4257e12
'@ethersproject/abi': ^5.4.0
'@ethersproject/address': ^5.0.4
@@ -429,6 +432,7 @@ importers:
'@dimensiondev/holoflows-kit': 0.9.0-20210902104757-7c3d0d0_webextension-polyfill@0.9.0
'@dimensiondev/mask-wallet-core': 0.1.0-20211013082857-eb62e5f_protobufjs@6.11.2
'@dimensiondev/metamask-extension-provider': 3.0.6-20210519045409-1835d4d
+ '@dimensiondev/secp256k1-webcrypto': 1.0.0-20220412114204-be816df
'@ethersproject/abi': 5.4.0
'@ethersproject/address': 5.4.0
'@ethersproject/providers': 5.4.2
@@ -926,16 +930,12 @@ importers:
clipboard-polyfill: ^3.0.3
core-js: ^3.21.1
core-js-builder: ^3.21.1
- elliptic: ^6.5.4
rollup: ^2.70.1
rollup-plugin-terser: ^7.0.2
- webcrypto-liner: 1.3.1
dependencies:
buffer: 6.0.3
clipboard-polyfill: 3.0.3
core-js: 3.21.1
- elliptic: 6.5.4
- webcrypto-liner: 1.3.1
devDependencies:
'@rollup/plugin-commonjs': 21.0.3_rollup@2.70.1
'@rollup/plugin-json': 4.1.0_rollup@2.70.1
@@ -4041,6 +4041,13 @@ packages:
tmp: 0.0.33
dev: true
+ /@dimensiondev/secp256k1-webcrypto/1.0.0-20220412114204-be816df:
+ resolution: {integrity: sha512-gDNH39SnATJogShz7egcc4aJqBUurB7xzyNVuVy78XmkAz57xG7nWlo5KyC8sh9cZDHNwi12vYI1zJz5UPgN2A==, tarball: download/@dimensiondev/secp256k1-webcrypto/1.0.0-20220412114204-be816df/7e05b026476e62dc08df835fa6a559e9dbcfe976128f54172b8d0d0221aad6af}
+ dependencies:
+ elliptic: 6.5.4
+ pvtsutils: 1.2.2
+ dev: false
+
/@dimensiondev/stego-js/0.11.1-20201027083223-8ab41be:
resolution: {integrity: sha512-lm49qcX2O40Nn+AGKN6J4qrpPHaffGnvUI3mCh+obyiZxT9H5/vZv1B+SUm2bXq8r2LeLHIeW90x1lpyg1roTQ==, tarball: download/@dimensiondev/stego-js/0.11.1-20201027083223-8ab41be/2d41418365c7ea41e10de432e82b0707c3a3a3b70a20a3733276162eeb6c4bcd}
hasBin: true
@@ -5906,6 +5913,7 @@ packages:
pvtsutils: 1.2.1
tslib: 2.3.1
dev: false
+ optional: true
/@peculiar/json-schema/1.1.12:
resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==}
@@ -5913,6 +5921,7 @@ packages:
dependencies:
tslib: 2.3.1
dev: false
+ optional: true
/@peculiar/webcrypto/1.2.3:
resolution: {integrity: sha512-q7wDfZy3k/tpnsYB23/MyyDkjn6IdHh8w+xwoVMS5cu6CjVoFzngXDZEOOuSE4zus2yO6ciQhhHxd4XkLpwVnQ==}
@@ -8333,6 +8342,7 @@ packages:
/@types/asn1js/2.0.2:
resolution: {integrity: sha512-t4YHCgtD+ERvH0FyxvNlYwJ2ezhqw7t+Ygh4urQ7dJER8i185JPv6oIM3ey5YQmGN6Zp9EMbpohkjZi9t3UxwA==}
dev: false
+ optional: true
/@types/babel__core/7.1.18:
resolution: {integrity: sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==}
@@ -10323,10 +10333,6 @@ packages:
resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=}
dev: false
- /asmcrypto.js/2.3.2:
- resolution: {integrity: sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA==}
- dev: false
-
/asn1.js/5.4.1:
resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==}
dependencies:
@@ -10347,6 +10353,7 @@ packages:
dependencies:
pvutils: 1.1.3
dev: false
+ optional: true
/assert-plus/1.0.0:
resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=}
@@ -21780,6 +21787,7 @@ packages:
dependencies:
tslib: 2.3.1
dev: false
+ optional: true
/pvtsutils/1.2.2:
resolution: {integrity: sha512-OALo5ZEdqiI127i64+CXwkCOyFHUA+tCQgaUO/MvRDFXWPr53f2sx28ECNztUEzuyu5xvuuD1EB/szg9mwJoGA==}
@@ -21791,6 +21799,7 @@ packages:
resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==}
engines: {node: '>=6.0.0'}
dev: false
+ optional: true
/q/1.5.1:
resolution: {integrity: sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=}
@@ -26180,21 +26189,7 @@ packages:
pvtsutils: 1.2.1
tslib: 2.3.1
dev: false
-
- /webcrypto-liner/1.3.1:
- resolution: {integrity: sha512-xCxg3DKpJ8UNsriAQq0KpOpY4xU6lvQFZbs0d/pnGdE8IRzzfAao4Z2qXsSvDRN0OraH3MlvK3j2ocUk23ymFA==}
- dependencies:
- '@peculiar/asn1-schema': 2.0.44
- '@peculiar/json-schema': 1.1.12
- asmcrypto.js: 2.3.2
- asn1js: 2.2.0
- core-js: 3.21.1
- des.js: 1.0.1
- elliptic: 6.5.4
- pvtsutils: 1.2.1
- tslib: 2.3.1
- webcrypto-core: 1.4.0
- dev: false
+ optional: true
/webextension-polyfill-ts/0.22.0:
resolution: {integrity: sha512-3P33ClMwZ/qiAT7UH1ROrkRC1KM78umlnPpRhdC/292UyoTTW9NcjJEqDsv83HbibcTB6qCtpVeuB2q2/oniHQ==}