diff --git a/packages/core/package.json b/packages/core/package.json index c7fd35ab74..ff1508ed70 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -14,11 +14,9 @@ "@wireapp/api-client": "workspace:^", "@wireapp/commons": "workspace:^", "@wireapp/core-crypto": "1.0.0-rc.23", - "@wireapp/cryptobox": "12.8.0", "@wireapp/promise-queue": "workspace:^", "@wireapp/protocol-messaging": "1.44.0", "@wireapp/store-engine": "workspace:*", - "@wireapp/store-engine-dexie": "workspace:^", "axios": "1.6.5", "bazinga64": "workspace:^", "deepmerge-ts": "5.1.0", @@ -31,7 +29,6 @@ "zod": "3.22.4" }, "devDependencies": { - "@faker-js/faker": "^8.0.0", "@swc/core": "^1.3.10", "@swc/jest": "^0.2.23", "@types/jest": "^29.2.0", diff --git a/packages/core/src/Account.test.ts b/packages/core/src/Account.test.ts index a0c86d08f4..8fc50feebc 100644 --- a/packages/core/src/Account.test.ts +++ b/packages/core/src/Account.test.ts @@ -45,9 +45,11 @@ const MOCK_BACKEND = { ws: `wss://${BASE_URL}`, }; +const config = {nbPrekeys: 100, coreCryptoConfig: {wasmFilePath: ''}}; + async function createAccount(): Promise<{account: Account; apiClient: APIClient}> { const apiClient = new APIClient({urls: MOCK_BACKEND}); - const account = new Account(apiClient); + const account = new Account(apiClient, config); await account.initServices({ clientType: ClientType.TEMPORARY, userId: '', @@ -171,7 +173,8 @@ describe('Account', () => { }; describe('"init"', () => { it('initializes the Protocol buffers', async () => { - const account = new Account(); + const apiClient = new APIClient({urls: MOCK_BACKEND}); + const account = new Account(apiClient, config); await account.initServices({clientType: ClientType.TEMPORARY, userId: ''}); @@ -189,7 +192,7 @@ describe('Account', () => { describe('"login"', () => { it('logs in with correct credentials', async () => { const apiClient = new APIClient({urls: MOCK_BACKEND}); - const account = new Account(apiClient); + const account = new Account(apiClient, config); await account.initServices({clientType: ClientType.TEMPORARY, userId: ''}); const {clientType, userId} = await account.login({ @@ -204,7 +207,7 @@ describe('Account', () => { it('does not log in with incorrect credentials', async () => { const apiClient = new APIClient({urls: MOCK_BACKEND}); - const account = new Account(apiClient); + const account = new Account(apiClient, config); let backendError; await account.initServices({clientType: ClientType.TEMPORARY, userId: ''}); diff --git a/packages/core/src/Account.ts b/packages/core/src/Account.ts index 9bb0ca90b9..adc9cb482c 100644 --- a/packages/core/src/Account.ts +++ b/packages/core/src/Account.ts @@ -56,7 +56,7 @@ import {MLSService} from './messagingProtocols/mls'; import {AcmeChallenge, E2EIServiceExternal, User} from './messagingProtocols/mls/E2EIdentityService'; import {CoreCallbacks, CoreCryptoConfig, SecretCrypto} from './messagingProtocols/mls/types'; import {NewClient, ProteusService} from './messagingProtocols/proteus'; -import {CryptoClientType} from './messagingProtocols/proteus/ProteusService/CryptoClient'; +import {buildClient} from './messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper'; import {HandledEventPayload, NotificationService, NotificationSource} from './notification/'; import {createCustomEncryptedStore, createEncryptedStore, EncryptedStore} from './secretStore/encryptedStore'; import {generateSecretKey} from './secretStore/secretKeyGenerator'; @@ -105,10 +105,7 @@ interface AccountOptions { */ nbPrekeys: number; - /** - * Config for MLS and proteus devices. Will fallback to the old cryptobox logic if not provided - */ - coreCryptoConfig?: CoreCryptoConfig; + coreCryptoConfig: CoreCryptoConfig; } type InitOptions = { @@ -129,7 +126,7 @@ type Events = { export class Account extends TypedEventEmitter { private readonly apiClient: APIClient; private readonly logger: logdown.Logger; - private readonly coreCryptoConfig?: CoreCryptoConfig; + private readonly coreCryptoConfig: CoreCryptoConfig; private readonly isMlsEnabled: () => Promise; /** this is the client the consumer is currently using. Will be set as soon as `initClient` is called and will be rest upon logout */ private currentClient?: RegisteredClient; @@ -165,13 +162,13 @@ export class Account extends TypedEventEmitter { */ constructor( apiClient: APIClient = new APIClient(), - private options: AccountOptions = {nbPrekeys: 100}, + private options: AccountOptions, ) { super(); this.apiClient = apiClient; this.backendFeatures = this.apiClient.backendFeatures; this.coreCryptoConfig = options.coreCryptoConfig; - this.isMlsEnabled = async () => !!this.coreCryptoConfig?.mls && (await this.apiClient.supportsMLS()); + this.isMlsEnabled = async () => !!this.coreCryptoConfig.mls && (await this.apiClient.supportsMLS()); this.recurringTaskScheduler = new RecurringTaskScheduler({ get: async key => { const task = await this.db?.get('recurringTasks', key); @@ -226,7 +223,7 @@ export class Account extends TypedEventEmitter { private async getE2EIStatus() { const features = await this.apiClient.api.teams.feature.getAllFeatures(); - const clientCanUseE2EI = this.coreCryptoConfig?.mls?.useE2EI; + const clientCanUseE2EI = this.coreCryptoConfig.mls?.useE2EI; const teamCanUseE2EI = features[FEATURE_KEY.MLSE2EID]?.status === FeatureStatus.ENABLED; return { @@ -415,20 +412,11 @@ export class Account extends TypedEventEmitter { }, }; - const coreCryptoConfig = this.coreCryptoConfig; - if (coreCryptoConfig) { - const {buildClient} = await import('./messagingProtocols/proteus/ProteusService/CryptoClient/CoreCryptoWrapper'); - const client = await buildClient(storeEngine, { - ...baseConfig, - ...coreCryptoConfig, - generateSecretKey: keyId => generateSecretKey({keyId, keySize: 16, secretsDb: encryptedStore}), - }); - return [CryptoClientType.CORE_CRYPTO, client] as const; - } - - const {buildClient} = await import('./messagingProtocols/proteus/ProteusService/CryptoClient/CryptoboxWrapper'); - const client = buildClient(storeEngine, baseConfig); - return [CryptoClientType.CRYPTOBOX, client] as const; + return buildClient(storeEngine, { + ...baseConfig, + ...this.coreCryptoConfig, + generateSecretKey: keyId => generateSecretKey({keyId, keySize: 16, secretsDb: encryptedStore}), + }); } /** @@ -453,7 +441,7 @@ export class Account extends TypedEventEmitter { const accountService = new AccountService(this.apiClient); const assetService = new AssetService(this.apiClient); - const [clientType, cryptoClient] = await this.buildCryptoClient(context, this.storeEngine, this.encryptedDb); + const cryptoClient = await this.buildCryptoClient(context, this.storeEngine, this.encryptedDb); let mlsService: MLSService | undefined; let e2eServiceExternal: E2EIServiceExternal | undefined; @@ -465,7 +453,7 @@ export class Account extends TypedEventEmitter { const clientService = new ClientService(this.apiClient, proteusService, this.storeEngine); - if (clientType === CryptoClientType.CORE_CRYPTO && (await this.isMlsEnabled())) { + if (await this.isMlsEnabled()) { mlsService = new MLSService( this.apiClient, cryptoClient.getNativeClient(), diff --git a/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoClient.types.ts b/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoClient.types.ts index c89fb25383..b26dbde1fd 100644 --- a/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoClient.types.ts +++ b/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoClient.types.ts @@ -21,11 +21,6 @@ import {PreKey} from '@wireapp/api-client/lib/auth'; export type InitialPrekeys = {prekeys: PreKey[]; lastPrekey: PreKey}; -export enum CryptoClientType { - CORE_CRYPTO, - CRYPTOBOX, -} - export interface CryptoClient { getNativeClient(): T; encrypt(sessions: string[], plainText: Uint8Array): Promise>; diff --git a/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoboxWrapper.ts b/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoboxWrapper.ts deleted file mode 100644 index 7ae28a922e..0000000000 --- a/packages/core/src/messagingProtocols/proteus/ProteusService/CryptoClient/CryptoboxWrapper.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Wire - * Copyright (C) 2023 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -import {PreKey} from '@wireapp/api-client/lib/auth'; - -import {Cryptobox} from '@wireapp/cryptobox'; -import {keys as ProteusKeys} from '@wireapp/proteus'; -import {CRUDEngine} from '@wireapp/store-engine'; - -import {CryptoClient} from './CryptoClient.types'; - -type Config = { - onNewPrekeys: (prekeys: PreKey[]) => void; -}; - -export function buildClient(storeEngine: CRUDEngine, config: Config & {nbPrekeys: number}) { - const cryptobox = new Cryptobox(storeEngine, config.nbPrekeys); - return new CryptoboxWrapper(cryptobox, config); -} - -export class CryptoboxWrapper implements CryptoClient { - constructor( - private readonly cryptobox: Cryptobox, - config: Config, - ) { - this.cryptobox.on(Cryptobox.TOPIC.NEW_PREKEYS, prekeys => { - const serializedPreKeys = prekeys.map(prekey => this.cryptobox.serialize_prekey(prekey)); - config.onNewPrekeys(serializedPreKeys); - }); - } - - getNativeClient() { - return this.cryptobox; - } - - async encrypt(sessions: string[], plainText: Uint8Array) { - const encryptedPayloads: [string, Uint8Array][] = []; - for (const sessionId of sessions) { - const encrypted = await this.cryptobox.encrypt(sessionId, plainText); - encryptedPayloads.push([sessionId, new Uint8Array(encrypted)]); - } - return new Map(encryptedPayloads); - } - - decrypt(sessionId: string, message: Uint8Array) { - return this.cryptobox.decrypt(sessionId, message.buffer); - } - - async init() { - await this.cryptobox.load(); - } - - async create(_nbPrekeys: number, entropy?: Uint8Array) { - const initialPrekeys = await this.cryptobox.create(entropy); - const prekeys = initialPrekeys - .map(preKey => { - const preKeyJson = this.cryptobox.serialize_prekey(preKey); - if (preKeyJson.id !== ProteusKeys.PreKey.MAX_PREKEY_ID) { - return preKeyJson; - } - return {id: -1, key: ''}; - }) - .filter(serializedPreKey => serializedPreKey.key); - - return { - prekeys, - lastPrekey: this.cryptobox.serialize_prekey(this.cryptobox.lastResortPreKey!), - }; - } - - async getFingerprint() { - return this.cryptobox.getIdentity().public_key.fingerprint(); - } - - async getRemoteFingerprint(sessionId: string) { - const session = await this.cryptobox.session_load(sessionId); - return session.fingerprint_remote(); - } - - sessionFromMessage(sessionId: string, message: Uint8Array) { - return this.decrypt(sessionId, message); - } - - async consumePrekey() { - // Cryptobox is keeping track of consumed prekeys internally - } - - async sessionFromPrekey(sessionId: string, prekey: Uint8Array) { - return void (await this.cryptobox.session_from_prekey(sessionId, prekey.buffer)); - } - - async sessionExists(sessionId: string) { - try { - return !!(await this.cryptobox.session_load(sessionId)); - } catch { - return false; - } - } - - async saveSession() { - // Cryptobox saves sessions automatically - } - - async deleteSession(sessionId: string) { - await this.cryptobox.session_delete(sessionId); - } - - async newPrekey() { - // CryptoBox is generating prekeys internally - return {id: 0, key: ''}; - } - - async debugBreakSession(sessionId: string) { - const session = await this.cryptobox.session_load(sessionId); - session.session.session_states = {}; - - this.cryptobox['cachedSessions'].set(sessionId, session); - } - - async debugResetIdentity() { - await this.cryptobox.create(); - } - - async wipe() {} -} diff --git a/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.test.ts b/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.test.ts index e62bcf7e49..fd3fe7c02a 100644 --- a/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.test.ts +++ b/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.test.ts @@ -31,12 +31,4 @@ describe('generateDecryptionError', () => { expect(error.message).toBe(`Decryption error from user1 (client1) (${coreCryptoError.message})`); expect(error.code).toBe(coreCryptoError.proteusErrorCode); }); - - it.each([Math.floor(Math.random() * 100), 0])('handles cryptobox error', code => { - const coreCryptoError = {code, message: 'decryption error'}; - const error = generateDecryptionError(basePayload, coreCryptoError); - expect(error).toBeInstanceOf(DecryptionError); - expect(error.message).toBe(`Decryption error from user1 (client1) (${coreCryptoError.message})`); - expect(error.code).toBe(coreCryptoError.code); - }); }); diff --git a/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.ts b/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.ts index 0a6356dda3..e0b65830ef 100644 --- a/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.ts +++ b/packages/core/src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.ts @@ -31,24 +31,16 @@ export const ProteusErrors = { Unknown: 999, } as const; -type CryptoboxError = Error & {code: number}; - const isCoreCryptoError = (error: any): error is CoreCryptoError => { return 'proteusErrorCode' in error; }; -const isCryptoboxError = (error: any): error is CryptoboxError => { - return 'code' in error; -}; type SenderInfo = {clientId: string; userId: QualifiedId}; export const generateDecryptionError = (senderInfo: SenderInfo, error: any): DecryptionError => { const {clientId, userId} = senderInfo; const sender = `${userId.id} (${clientId})`; - const coreCryptoCode = isCoreCryptoError(error) ? error.proteusErrorCode : null; - const cryptoboxCode = isCryptoboxError(error) ? error.code : null; - const code = coreCryptoCode ?? cryptoboxCode ?? ProteusErrors.Unknown; - + const code = isCoreCryptoError(error) ? error.proteusErrorCode : ProteusErrors.Unknown; const message = `Decryption error from ${sender} (${error.message})`; return new DecryptionError(message, code); diff --git a/packages/core/src/test/AccountHelper.ts b/packages/core/src/test/AccountHelper.ts deleted file mode 100644 index 0e6976b66d..0000000000 --- a/packages/core/src/test/AccountHelper.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Wire - * Copyright (C) 2022 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -const {ClientType} = require('@wireapp/api-client/lib/client/'); - -const {APIClient} = require('@wireapp/api-client'); -const {Account} = require('@wireapp/core'); - -const StoreHelper = require('./StoreHelper'); - -module.exports = { - getAccount: async function (email, password) { - const login = { - clientType: ClientType.TEMPORARY, - email, - password, - }; - const backend = APIClient.BACKEND.STAGING; - const engine = await StoreHelper.createMemoryEngine(email); - const apiClient = new APIClient({store: engine, urls: backend}); - const account = new Account(apiClient); - await account.login(login); - await account.listen(); - return account; - }, -}; diff --git a/packages/core/src/test/PayloadHelper.ts b/packages/core/src/test/PayloadHelper.ts index 8ac59e0b63..eb88523711 100644 --- a/packages/core/src/test/PayloadHelper.ts +++ b/packages/core/src/test/PayloadHelper.ts @@ -17,44 +17,8 @@ * */ -import {faker} from '@faker-js/faker'; import {genV4} from 'uuidjs'; export function getUUID(): string { return genV4().toString(); } - -export function getUrlParameter(url: string, parameter: string): string | string[] | null { - if (typeof window === 'undefined') { - return require('url').parse(url, true).query[parameter]; - } - return new URL(url).searchParams.get(parameter); -} - -export function mockUserPayload(userId: string): Object { - return { - accent_id: 3, - assets: [], - id: userId, - locale: 'en', - name: faker.name.fullName(), - picture: [ - { - content_length: 263345, - content_type: 'image/jpeg', - data: null, - id: getUUID(), - info: { - correlation_id: getUUID(), - height: 960, - nonce: getUUID(), - original_height: 960, - original_width: 1280, - public: true, - tag: 'medium', - width: 1280, - }, - }, - ], - }; -} diff --git a/packages/core/src/test/StoreHelper.ts b/packages/core/src/test/StoreHelper.ts deleted file mode 100644 index e6c56d433f..0000000000 --- a/packages/core/src/test/StoreHelper.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Wire - * Copyright (C) 2022 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - * - */ - -const {MemoryEngine} = require('@wireapp/store-engine'); - -module.exports = { - createMemoryEngine: async (storeName = `temp-${Date.now()}`) => { - const engine = new MemoryEngine(); - await engine.init(storeName); - return engine; - }, -}; diff --git a/yarn.lock b/yarn.lock index 95dff181f8..0829a6eb14 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2277,13 +2277,6 @@ __metadata: languageName: node linkType: hard -"@faker-js/faker@npm:^8.0.0": - version: 8.3.1 - resolution: "@faker-js/faker@npm:8.3.1" - checksum: 33efe912411fe61f43b313784a9ce041dfbfb54bc3b2f7b923a547f97beb6b3763534f9c37af25ab330982e6b36e6f7b040dfb35c115deb8c789d8ada413bd94 - languageName: node - linkType: hard - "@floating-ui/core@npm:^1.0.2": version: 1.0.2 resolution: "@floating-ui/core@npm:1.0.2" @@ -4180,15 +4173,6 @@ __metadata: languageName: node linkType: hard -"@types/libsodium-wrappers-sumo@npm:0.7.5": - version: 0.7.5 - resolution: "@types/libsodium-wrappers-sumo@npm:0.7.5" - dependencies: - "@types/libsodium-wrappers": "*" - checksum: 27846e49cd54556c05011ff475cc6564ce8dde8f9a02a542740e3ebaab7de21ed2dfb4afdc182510d7058d3475f748bab0aa4a41178cd105b9f8618a00f8ef3f - languageName: node - linkType: hard - "@types/libsodium-wrappers-sumo@npm:0.7.8": version: 0.7.8 resolution: "@types/libsodium-wrappers-sumo@npm:0.7.8" @@ -4277,13 +4261,6 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:~14": - version: 14.18.63 - resolution: "@types/node@npm:14.18.63" - checksum: be909061a54931778c71c49dc562586c32f909c4b6197e3d71e6dac726d8bd9fccb9f599c0df99f52742b68153712b5097c0f00cac4e279fa894b0ea6719a8fd - languageName: node - linkType: hard - "@types/normalize-package-data@npm:^2.4.1": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -5114,13 +5091,6 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/cbor@npm:4.7.3": - version: 4.7.3 - resolution: "@wireapp/cbor@npm:4.7.3" - checksum: 4ea1bf302e08b342b9b0160835862984653d208a902c3e1071e32644d8ea78263a88fe3e2306931e745495e6e816d3b741d0bf10f2290932692f99bb1b28c18b - languageName: node - linkType: hard - "@wireapp/certificate-check@workspace:packages/certificate-check": version: 0.0.0-use.local resolution: "@wireapp/certificate-check@workspace:packages/certificate-check" @@ -5195,7 +5165,6 @@ __metadata: version: 0.0.0-use.local resolution: "@wireapp/core@workspace:packages/core" dependencies: - "@faker-js/faker": ^8.0.0 "@swc/core": ^1.3.10 "@swc/jest": ^0.2.23 "@types/jest": ^29.2.0 @@ -5205,11 +5174,9 @@ __metadata: "@wireapp/api-client": "workspace:^" "@wireapp/commons": "workspace:^" "@wireapp/core-crypto": 1.0.0-rc.23 - "@wireapp/cryptobox": 12.8.0 "@wireapp/promise-queue": "workspace:^" "@wireapp/protocol-messaging": 1.44.0 "@wireapp/store-engine": "workspace:*" - "@wireapp/store-engine-dexie": "workspace:^" axios: 1.6.5 bazinga64: "workspace:^" commander: 11.1.0 @@ -5232,20 +5199,6 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/cryptobox@npm:12.8.0": - version: 12.8.0 - resolution: "@wireapp/cryptobox@npm:12.8.0" - dependencies: - "@wireapp/lru-cache": 3.8.1 - "@wireapp/priority-queue": 1.6.38 - "@wireapp/proteus": 9.13.0 - "@wireapp/store-engine": 4.9.8 - bazinga64: 5.10.0 - buffer: 6.0.3 - checksum: 534fd44a8c32ddfab668f09a2682c4f72ccf6a0754c28c81c0218fd4ed8a4933eb1b7898260bbb848ade6bbacd9864bf9b6dde4295a78942f489e8ad0eadaf06 - languageName: node - linkType: hard - "@wireapp/eslint-config@workspace:^, @wireapp/eslint-config@workspace:packages/eslint-config": version: 0.0.0-use.local resolution: "@wireapp/eslint-config@workspace:packages/eslint-config" @@ -5300,13 +5253,6 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/lru-cache@npm:3.8.1": - version: 3.8.1 - resolution: "@wireapp/lru-cache@npm:3.8.1" - checksum: 901ae35ac6a2370ef52eeea08217f23ff7cc1db3f5e82199324d88dc8128d68e01f6b06928df9eb2ae03a6cc97587c2f501cec6aa61665a60a7d8cf415f1b21a - languageName: node - linkType: hard - "@wireapp/prettier-config@workspace:packages/prettier-config": version: 0.0.0-use.local resolution: "@wireapp/prettier-config@workspace:packages/prettier-config" @@ -5315,15 +5261,6 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/priority-queue@npm:1.6.38": - version: 1.6.38 - resolution: "@wireapp/priority-queue@npm:1.6.38" - dependencies: - "@types/node": ~14 - checksum: cefa5c99a3b5640fb2b0a77392e13e8cbc816f05e1c9c859f96a4d1c93bbcc29ae56afeed94a09f5dce664b7c0243eb8a1d6075ef1fb6329ee4775515e843628 - languageName: node - linkType: hard - "@wireapp/priority-queue@workspace:^, @wireapp/priority-queue@workspace:packages/priority-queue": version: 0.0.0-use.local resolution: "@wireapp/priority-queue@workspace:packages/priority-queue" @@ -5355,18 +5292,6 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/proteus@npm:9.13.0": - version: 9.13.0 - resolution: "@wireapp/proteus@npm:9.13.0" - dependencies: - "@types/libsodium-wrappers-sumo": 0.7.5 - "@types/node": ~14 - "@wireapp/cbor": 4.7.3 - libsodium-wrappers-sumo: 0.7.9 - checksum: 46cf49b00ebe66caf67ef38dff5a6ca8ba238fa72a73eb6bda6812da370df1c7a2e20a8d47d8ac01eea90d1a4fc1c1c43119261e6a84c0eabdfc5b6bd227cc14 - languageName: node - linkType: hard - "@wireapp/protocol-messaging@npm:1.44.0": version: 1.44.0 resolution: "@wireapp/protocol-messaging@npm:1.44.0" @@ -5431,7 +5356,7 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/store-engine-dexie@workspace:^, @wireapp/store-engine-dexie@workspace:packages/store-engine-dexie": +"@wireapp/store-engine-dexie@workspace:packages/store-engine-dexie": version: 0.0.0-use.local resolution: "@wireapp/store-engine-dexie@workspace:packages/store-engine-dexie" dependencies: @@ -5475,15 +5400,6 @@ __metadata: languageName: unknown linkType: soft -"@wireapp/store-engine@npm:4.9.8": - version: 4.9.8 - resolution: "@wireapp/store-engine@npm:4.9.8" - dependencies: - "@types/node": ~14 - checksum: bfe5e4522127eb0edcceabdc5c8e2dafc33a8dfa2a984364e1057e5a4784ea1a0e43c1ad760f9d49f40ab9e72db33b2fa24a073e76c53417b14f291c69f0906e - languageName: node - linkType: hard - "@wireapp/store-engine@workspace:*, @wireapp/store-engine@workspace:^, @wireapp/store-engine@workspace:packages/store-engine": version: 0.0.0-use.local resolution: "@wireapp/store-engine@workspace:packages/store-engine" @@ -6495,13 +6411,6 @@ __metadata: languageName: node linkType: hard -"bazinga64@npm:5.10.0": - version: 5.10.0 - resolution: "bazinga64@npm:5.10.0" - checksum: 26444dfd5e6abdb62ab7b6fd7fb7155651e5fd0884a30008b33693593c5838b4f5d213101751c55a6646e146d802f0783aa2b92d41f2165f1cd30568c6f6ac75 - languageName: node - linkType: hard - "bazinga64@workspace:^, bazinga64@workspace:packages/bazinga64": version: 0.0.0-use.local resolution: "bazinga64@workspace:packages/bazinga64" @@ -6794,16 +6703,6 @@ __metadata: languageName: node linkType: hard -"buffer@npm:6.0.3, buffer@npm:^6.0.3": - version: 6.0.3 - resolution: "buffer@npm:6.0.3" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.2.1 - checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 - languageName: node - linkType: hard - "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -6814,6 +6713,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + "builtin-modules@npm:^3.3.0": version: 3.3.0 resolution: "builtin-modules@npm:3.3.0" @@ -13432,13 +13341,6 @@ __metadata: languageName: node linkType: hard -"libsodium-sumo@npm:^0.7.0": - version: 0.7.11 - resolution: "libsodium-sumo@npm:0.7.11" - checksum: 9efac902a05002e1caca1c1df3a7cd838ac370588cfa31107d6e787cb5a181f4ca46c7961e3136943c8b07b1d543c0283b91e08a141f9b55a74f10808c3017ef - languageName: node - linkType: hard - "libsodium-sumo@npm:^0.7.13": version: 0.7.13 resolution: "libsodium-sumo@npm:0.7.13" @@ -13455,15 +13357,6 @@ __metadata: languageName: node linkType: hard -"libsodium-wrappers-sumo@npm:0.7.9": - version: 0.7.9 - resolution: "libsodium-wrappers-sumo@npm:0.7.9" - dependencies: - libsodium-sumo: ^0.7.0 - checksum: 0b2af1f23455e1b3ecc2f721278e8b41b027e9f748f2675285e9771eeb2de062cd6b51688bb52ece14a53b4f5a51019972d9ceac1889c0381ef076a316201627 - languageName: node - linkType: hard - "license-checker@npm:25.0.1": version: 25.0.1 resolution: "license-checker@npm:25.0.1"