import { default as Constants } from '../constants'
import { default as Convert } from '../convert'
import { Bip39, Bip44, Blake2b, NanoNaCl } from '../crypto'
-import { default as VaultTimer } from './vault-timer'
-import { default as VaultWorker } from './vault-worker'
+import { VaultTimer } from './vault-timer'
+import { VaultWorker } from './vault-worker'
type Task = {
id: number
const Bip44 = ${Bip44}
const Blake2b = ${Blake2b}
const NanoNaCl = ${NanoNaCl}
- ${VaultTimer}
- ${VaultWorker}
+ const VaultTimer = ${VaultTimer}
+ const VaultWorker = ${VaultWorker}
+ VaultWorker.init()
`
}
static #instances: Vault[] = []
* Cross-platform worker for managing wallet secrets.
*/
export class VaultWorker {
- static locked: boolean = true
- static timeout: VaultTimer = new VaultTimer(() => { }, 0)
+ static locked: boolean
+ static timeout: VaultTimer
static type?: 'BIP-44' | 'BLAKE2b'
static seed?: ArrayBuffer
static mnemonic?: ArrayBuffer
static parentPort?: any
- static {
- NODE: this.parentPort = parentPort
- }
- static {
+ static init (): void {
+ this.locked = true
+ this.timeout = new VaultTimer(() => { }, 0)
+ this.type = undefined
+ this.seed = undefined
+ this.mnemonic = undefined
NODE: this.parentPort = parentPort
const listener = (message: MessageEvent<any>): Promise<void> => {
return this._extractData(message.data)
const entropy = crypto.getRandomValues(new Uint8Array(32))
return Bip39.fromEntropy(entropy)
.then(bip39 => this._load(type, key, keySalt, bip39.phrase, mnemonicSalt))
- .then(record => {
+ .then(({ iv, salt, encrypted }) => {
if (this.seed == null || this.mnemonic == null) {
throw new Error('Failed to generate seed and mnemonic')
}
- return { ...record, seed: this.seed.slice(), mnemonic: this.mnemonic.slice() }
+ return { iv, salt, encrypted, seed: this.seed.slice(), mnemonic: this.mnemonic.slice() }
})
} catch (err) {
console.error(err)
}
}
}
-
-export default `const VaultWorker = ${VaultWorker}`