@wireapp/core 38.7.0 → 38.8.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.
- package/lib/conversation/ConversationService/ConversationService.d.ts +2 -3
- package/lib/conversation/ConversationService/ConversationService.d.ts.map +1 -1
- package/lib/conversation/ConversationService/ConversationService.js +0 -3
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts +10 -7
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/MLSService/MLSService.js +28 -12
- package/package.json +6 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Conversation, DefaultConversationRoleName, MutedStatus, NewConversation, QualifiedUserClients, UserClients,
|
|
1
|
+
import { Conversation, DefaultConversationRoleName, MutedStatus, NewConversation, QualifiedUserClients, UserClients, RemoteConversations } from '@wireapp/api-client/lib/conversation';
|
|
2
2
|
import { ConversationMemberLeaveEvent } from '@wireapp/api-client/lib/event';
|
|
3
3
|
import { QualifiedId } from '@wireapp/api-client/lib/user';
|
|
4
4
|
import { XOR } from '@wireapp/commons/lib/util/TypeUtil';
|
|
@@ -51,7 +51,6 @@ export declare class ConversationService {
|
|
|
51
51
|
createProteusConversation(conversationData: NewConversation): Promise<Conversation>;
|
|
52
52
|
getConversation(conversationId: QualifiedId): Promise<Conversation>;
|
|
53
53
|
getConversations(conversationIds?: QualifiedId[]): Promise<RemoteConversations>;
|
|
54
|
-
getSubconversation(conversationId: QualifiedId, subconversationId: SUBCONVERSATION_ID): Promise<Subconversation>;
|
|
55
54
|
getAsset({ assetId, assetToken, otrKey, sha256 }: RemoteData): Promise<Uint8Array>;
|
|
56
55
|
getUnencryptedAsset(assetId: string, assetToken?: string): Promise<ArrayBuffer>;
|
|
57
56
|
addUsersToProteusConversation(params: AddUsersToProteusConversationParams): Promise<import("@wireapp/api-client/lib/event").ConversationMemberJoinEvent>;
|
|
@@ -92,7 +91,7 @@ export declare class ConversationService {
|
|
|
92
91
|
*/
|
|
93
92
|
sendExternalJoinProposal(groupId: string, epoch: number): Promise<void>;
|
|
94
93
|
isMLSConversationEstablished(groupId: string): Promise<boolean>;
|
|
95
|
-
wipeMLSConversation(groupId:
|
|
94
|
+
wipeMLSConversation(groupId: string): Promise<void>;
|
|
96
95
|
private matchesEpoch;
|
|
97
96
|
handleEpochMismatch(): Promise<void>;
|
|
98
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationService.d.ts","sourceRoot":"","sources":["../../../src/conversation/ConversationService/ConversationService.ts"],"names":[],"mappings":"AAmBA,OAAO,EAEL,YAAY,EACZ,2BAA2B,EAC3B,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,WAAW,EAGX,
|
|
1
|
+
{"version":3,"file":"ConversationService.d.ts","sourceRoot":"","sources":["../../../src/conversation/ConversationService/ConversationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,9 +118,6 @@ class ConversationService {
|
|
|
118
118
|
}
|
|
119
119
|
return this.apiClient.api.conversation.getConversationsByQualifiedIds(conversationIds);
|
|
120
120
|
}
|
|
121
|
-
async getSubconversation(conversationId, subconversationId) {
|
|
122
|
-
return this.apiClient.api.conversation.getSubconversation(conversationId, subconversationId);
|
|
123
|
-
}
|
|
124
121
|
async getAsset({ assetId, assetToken, otrKey, sha256 }) {
|
|
125
122
|
const request = this.apiClient.api.asset.getAssetV3(assetId, assetToken);
|
|
126
123
|
const encryptedBuffer = (await request.response).buffer;
|
|
@@ -11,6 +11,11 @@ import { EventHandlerResult } from '../../common.types';
|
|
|
11
11
|
import { EventHandlerParams } from '../EventHandler';
|
|
12
12
|
import { CommitPendingProposalsParams, HandlePendingProposalsParams, MLSCallbacks } from '../types';
|
|
13
13
|
export declare const optionalToUint8Array: (array: Uint8Array | []) => Uint8Array;
|
|
14
|
+
export interface SubconversationEpochInfoMember {
|
|
15
|
+
userid: string;
|
|
16
|
+
clientid: string;
|
|
17
|
+
in_subconv: boolean;
|
|
18
|
+
}
|
|
14
19
|
type Events = {
|
|
15
20
|
newEpoch: {
|
|
16
21
|
epoch: number;
|
|
@@ -33,18 +38,16 @@ export declare class MLSService extends TypedEventEmitter<Events> {
|
|
|
33
38
|
getEpoch(groupId: string | Uint8Array): Promise<number>;
|
|
34
39
|
newProposal(proposalType: ProposalType, args: ProposalArgs | AddProposalArgs | RemoveProposalArgs): Promise<import("@wireapp/core-crypto").ProposalBundle>;
|
|
35
40
|
joinByExternalCommit(getGroupInfo: () => Promise<Uint8Array>): Promise<PostMlsMessageResponse | null>;
|
|
41
|
+
getConferenceSubconversation(conversationId: QualifiedId): Promise<Subconversation>;
|
|
42
|
+
private deleteConferenceSubconversation;
|
|
36
43
|
/**
|
|
37
44
|
* Will join or register an mls subconversation for conference calls.
|
|
38
45
|
* Will return the secret key derived from the subconversation
|
|
39
46
|
*
|
|
40
47
|
* @param conversationId Id of the parent conversation in which the call should happen
|
|
41
48
|
*/
|
|
42
|
-
joinConferenceSubconversation(conversationId: QualifiedId): Promise<
|
|
43
|
-
|
|
44
|
-
secretKey: string;
|
|
45
|
-
keyLength: number;
|
|
46
|
-
}>;
|
|
47
|
-
private exportSecretKey;
|
|
49
|
+
joinConferenceSubconversation(conversationId: QualifiedId): Promise<Subconversation>;
|
|
50
|
+
exportSecretKey(groupId: string, keyLength: number): Promise<string>;
|
|
48
51
|
newExternalProposal(externalProposalType: ExternalProposalType, args: ExternalProposalArgs | ExternalRemoveProposalArgs): Promise<Uint8Array>;
|
|
49
52
|
processWelcomeMessage(welcomeMessage: Uint8Array): Promise<ConversationId>;
|
|
50
53
|
decryptMessage(conversationId: ConversationId, payload: Uint8Array): Promise<DecryptedMessage>;
|
|
@@ -112,7 +115,7 @@ export declare class MLSService extends TypedEventEmitter<Events> {
|
|
|
112
115
|
*/
|
|
113
116
|
private uploadMLSPublicKeys;
|
|
114
117
|
private uploadMLSKeyPackages;
|
|
115
|
-
wipeConversation(
|
|
118
|
+
wipeConversation(groupId: string): Promise<void>;
|
|
116
119
|
handleEvent(params: Omit<EventHandlerParams, 'mlsService'>): EventHandlerResult;
|
|
117
120
|
/**
|
|
118
121
|
* If there is a matching conversationId => groupId pair in the database,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MLSService.d.ts","sourceRoot":"","sources":["../../../../src/messagingProtocols/mls/MLSService/MLSService.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,sBAAsB,EAAqB,MAAM,sCAAsC,CAAC;AAChG,OAAO,EAAC,eAAe,EAAC,MAAM,sDAAsD,CAAC;AACrF,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"MLSService.d.ts","sourceRoot":"","sources":["../../../../src/messagingProtocols/mls/MLSService/MLSService.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
35
|
exports.MLSService = exports.optionalToUint8Array = void 0;
|
|
36
36
|
const conversation_1 = require("@wireapp/api-client/lib/conversation");
|
|
37
|
+
const TimeUtil_1 = require("@wireapp/commons/lib/util/TimeUtil");
|
|
37
38
|
const axios_1 = __importDefault(require("axios"));
|
|
38
39
|
const bazinga64_1 = require("bazinga64");
|
|
39
40
|
const logdown_1 = __importDefault(require("logdown"));
|
|
@@ -174,6 +175,12 @@ class MLSService extends TypedEventEmitter_1.TypedEventEmitter {
|
|
|
174
175
|
regenerateCommitBundle: async () => (await generateCommit()).commitBundle,
|
|
175
176
|
});
|
|
176
177
|
}
|
|
178
|
+
async getConferenceSubconversation(conversationId) {
|
|
179
|
+
return this.apiClient.api.conversation.getSubconversation(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
180
|
+
}
|
|
181
|
+
async deleteConferenceSubconversation(conversationId, data) {
|
|
182
|
+
return this.apiClient.api.conversation.deleteSubconversation(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE, data);
|
|
183
|
+
}
|
|
177
184
|
/**
|
|
178
185
|
* Will join or register an mls subconversation for conference calls.
|
|
179
186
|
* Will return the secret key derived from the subconversation
|
|
@@ -181,23 +188,31 @@ class MLSService extends TypedEventEmitter_1.TypedEventEmitter {
|
|
|
181
188
|
* @param conversationId Id of the parent conversation in which the call should happen
|
|
182
189
|
*/
|
|
183
190
|
async joinConferenceSubconversation(conversationId) {
|
|
184
|
-
const subconversation = await this.
|
|
191
|
+
const subconversation = await this.getConferenceSubconversation(conversationId);
|
|
185
192
|
if (subconversation.epoch === 0) {
|
|
193
|
+
// if subconversation is not yet established, create it
|
|
186
194
|
await this.registerConversation(subconversation.group_id, []);
|
|
187
195
|
}
|
|
188
196
|
else {
|
|
189
|
-
|
|
197
|
+
const epochUpdateTime = new Date(subconversation.epoch_timestamp).getTime();
|
|
198
|
+
const epochAge = new Date().getTime() - epochUpdateTime;
|
|
199
|
+
if (epochAge > TimeUtil_1.TimeInMillis.DAY) {
|
|
200
|
+
// if subconversation does exist, but it's older than 24h, delete and re-join
|
|
201
|
+
await this.deleteConferenceSubconversation(conversationId, {
|
|
202
|
+
groupId: subconversation.group_id,
|
|
203
|
+
epoch: subconversation.epoch,
|
|
204
|
+
});
|
|
205
|
+
await this.wipeConversation(subconversation.group_id);
|
|
206
|
+
return this.joinConferenceSubconversation(conversationId);
|
|
207
|
+
}
|
|
190
208
|
await this.joinByExternalCommit(() => this.apiClient.api.conversation.getSubconversationGroupInfo(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE));
|
|
191
209
|
}
|
|
210
|
+
// We refetch subconversation after joining/registering
|
|
211
|
+
// This way we're sure we return the fresh list of subconversation members
|
|
212
|
+
const updatedSubconversation = await this.apiClient.api.conversation.getSubconversation(conversationId, conversation_1.SUBCONVERSATION_ID.CONFERENCE);
|
|
192
213
|
// We store the mapping between the subconversation and the parent conversation
|
|
193
|
-
(0, subconversationGroupIdMapper_1.storeSubconversationGroupId)(conversationId,
|
|
194
|
-
|
|
195
|
-
const secretKey = await this.exportSecretKey(subconversation.group_id, keyLength);
|
|
196
|
-
return {
|
|
197
|
-
subconversation,
|
|
198
|
-
secretKey,
|
|
199
|
-
keyLength,
|
|
200
|
-
};
|
|
214
|
+
(0, subconversationGroupIdMapper_1.storeSubconversationGroupId)(conversationId, updatedSubconversation.subconv_id, updatedSubconversation.group_id);
|
|
215
|
+
return updatedSubconversation;
|
|
201
216
|
}
|
|
202
217
|
async exportSecretKey(groupId, keyLength) {
|
|
203
218
|
const groupIdBytes = bazinga64_1.Decoder.fromBase64(groupId).asBytes;
|
|
@@ -379,8 +394,9 @@ class MLSService extends TypedEventEmitter_1.TypedEventEmitter {
|
|
|
379
394
|
async uploadMLSKeyPackages(keypackages, clientId) {
|
|
380
395
|
return this.apiClient.api.client.uploadMLSKeyPackages(clientId, keypackages.map(keypackage => btoa(bazinga64_1.Converter.arrayBufferViewToBaselineString(keypackage))));
|
|
381
396
|
}
|
|
382
|
-
async wipeConversation(
|
|
383
|
-
|
|
397
|
+
async wipeConversation(groupId) {
|
|
398
|
+
const groupIdBytes = bazinga64_1.Decoder.fromBase64(groupId).asBytes;
|
|
399
|
+
return this.coreCryptoClient.wipeConversation(groupIdBytes);
|
|
384
400
|
}
|
|
385
401
|
async handleEvent(params) {
|
|
386
402
|
return (0, EventHandler_1.handleBackendEvent)(Object.assign(Object.assign({}, params), { mlsService: this }), async (groupId) => {
|
package/package.json
CHANGED
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
"./lib/cryptography/AssetCryptography/crypto.node": "./lib/cryptography/AssetCryptography/crypto.browser.js"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@wireapp/api-client": "^22.
|
|
14
|
+
"@wireapp/api-client": "^22.15.0",
|
|
15
15
|
"@wireapp/commons": "^5.0.4",
|
|
16
16
|
"@wireapp/core-crypto": "0.6.0-rc.3",
|
|
17
17
|
"@wireapp/cryptobox": "12.8.0",
|
|
18
18
|
"@wireapp/promise-queue": "^2.1.1",
|
|
19
19
|
"@wireapp/protocol-messaging": "1.44.0",
|
|
20
20
|
"@wireapp/store-engine": "5.0.3",
|
|
21
|
-
"@wireapp/store-engine-dexie": "^2.0.
|
|
22
|
-
"axios": "1.2.
|
|
21
|
+
"@wireapp/store-engine-dexie": "^2.0.5",
|
|
22
|
+
"axios": "1.2.6",
|
|
23
23
|
"bazinga64": "6.0.3",
|
|
24
24
|
"hash.js": "1.1.7",
|
|
25
25
|
"http-status-codes": "2.2.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@types/long": "^5.0.0",
|
|
37
37
|
"@types/rimraf": "^3.0.2",
|
|
38
38
|
"@types/tough-cookie": "4.0.2",
|
|
39
|
-
"commander": "
|
|
39
|
+
"commander": "10.0.0",
|
|
40
40
|
"cross-env": "7.0.3",
|
|
41
41
|
"dotenv-defaults": "5.0.2",
|
|
42
42
|
"fake-indexeddb": "^4.0.0",
|
|
@@ -60,6 +60,6 @@
|
|
|
60
60
|
"test:coverage": "jest --coverage",
|
|
61
61
|
"watch": "tsc --watch"
|
|
62
62
|
},
|
|
63
|
-
"version": "38.
|
|
64
|
-
"gitHead": "
|
|
63
|
+
"version": "38.8.0",
|
|
64
|
+
"gitHead": "a7c5e0946b997d8e391c494dc8a3bf347bd51033"
|
|
65
65
|
}
|