@wireapp/core 17.23.0 → 17.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/package.json +2 -2
  3. package/src/main/Account.d.ts +10 -1
  4. package/src/main/Account.js +8 -2
  5. package/src/main/Account.js.map +1 -1
  6. package/src/main/Account.ts +15 -2
  7. package/src/main/broadcast/BroadcastService.js +3 -4
  8. package/src/main/broadcast/BroadcastService.js.map +1 -1
  9. package/src/main/broadcast/BroadcastService.ts +3 -5
  10. package/src/main/conversation/ConversationService.d.ts +7 -8
  11. package/src/main/conversation/ConversationService.js +32 -61
  12. package/src/main/conversation/ConversationService.js.map +1 -1
  13. package/src/main/conversation/ConversationService.test.node.js +17 -38
  14. package/src/main/conversation/ConversationService.test.node.js.map +1 -1
  15. package/src/main/conversation/ConversationService.test.node.ts +20 -50
  16. package/src/main/conversation/ConversationService.ts +40 -119
  17. package/src/main/conversation/message/MessageService.d.ts +42 -12
  18. package/src/main/conversation/message/MessageService.js +146 -281
  19. package/src/main/conversation/message/MessageService.js.map +1 -1
  20. package/src/main/conversation/message/MessageService.test.node.js +100 -6
  21. package/src/main/conversation/message/MessageService.test.node.js.map +1 -1
  22. package/src/main/conversation/message/MessageService.test.node.ts +153 -29
  23. package/src/main/conversation/message/MessageService.ts +208 -360
  24. package/src/main/conversation/message/UserClientsUtil.d.ts +22 -0
  25. package/src/main/conversation/message/UserClientsUtil.js +38 -0
  26. package/src/main/conversation/message/UserClientsUtil.js.map +1 -0
  27. package/src/main/conversation/message/UserClientsUtil.ts +44 -0
  28. package/src/main/conversation/message/UserClientsUtils.test.node.d.ts +1 -0
  29. package/src/main/conversation/message/UserClientsUtils.test.node.js +42 -0
  30. package/src/main/conversation/message/UserClientsUtils.test.node.js.map +1 -0
  31. package/src/main/conversation/message/UserClientsUtils.test.node.ts +44 -0
  32. package/src/main/cryptography/CryptographyService.d.ts +6 -1
  33. package/src/main/cryptography/CryptographyService.js +14 -2
  34. package/src/main/cryptography/CryptographyService.js.map +1 -1
  35. package/src/main/cryptography/CryptographyService.test.node.js +2 -2
  36. package/src/main/cryptography/CryptographyService.test.node.js.map +1 -1
  37. package/src/main/cryptography/CryptographyService.test.node.ts +5 -4
  38. package/src/main/cryptography/CryptographyService.ts +22 -4
  39. package/src/main/util/TypePredicateUtil.js +3 -9
  40. package/src/main/util/TypePredicateUtil.js.map +1 -1
  41. package/src/main/util/TypePredicateUtil.ts +3 -9
@@ -0,0 +1,22 @@
1
+ import { QualifiedId } from '@wireapp/api-client/src/user';
2
+ declare type UserClientsContainer<T> = {
3
+ [userId: string]: T;
4
+ };
5
+ declare type QualifiedUserClientsContainer<T> = {
6
+ [domain: string]: UserClientsContainer<T>;
7
+ };
8
+ export declare function flattenUserClients<T>(userClients: UserClientsContainer<T>, domain?: string): {
9
+ data: T;
10
+ userId: QualifiedId;
11
+ }[];
12
+ /**
13
+ * Will flatten a container of users=>clients infos to an array
14
+ *
15
+ * @param userClients The UserClients (qualified or not) to flatten
16
+ * @return An array containing the qualified user Ids and the clients info
17
+ */
18
+ export declare function flattenQualifiedUserClients<T = unknown>(userClients: QualifiedUserClientsContainer<T>): {
19
+ data: T;
20
+ userId: QualifiedId;
21
+ }[];
22
+ export {};
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /*
3
+ * Wire
4
+ * Copyright (C) 2021 Wire Swiss GmbH
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation, either version 3 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program. If not, see http://www.gnu.org/licenses/.
18
+ *
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.flattenQualifiedUserClients = exports.flattenUserClients = void 0;
22
+ function flattenUserClients(userClients, domain = '') {
23
+ return Object.entries(userClients).map(([id, data]) => ({ data, userId: { domain, id } }));
24
+ }
25
+ exports.flattenUserClients = flattenUserClients;
26
+ /**
27
+ * Will flatten a container of users=>clients infos to an array
28
+ *
29
+ * @param userClients The UserClients (qualified or not) to flatten
30
+ * @return An array containing the qualified user Ids and the clients info
31
+ */
32
+ function flattenQualifiedUserClients(userClients) {
33
+ return Object.entries(userClients).reduce((ids, [domain, userClients]) => {
34
+ return [...ids, ...flattenUserClients(userClients, domain)];
35
+ }, []);
36
+ }
37
+ exports.flattenQualifiedUserClients = flattenQualifiedUserClients;
38
+ //# sourceMappingURL=UserClientsUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserClientsUtil.js","sourceRoot":"","sources":["UserClientsUtil.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAOH,SAAgB,kBAAkB,CAChC,WAAoC,EACpC,SAAiB,EAAE;IAEnB,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,EAAE,EAAC,EAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AALD,gDAKC;AAED;;;;;GAKG;AACH,SAAgB,2BAA2B,CACzC,WAA6C;IAE7C,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE;QACvE,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC,EAAE,EAAsC,CAAC,CAAC;AAC7C,CAAC;AAND,kEAMC"}
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Wire
3
+ * Copyright (C) 2021 Wire Swiss GmbH
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see http://www.gnu.org/licenses/.
17
+ *
18
+ */
19
+
20
+ import {QualifiedId} from '@wireapp/api-client/src/user';
21
+
22
+ type UserClientsContainer<T> = {[userId: string]: T};
23
+ type QualifiedUserClientsContainer<T> = {[domain: string]: UserClientsContainer<T>};
24
+
25
+ export function flattenUserClients<T>(
26
+ userClients: UserClientsContainer<T>,
27
+ domain: string = '',
28
+ ): {data: T; userId: QualifiedId}[] {
29
+ return Object.entries(userClients).map(([id, data]) => ({data, userId: {domain, id}}));
30
+ }
31
+
32
+ /**
33
+ * Will flatten a container of users=>clients infos to an array
34
+ *
35
+ * @param userClients The UserClients (qualified or not) to flatten
36
+ * @return An array containing the qualified user Ids and the clients info
37
+ */
38
+ export function flattenQualifiedUserClients<T = unknown>(
39
+ userClients: QualifiedUserClientsContainer<T>,
40
+ ): {data: T; userId: QualifiedId}[] {
41
+ return Object.entries(userClients).reduce((ids, [domain, userClients]) => {
42
+ return [...ids, ...flattenUserClients(userClients, domain)];
43
+ }, [] as {data: T; userId: QualifiedId}[]);
44
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /*
3
+ * Wire
4
+ * Copyright (C) 2021 Wire Swiss GmbH
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU General Public License as published by
8
+ * the Free Software Foundation, either version 3 of the License, or
9
+ * (at your option) any later version.
10
+ *
11
+ * This program is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ * GNU General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU General Public License
17
+ * along with this program. If not, see http://www.gnu.org/licenses/.
18
+ *
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const UserClientsUtil_1 = require("./UserClientsUtil");
22
+ describe('userClientsUtils', () => {
23
+ it('extracts user and data info from qualified payload', () => {
24
+ const payload = { domain1: { user1: ['client1'], user2: ['client11'] }, domain2: { user3: ['client1', 'client2'] } };
25
+ const expected = [
26
+ { data: ['client1'], userId: { domain: 'domain1', id: 'user1' } },
27
+ { data: ['client11'], userId: { domain: 'domain1', id: 'user2' } },
28
+ { data: ['client1', 'client2'], userId: { domain: 'domain2', id: 'user3' } },
29
+ ];
30
+ expect((0, UserClientsUtil_1.flattenQualifiedUserClients)(payload)).toEqual(expected);
31
+ });
32
+ it('extracts user and data info from non-qualified payload', () => {
33
+ const payload = { user1: ['client1'], user2: ['client11'], user3: ['client1', 'client2'] };
34
+ const expected = [
35
+ { data: ['client1'], userId: { domain: '', id: 'user1' } },
36
+ { data: ['client11'], userId: { domain: '', id: 'user2' } },
37
+ { data: ['client1', 'client2'], userId: { domain: '', id: 'user3' } },
38
+ ];
39
+ expect((0, UserClientsUtil_1.flattenUserClients)(payload)).toEqual(expected);
40
+ });
41
+ });
42
+ //# sourceMappingURL=UserClientsUtils.test.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UserClientsUtils.test.node.js","sourceRoot":"","sources":["UserClientsUtils.test.node.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAEH,uDAAkF;AAElF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,OAAO,GAAG,EAAC,OAAO,EAAE,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAC,EAAE,OAAO,EAAE,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAC,EAAC,CAAC;QAC/G,MAAM,QAAQ,GAAG;YACf,EAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAC,EAAC;YAC7D,EAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAC,EAAC;YAC9D,EAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAC,EAAC;SACzE,CAAC;QAEF,MAAM,CAAC,IAAA,6CAA2B,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAC,CAAC;QACzF,MAAM,QAAQ,GAAG;YACf,EAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAC,EAAC;YACtD,EAAC,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAC,EAAC;YACvD,EAAC,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,EAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAC,EAAC;SAClE,CAAC;QAEF,MAAM,CAAC,IAAA,oCAAkB,EAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Wire
3
+ * Copyright (C) 2021 Wire Swiss GmbH
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program. If not, see http://www.gnu.org/licenses/.
17
+ *
18
+ */
19
+
20
+ import {flattenQualifiedUserClients, flattenUserClients} from './UserClientsUtil';
21
+
22
+ describe('userClientsUtils', () => {
23
+ it('extracts user and data info from qualified payload', () => {
24
+ const payload = {domain1: {user1: ['client1'], user2: ['client11']}, domain2: {user3: ['client1', 'client2']}};
25
+ const expected = [
26
+ {data: ['client1'], userId: {domain: 'domain1', id: 'user1'}},
27
+ {data: ['client11'], userId: {domain: 'domain1', id: 'user2'}},
28
+ {data: ['client1', 'client2'], userId: {domain: 'domain2', id: 'user3'}},
29
+ ];
30
+
31
+ expect(flattenQualifiedUserClients(payload)).toEqual(expected);
32
+ });
33
+
34
+ it('extracts user and data info from non-qualified payload', () => {
35
+ const payload = {user1: ['client1'], user2: ['client11'], user3: ['client1', 'client2']};
36
+ const expected = [
37
+ {data: ['client1'], userId: {domain: '', id: 'user1'}},
38
+ {data: ['client11'], userId: {domain: '', id: 'user2'}},
39
+ {data: ['client1', 'client2'], userId: {domain: '', id: 'user3'}},
40
+ ];
41
+
42
+ expect(flattenUserClients(payload)).toEqual(expected);
43
+ });
44
+ });
@@ -13,13 +13,17 @@ export interface MetaClient extends RegisteredClient {
13
13
  primary_key: string;
14
14
  };
15
15
  }
16
+ declare type CryptographyServiceOptions = {
17
+ federationDomain?: string;
18
+ };
16
19
  export declare class CryptographyService {
17
20
  readonly apiClient: APIClient;
18
21
  private readonly storeEngine;
22
+ private readonly options?;
19
23
  private readonly logger;
20
24
  cryptobox: Cryptobox;
21
25
  private readonly database;
22
- constructor(apiClient: APIClient, storeEngine: CRUDEngine);
26
+ constructor(apiClient: APIClient, storeEngine: CRUDEngine, options?: CryptographyServiceOptions | undefined);
23
27
  static constructSessionId(userId: string, clientId: string, domain: string | null): string;
24
28
  static convertArrayRecipientsToBase64(recipients: OTRRecipients<Uint8Array>): OTRRecipients<string>;
25
29
  static convertBase64RecipientsToArray(recipients: OTRRecipients<string>): OTRRecipients<Uint8Array>;
@@ -34,3 +38,4 @@ export declare class CryptographyService {
34
38
  resetSession(sessionId: string): Promise<void>;
35
39
  decodeGenericMessage(otrMessage: ConversationOtrMessageAddEvent, source: PayloadBundleSource): Promise<PayloadBundle>;
36
40
  }
41
+ export {};
@@ -32,15 +32,17 @@ const util_1 = require("../util");
32
32
  const CryptographyDatabaseRepository_1 = require("./CryptographyDatabaseRepository");
33
33
  const GenericMessageMapper_1 = require("./GenericMessageMapper");
34
34
  class CryptographyService {
35
- constructor(apiClient, storeEngine) {
35
+ constructor(apiClient, storeEngine, options) {
36
36
  this.apiClient = apiClient;
37
37
  this.storeEngine = storeEngine;
38
+ this.options = options;
38
39
  this.cryptobox = new cryptobox_1.Cryptobox(this.storeEngine);
39
40
  this.database = new CryptographyDatabaseRepository_1.CryptographyDatabaseRepository(this.storeEngine);
40
41
  this.logger = (0, logdown_1.default)('@wireapp/core/cryptography/CryptographyService', {
41
42
  logger: console,
42
43
  markdown: false,
43
44
  });
45
+ this.options = options;
44
46
  }
45
47
  static constructSessionId(userId, clientId, domain) {
46
48
  const baseId = `${userId}@${clientId}`;
@@ -105,6 +107,9 @@ class CryptographyService {
105
107
  }
106
108
  const payloads = await Promise.all(bundles);
107
109
  return payloads.reduce((recipients, payload) => {
110
+ if (!payload) {
111
+ return recipients;
112
+ }
108
113
  const { encryptedPayload, sessionId } = payload;
109
114
  const { userId, clientId } = CryptographyService.dismantleSessionId(sessionId);
110
115
  recipients[userId] || (recipients[userId] = {});
@@ -123,6 +128,11 @@ class CryptographyService {
123
128
  encryptedPayload = new Uint8Array(payloadAsArrayBuffer);
124
129
  }
125
130
  catch (error) {
131
+ const notFoundErrorCode = 2;
132
+ if (error.code === notFoundErrorCode) {
133
+ // If the session is not in the database, we just return undefined. Later on there will be a mismatch and the session will be created
134
+ return undefined;
135
+ }
126
136
  this.logger.error(`Could not encrypt payload: ${error.message}`);
127
137
  encryptedPayload = new Uint8Array(Buffer.from('💣', 'utf-8'));
128
138
  }
@@ -139,8 +149,10 @@ class CryptographyService {
139
149
  this.logger.log(`Deleted session ID "${sessionId}".`);
140
150
  }
141
151
  async decodeGenericMessage(otrMessage, source) {
152
+ var _a;
142
153
  const { from, qualified_from, data: { sender, text: cipherText }, } = otrMessage;
143
- const sessionId = CryptographyService.constructSessionId(from, sender, (qualified_from === null || qualified_from === void 0 ? void 0 : qualified_from.domain) || null);
154
+ const domain = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.federationDomain) ? (qualified_from === null || qualified_from === void 0 ? void 0 : qualified_from.domain) || this.options.federationDomain : null;
155
+ const sessionId = CryptographyService.constructSessionId(from, sender, domain);
144
156
  const decryptedMessage = await this.decrypt(sessionId, cipherText);
145
157
  const genericMessage = protocol_messaging_1.GenericMessage.decode(decryptedMessage);
146
158
  if (genericMessage.content === conversation_1.GenericMessageType.EPHEMERAL) {
@@ -1 +1 @@
1
- {"version":3,"file":"CryptographyService.js","sourceRoot":"","sources":["CryptographyService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptographyService.js","sourceRoot":"","sources":["CryptographyService.ts"],"names":[],"mappings":"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"}
@@ -212,14 +212,14 @@ describe('CryptographyService', () => {
212
212
  const sessionWithBobId = 'bob-user-id@bob-client-id';
213
213
  const text = new Uint8Array([72, 101, 108, 108, 111, 32, 66, 111, 98, 33]); // "Hello Bob!"
214
214
  const encodedPreKey = 'pQABAQACoQBYIHOFFWPnWlr4sulxUWYoP0A6rsJiBO/Ec3Y914t67CIAA6EAoQBYIPFH5CK/a0YwKEx4n/+U/IPRN+mJXVv++MCs5Z4dLmz4BPY=';
215
- const { sessionId, encryptedPayload } = await cryptographyService['encryptPayloadForSession'](sessionWithBobId, text, encodedPreKey);
215
+ const { sessionId, encryptedPayload } = (await cryptographyService['encryptPayloadForSession'](sessionWithBobId, text, encodedPreKey));
216
216
  expect(Buffer.from(encryptedPayload).toString('utf8')).not.toBe('💣');
217
217
  expect(sessionId).toBe(sessionWithBobId);
218
218
  });
219
219
  it('encodes invalid text as Bomb Emoji.', async () => {
220
220
  const sessionWithBobId = 'bob-user-id@bob-client-id';
221
221
  const encodedPreKey = 'pQABAQACoQBYIHOFFWPnWlr4sulxUWYoP0A6rsJiBO/Ec3Y914t67CIAA6EAoQBYIPFH5CK/a0YwKEx4n/+U/IPRN+mJXVv++MCs5Z4dLmz4BPY=';
222
- const { sessionId, encryptedPayload } = await cryptographyService['encryptPayloadForSession'](sessionWithBobId, undefined, encodedPreKey);
222
+ const { sessionId, encryptedPayload } = (await cryptographyService['encryptPayloadForSession'](sessionWithBobId, undefined, encodedPreKey));
223
223
  expect(Buffer.from(encryptedPayload).toString()).toBe('💣');
224
224
  expect(sessionId).toBe(sessionWithBobId);
225
225
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CryptographyService.test.node.js","sourceRoot":"","sources":["CryptographyService.test.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CryptographyService.test.node.js","sourceRoot":"","sources":["CryptographyService.test.node.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;;;;;;;;;;;;;;;;;;;AAEH,oDAA8C;AAC9C,kDAA6C;AAC7C,0DAA4C;AAC5C,wDAA+D;AAC/D,qDAAuC;AACvC,+CAAiC;AACjC,+BAA+B;AAG/B,+EAAiE;AACjE,qEAAoE;AACpE,+DAA0D;AAE1D,KAAK,UAAU,YAAY,CAAC,SAAiB;IAC3C,MAAM,MAAM,GAAG,IAAI,2BAAY,EAAE,CAAC;IAClC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,mBAAwC,CAAC;IAC7C,IAAI,qBAA0C,CAAC;IAC/C,IAAI,GAAc,CAAC;IAEnB,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,IAAI,sBAAS,EAAE,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC7D,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,GAAG,GAAG,IAAI,qBAAS,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1F,MAAM,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YACpC,MAAM,MAAM,GAAG,sCAAsC,CAAC;YACtD,MAAM,MAAM,GAAG,yCAAmB,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC9E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC9E,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YACpC,MAAM,MAAM,GAAG,sCAAsC,CAAC;YACtD,MAAM,MAAM,GAAG,yCAAmB,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1F,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,cAAc,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAE,CAAC,UAAU,CAAC;YAC7E,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;YAChG,MAAM,IAAI,GAAG,cAAc,CAAC;YAC5B,MAAM,sBAAsB,GAAG,MAAM,GAAG,CAAC,OAAO,CAC9C,+BAA+B,EAC/B,IAAI,EACJ,kBAAkB,CAAC,SAAS,EAAE,CAC/B,CAAC;YACF,MAAM,oBAAoB,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;YACzF,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,2BAA2B,EAAE,oBAAoB,CAAC,CAAC;YAC9G,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAE,CAAC;YAC5D,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,KAAK,CAAC;YACnB,MAAM,oBAAoB,GAAG,MAAM,kBAAkB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAO,EAAE,IAAI,CAAC,CAAC;YACvG,MAAM,SAAS,GAAG,cAAc,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;YAC9G,2FAA2F;YAC3F,MAAM,kBAAkB,CAAC,YAAY,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;YAC5F,MAAM,kBAAkB,CAAC,YAAY,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;YAC5F,MAAM,kBAAkB,CAAC,YAAY,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;YAC5F,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QACpC,MAAM,MAAM,GAAG,sCAAsC,CAAC;QACtD,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAElC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;YACtE,MAAM,SAAS,GAAG,yCAAmB,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACjF,MAAM,GAAG,GAAG,yCAAmB,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,SAAS,GAAG,yCAAmB,CAAC,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnF,MAAM,GAAG,GAAG,yCAAmB,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC;YACjE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,WAAW,GAAG,sCAAsC,CAAC;YAC3D,MAAM,YAAY,GAAG,sCAAsC,CAAC;YAE5D,MAAM,aAAa,GAAG,kBAAkB,CAAC;YAEzC,MAAM,eAAe,GAAG;gBACtB,CAAC,WAAW,CAAC,EAAE;oBACb,kBAAkB,EAAE;wBAClB,EAAE,EAAE,IAAI;wBACR,GAAG,EAAE,sHAAsH;qBAC5H;oBACD,gBAAgB,EAAE;wBAChB,EAAE,EAAE,EAAE;wBACN,GAAG,EAAE,sHAAsH;qBAC5H;oBACD,CAAC,aAAa,CAAC,EAAE;wBACf,EAAE,EAAE,EAAE;wBACN,GAAG,EAAE,sHAAsH;qBAC5H;iBACF;gBACD,CAAC,YAAY,CAAC,EAAE;oBACd,kBAAkB,EAAE;wBAClB,EAAE,EAAE,CAAC;wBACL,GAAG,EAAE,sHAAsH;qBAC5H;oBACD,gBAAgB,EAAE;wBAChB,EAAE,EAAE,KAAK;wBACT,GAAG,EAAE,sHAAsH;qBAC5H;iBACF;aACF,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;YAC3E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qHAAqH,EAAE,KAAK,IAAI,EAAE;YACnI,MAAM,MAAM,GAAG,sCAAsC,CAAC;YACtD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;YACpC,MAAM,eAAe,GAAG;gBACtB,CAAC,MAAM,CAAC,EAAE;oBACR,CAAC,QAAQ,CAAC,EAAE;wBACV,EAAE,EAAE,IAAI;wBACR,GAAG,EAAE,sHAAsH;qBAC5H;iBACF;aACF,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW;YACtE,MAAM,cAAc,GAAG,GAAG,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CACvG,CAAC;YACF,MAAM,iBAAiB,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7E,MAAM,eAAe,GAAG,iBAAiB,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAChE,MAAM,YAAY,GAAG,iBAAiB,CAAC;gBACvC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAClF,MAAM,aAAa,GAAG,eAAe,CAAC,OAAwC,CAAC;gBAC/E,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC;gBAC5C,OAAO,aAAa,CAAC,OAAO,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;YACnG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,IAAA,gBAAS,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAE7C,MAAM,cAAc,GAAG,MAAM,IAAA,qCAAY,EAAC,EAAC,SAAS,EAAE,UAAU,EAAC,CAAC,CAAC;YACnE,MAAM,eAAe,GAAG,MAAM,IAAA,qCAAY,EAAC,cAAc,CAAC,CAAC;YAE3D,MAAM,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;YACrD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe;YAC3F,MAAM,aAAa,GACjB,kHAAkH,CAAC;YACrH,MAAM,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAG,CAAC,MAAM,mBAAmB,CAAC,0BAA0B,CAAC,CAC1F,gBAAgB,EAChB,IAAI,EACJ,aAAa,CACd,CAAyB,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;YACrD,MAAM,aAAa,GACjB,kHAAkH,CAAC;YACrH,MAAM,EAAC,SAAS,EAAE,gBAAgB,EAAC,GAAG,CAAC,MAAM,mBAAmB,CAAC,0BAA0B,CAAC,CAC1F,gBAAgB,EAChB,SAAgB,EAChB,aAAa,CACd,CAAyB,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -24,6 +24,7 @@ import {CRUDEngine, MemoryEngine} from '@wireapp/store-engine';
24
24
  import * as bazinga64 from 'bazinga64';
25
25
  import * as crypto from 'crypto';
26
26
  import {promisify} from 'util';
27
+ import {SessionPayloadBundle} from '.';
27
28
 
28
29
  import * as CryptographyHelper from '../test/CryptographyHelper';
29
30
  import {decryptAsset, encryptAsset} from './AssetCryptography.node';
@@ -220,11 +221,11 @@ describe('CryptographyService', () => {
220
221
  const text = new Uint8Array([72, 101, 108, 108, 111, 32, 66, 111, 98, 33]); // "Hello Bob!"
221
222
  const encodedPreKey =
222
223
  'pQABAQACoQBYIHOFFWPnWlr4sulxUWYoP0A6rsJiBO/Ec3Y914t67CIAA6EAoQBYIPFH5CK/a0YwKEx4n/+U/IPRN+mJXVv++MCs5Z4dLmz4BPY=';
223
- const {sessionId, encryptedPayload} = await cryptographyService['encryptPayloadForSession'](
224
+ const {sessionId, encryptedPayload} = (await cryptographyService['encryptPayloadForSession'](
224
225
  sessionWithBobId,
225
226
  text,
226
227
  encodedPreKey,
227
- );
228
+ )) as SessionPayloadBundle;
228
229
  expect(Buffer.from(encryptedPayload).toString('utf8')).not.toBe('💣');
229
230
  expect(sessionId).toBe(sessionWithBobId);
230
231
  });
@@ -233,11 +234,11 @@ describe('CryptographyService', () => {
233
234
  const sessionWithBobId = 'bob-user-id@bob-client-id';
234
235
  const encodedPreKey =
235
236
  'pQABAQACoQBYIHOFFWPnWlr4sulxUWYoP0A6rsJiBO/Ec3Y914t67CIAA6EAoQBYIPFH5CK/a0YwKEx4n/+U/IPRN+mJXVv++MCs5Z4dLmz4BPY=';
236
- const {sessionId, encryptedPayload} = await cryptographyService['encryptPayloadForSession'](
237
+ const {sessionId, encryptedPayload} = (await cryptographyService['encryptPayloadForSession'](
237
238
  sessionWithBobId,
238
239
  undefined as any,
239
240
  encodedPreKey,
240
- );
241
+ )) as SessionPayloadBundle;
241
242
  expect(Buffer.from(encryptedPayload).toString()).toBe('💣');
242
243
  expect(sessionId).toBe(sessionWithBobId);
243
244
  });
@@ -49,19 +49,28 @@ export interface MetaClient extends RegisteredClient {
49
49
  };
50
50
  }
51
51
 
52
+ type CryptographyServiceOptions = {
53
+ federationDomain?: string;
54
+ };
55
+
52
56
  export class CryptographyService {
53
57
  private readonly logger: logdown.Logger;
54
58
 
55
59
  public cryptobox: Cryptobox;
56
60
  private readonly database: CryptographyDatabaseRepository;
57
61
 
58
- constructor(readonly apiClient: APIClient, private readonly storeEngine: CRUDEngine) {
62
+ constructor(
63
+ readonly apiClient: APIClient,
64
+ private readonly storeEngine: CRUDEngine,
65
+ private readonly options?: CryptographyServiceOptions,
66
+ ) {
59
67
  this.cryptobox = new Cryptobox(this.storeEngine);
60
68
  this.database = new CryptographyDatabaseRepository(this.storeEngine);
61
69
  this.logger = logdown('@wireapp/core/cryptography/CryptographyService', {
62
70
  logger: console,
63
71
  markdown: false,
64
72
  });
73
+ this.options = options;
65
74
  }
66
75
 
67
76
  public static constructSessionId(userId: string, clientId: string, domain: string | null): string {
@@ -141,7 +150,7 @@ export class CryptographyService {
141
150
  users: UserPreKeyBundleMap | UserClients,
142
151
  domain?: string,
143
152
  ): Promise<OTRRecipients<Uint8Array>> {
144
- const bundles: Promise<SessionPayloadBundle>[] = [];
153
+ const bundles: Promise<SessionPayloadBundle | undefined>[] = [];
145
154
 
146
155
  for (const userId in users) {
147
156
  const clientIds = isUserClients(users) ? users[userId] : Object.keys(users[userId]);
@@ -155,6 +164,9 @@ export class CryptographyService {
155
164
  const payloads = await Promise.all(bundles);
156
165
 
157
166
  return payloads.reduce((recipients, payload) => {
167
+ if (!payload) {
168
+ return recipients;
169
+ }
158
170
  const {encryptedPayload, sessionId} = payload;
159
171
  const {userId, clientId} = CryptographyService.dismantleSessionId(sessionId);
160
172
  recipients[userId] ||= {};
@@ -167,7 +179,7 @@ export class CryptographyService {
167
179
  sessionId: string,
168
180
  plainText: Uint8Array,
169
181
  base64EncodedPreKey?: string,
170
- ): Promise<SessionPayloadBundle> {
182
+ ): Promise<SessionPayloadBundle | undefined> {
171
183
  this.logger.log(`Encrypting payload for session ID "${sessionId}"`);
172
184
 
173
185
  let encryptedPayload: Uint8Array;
@@ -179,6 +191,11 @@ export class CryptographyService {
179
191
  const payloadAsArrayBuffer = await this.cryptobox.encrypt(sessionId, plainText, decodedPreKeyBundle);
180
192
  encryptedPayload = new Uint8Array(payloadAsArrayBuffer);
181
193
  } catch (error) {
194
+ const notFoundErrorCode = 2;
195
+ if ((error as any).code === notFoundErrorCode) {
196
+ // If the session is not in the database, we just return undefined. Later on there will be a mismatch and the session will be created
197
+ return undefined;
198
+ }
182
199
  this.logger.error(`Could not encrypt payload: ${(error as Error).message}`);
183
200
  encryptedPayload = new Uint8Array(Buffer.from('💣', 'utf-8'));
184
201
  }
@@ -209,7 +226,8 @@ export class CryptographyService {
209
226
  data: {sender, text: cipherText},
210
227
  } = otrMessage;
211
228
 
212
- const sessionId = CryptographyService.constructSessionId(from, sender, qualified_from?.domain || null);
229
+ const domain = this.options?.federationDomain ? qualified_from?.domain || this.options.federationDomain : null;
230
+ const sessionId = CryptographyService.constructSessionId(from, sender, domain);
213
231
  const decryptedMessage = await this.decrypt(sessionId, cipherText);
214
232
  const genericMessage = GenericMessage.decode(decryptedMessage);
215
233
 
@@ -20,7 +20,7 @@
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.isUserClients = exports.isQualifiedUserClients = exports.isQualifiedIdArray = exports.isQualifiedId = exports.isStringArray = void 0;
22
22
  function isStringArray(obj) {
23
- return Array.isArray(obj) && typeof obj[0] === 'string';
23
+ return Array.isArray(obj) && (obj.length === 0 || typeof obj[0] === 'string');
24
24
  }
25
25
  exports.isStringArray = isStringArray;
26
26
  function isQualifiedId(obj) {
@@ -37,10 +37,7 @@ function isQualifiedUserClients(obj) {
37
37
  const firstUserClientObject = (_a = Object.values(obj)) === null || _a === void 0 ? void 0 : _a[0];
38
38
  if (typeof firstUserClientObject === 'object') {
39
39
  const firstClientIdArray = Object.values(firstUserClientObject)[0];
40
- if (Array.isArray(firstClientIdArray)) {
41
- const firstClientId = firstClientIdArray[0];
42
- return typeof firstClientId === 'string' || typeof firstClientId === 'undefined';
43
- }
40
+ return isStringArray(firstClientIdArray);
44
41
  }
45
42
  }
46
43
  return false;
@@ -50,10 +47,7 @@ function isUserClients(obj) {
50
47
  var _a;
51
48
  if (typeof obj === 'object') {
52
49
  const firstUserClientArray = (_a = Object.values(obj)) === null || _a === void 0 ? void 0 : _a[0];
53
- if (Array.isArray(firstUserClientArray)) {
54
- const firstClientId = firstUserClientArray[0];
55
- return typeof firstClientId === 'string';
56
- }
50
+ return isStringArray(firstUserClientArray);
57
51
  }
58
52
  return false;
59
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TypePredicateUtil.js","sourceRoot":"","sources":["TypePredicateUtil.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAKH,SAAgB,aAAa,CAAC,GAAQ;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;AAC1D,CAAC;AAFD,sCAEC;AAED,SAAgB,aAAa,CAAC,GAAQ;IACpC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC;AACtE,CAAC;AAFD,sCAEC;AAED,SAAgB,kBAAkB,CAAC,GAAQ;IACzC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAFD,gDAEC;AAED,SAAgB,sBAAsB,CAAC,GAAQ;;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM,qBAAqB,GAAG,MAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;YAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,qBAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBACrC,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBAC5C,OAAO,OAAO,aAAa,KAAK,QAAQ,IAAI,OAAO,aAAa,KAAK,WAAW,CAAC;aAClF;SACF;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAZD,wDAYC;AAED,SAAgB,aAAa,CAAC,GAAQ;;IACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM,oBAAoB,GAAG,MAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;YACvC,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,OAAO,aAAa,KAAK,QAAQ,CAAC;SAC1C;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AATD,sCASC"}
1
+ {"version":3,"file":"TypePredicateUtil.js","sourceRoot":"","sources":["TypePredicateUtil.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;;AAKH,SAAgB,aAAa,CAAC,GAAQ;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC;AAChF,CAAC;AAFD,sCAEC;AAED,SAAgB,aAAa,CAAC,GAAQ;IACpC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC;AACtE,CAAC;AAFD,sCAEC;AAED,SAAgB,kBAAkB,CAAC,GAAQ;IACzC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAFD,gDAEC;AAED,SAAgB,sBAAsB,CAAC,GAAQ;;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM,qBAAqB,GAAG,MAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAC;QACtD,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;YAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,qBAA+B,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,OAAO,aAAa,CAAC,kBAAkB,CAAC,CAAC;SAC1C;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AATD,wDASC;AAED,SAAgB,aAAa,CAAC,GAAQ;;IACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;QAC3B,MAAM,oBAAoB,GAAG,MAAA,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,0CAAG,CAAC,CAAC,CAAC;QACrD,OAAO,aAAa,CAAC,oBAAoB,CAAC,CAAC;KAC5C;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAND,sCAMC"}
@@ -21,7 +21,7 @@ import type {QualifiedUserClients, UserClients} from '@wireapp/api-client/src/co
21
21
  import type {QualifiedId} from '@wireapp/api-client/src/user/';
22
22
 
23
23
  export function isStringArray(obj: any): obj is string[] {
24
- return Array.isArray(obj) && typeof obj[0] === 'string';
24
+ return Array.isArray(obj) && (obj.length === 0 || typeof obj[0] === 'string');
25
25
  }
26
26
 
27
27
  export function isQualifiedId(obj: any): obj is QualifiedId {
@@ -37,10 +37,7 @@ export function isQualifiedUserClients(obj: any): obj is QualifiedUserClients {
37
37
  const firstUserClientObject = Object.values(obj)?.[0];
38
38
  if (typeof firstUserClientObject === 'object') {
39
39
  const firstClientIdArray = Object.values(firstUserClientObject as object)[0];
40
- if (Array.isArray(firstClientIdArray)) {
41
- const firstClientId = firstClientIdArray[0];
42
- return typeof firstClientId === 'string' || typeof firstClientId === 'undefined';
43
- }
40
+ return isStringArray(firstClientIdArray);
44
41
  }
45
42
  }
46
43
  return false;
@@ -49,10 +46,7 @@ export function isQualifiedUserClients(obj: any): obj is QualifiedUserClients {
49
46
  export function isUserClients(obj: any): obj is UserClients {
50
47
  if (typeof obj === 'object') {
51
48
  const firstUserClientArray = Object.values(obj)?.[0];
52
- if (Array.isArray(firstUserClientArray)) {
53
- const firstClientId = firstUserClientArray[0];
54
- return typeof firstClientId === 'string';
55
- }
49
+ return isStringArray(firstUserClientArray);
56
50
  }
57
51
  return false;
58
52
  }