@wireapp/core 42.21.0 → 42.22.1
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/Account.d.ts +6 -1
- package/lib/Account.d.ts.map +1 -1
- package/lib/Account.js +27 -7
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts +2 -2
- package/lib/messagingProtocols/mls/MLSService/MLSService.d.ts.map +1 -1
- package/lib/messagingProtocols/mls/MLSService/MLSService.js +17 -8
- package/package.json +2 -2
package/lib/Account.d.ts
CHANGED
|
@@ -114,7 +114,8 @@ export declare class Account extends TypedEventEmitter<Events> {
|
|
|
114
114
|
*/
|
|
115
115
|
useAPIVersion(min: number, max: number, allowDev?: boolean): Promise<BackendFeatures>;
|
|
116
116
|
private persistCookie;
|
|
117
|
-
|
|
117
|
+
private getE2EIStatus;
|
|
118
|
+
enrollE2EI(displayName: string, handle: string, discoveryUrl: string, client: RegisteredClient, oAuthIdToken?: string): Promise<AcmeChallenge | boolean>;
|
|
118
119
|
get clientId(): string;
|
|
119
120
|
get userId(): string;
|
|
120
121
|
/**
|
|
@@ -141,6 +142,10 @@ export declare class Account extends TypedEventEmitter<Events> {
|
|
|
141
142
|
* Will register a new client for the current user
|
|
142
143
|
*/
|
|
143
144
|
registerClient(loginData: LoginData, clientInfo?: ClientInfo, entropyData?: Uint8Array): Promise<RegisteredClient>;
|
|
145
|
+
/**
|
|
146
|
+
* Will create a new MLS Client for the current user
|
|
147
|
+
*/
|
|
148
|
+
private initMLSClient;
|
|
144
149
|
/**
|
|
145
150
|
* Will initiate all the cryptographic material of the device and setup all the background tasks.
|
|
146
151
|
*
|
package/lib/Account.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../src/Account.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,YAAY,EAGZ,OAAO,EACP,MAAM,EAEN,SAAS,EACV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAuB,UAAU,EAAE,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AAEnG,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"Account.d.ts","sourceRoot":"","sources":["../src/Account.ts"],"names":[],"mappings":"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"}
|
package/lib/Account.js
CHANGED
|
@@ -34,6 +34,7 @@ const client_1 = require("@wireapp/api-client/lib/client/");
|
|
|
34
34
|
const event_1 = require("@wireapp/api-client/lib/event");
|
|
35
35
|
const tcp_1 = require("@wireapp/api-client/lib/tcp/");
|
|
36
36
|
const ReconnectingWebsocket_1 = require("@wireapp/api-client/lib/tcp/ReconnectingWebsocket");
|
|
37
|
+
const team_1 = require("@wireapp/api-client/lib/team");
|
|
37
38
|
const logdown_1 = __importDefault(require("logdown"));
|
|
38
39
|
const api_client_1 = require("@wireapp/api-client");
|
|
39
40
|
const commons_1 = require("@wireapp/commons");
|
|
@@ -56,7 +57,7 @@ const cryptoMigrationStateStore_1 = require("./messagingProtocols/proteus/Proteu
|
|
|
56
57
|
const notification_1 = require("./notification/");
|
|
57
58
|
const self_1 = require("./self/");
|
|
58
59
|
const CoreDB_1 = require("./storage/CoreDB");
|
|
59
|
-
const
|
|
60
|
+
const team_2 = require("./team/");
|
|
60
61
|
const user_1 = require("./user/");
|
|
61
62
|
const RecurringTaskScheduler_1 = require("./util/RecurringTaskScheduler");
|
|
62
63
|
var EVENTS;
|
|
@@ -154,7 +155,14 @@ class Account extends commons_1.TypedEventEmitter {
|
|
|
154
155
|
const entity = { expiration: cookie.expiration, zuid: cookie.zuid };
|
|
155
156
|
return storeEngine.updateOrCreate(auth_1.AUTH_TABLE_NAME, auth_1.AUTH_COOKIE_KEY, entity);
|
|
156
157
|
}
|
|
157
|
-
async
|
|
158
|
+
async getE2EIStatus() {
|
|
159
|
+
var _a;
|
|
160
|
+
const features = await this.apiClient.api.teams.feature.getAllFeatures();
|
|
161
|
+
return {
|
|
162
|
+
isFeatureEnabled: ((_a = features[team_1.FEATURE_KEY.MLSE2EID]) === null || _a === void 0 ? void 0 : _a.status) === team_1.FeatureStatus.ENABLED,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
async enrollE2EI(displayName, handle, discoveryUrl, client, oAuthIdToken) {
|
|
158
166
|
var _a, _b, _c;
|
|
159
167
|
const context = this.apiClient.context;
|
|
160
168
|
const domain = (_a = context === null || context === void 0 ? void 0 : context.domain) !== null && _a !== void 0 ? _a : '';
|
|
@@ -168,7 +176,7 @@ class Account extends commons_1.TypedEventEmitter {
|
|
|
168
176
|
domain,
|
|
169
177
|
id: this.userId,
|
|
170
178
|
};
|
|
171
|
-
return this.service.mls.enrollE2EI(discoveryUrl, this.service.e2eIdentity, user,
|
|
179
|
+
return this.service.mls.enrollE2EI(discoveryUrl, this.service.e2eIdentity, user, client, this.nbPrekeys, oAuthIdToken);
|
|
172
180
|
}
|
|
173
181
|
get clientId() {
|
|
174
182
|
return this.apiClient.validatedClientId;
|
|
@@ -223,13 +231,26 @@ class Account extends commons_1.TypedEventEmitter {
|
|
|
223
231
|
const client = await this.service.client.register(loginData, clientInfo, initialPreKeys);
|
|
224
232
|
if (this.service.mls) {
|
|
225
233
|
const { userId, domain = '' } = this.apiClient.context;
|
|
226
|
-
await this.
|
|
234
|
+
await this.initMLSClient({ id: userId, domain }, client);
|
|
227
235
|
}
|
|
228
236
|
this.logger.info(`Created new client {mls: ${!!this.service.mls}, id: ${client.id}}`);
|
|
229
237
|
await this.service.notification.initializeNotificationStream();
|
|
230
238
|
await this.service.client.synchronizeClients(client.id);
|
|
231
239
|
return this.initClient(client);
|
|
232
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Will create a new MLS Client for the current user
|
|
243
|
+
*/
|
|
244
|
+
async initMLSClient(userId, client) {
|
|
245
|
+
var _a;
|
|
246
|
+
if (!((_a = this.service) === null || _a === void 0 ? void 0 : _a.mls)) {
|
|
247
|
+
throw new Error('MLS Services is not ready.');
|
|
248
|
+
}
|
|
249
|
+
// we need to check if E2EI is enabled before creating the client
|
|
250
|
+
// in case it is enabled we are not supposed to upload new keypackages, that are not of type x509, to the backend
|
|
251
|
+
const { isFeatureEnabled } = await this.getE2EIStatus();
|
|
252
|
+
await this.service.mls.initClient(userId, client, isFeatureEnabled);
|
|
253
|
+
}
|
|
233
254
|
async initClient(client) {
|
|
234
255
|
if (!this.service || !this.apiClient.context || !this.storeEngine) {
|
|
235
256
|
throw new Error('Services are not set.');
|
|
@@ -245,8 +266,7 @@ class Account extends commons_1.TypedEventEmitter {
|
|
|
245
266
|
if (this.service.mls) {
|
|
246
267
|
const { userId, domain = '' } = this.apiClient.context;
|
|
247
268
|
if (!client) {
|
|
248
|
-
|
|
249
|
-
await this.service.mls.initClient({ id: userId, domain }, validClient);
|
|
269
|
+
await this.initMLSClient({ id: userId, domain }, validClient);
|
|
250
270
|
}
|
|
251
271
|
// initialize schedulers for pending mls proposals once client is initialized
|
|
252
272
|
await this.service.mls.initialisePendingProposalsTasks();
|
|
@@ -316,7 +336,7 @@ class Account extends commons_1.TypedEventEmitter {
|
|
|
316
336
|
const subconversationService = new SubconversationService_1.SubconversationService(this.apiClient, this.db, mlsService);
|
|
317
337
|
const notificationService = new notification_1.NotificationService(this.apiClient, this.storeEngine, conversationService);
|
|
318
338
|
const selfService = new self_1.SelfService(this.apiClient);
|
|
319
|
-
const teamService = new
|
|
339
|
+
const teamService = new team_2.TeamService(this.apiClient);
|
|
320
340
|
const broadcastService = new broadcast_1.BroadcastService(this.apiClient, proteusService);
|
|
321
341
|
const userService = new user_1.UserService(this.apiClient);
|
|
322
342
|
this.service = {
|
|
@@ -35,7 +35,7 @@ export declare class MLSService extends TypedEventEmitter<Events> {
|
|
|
35
35
|
private readonly textEncoder;
|
|
36
36
|
private readonly textDecoder;
|
|
37
37
|
constructor(apiClient: APIClient, coreCryptoClient: CoreCrypto, coreDatabase: CoreDatabase, recurringTaskScheduler: RecurringTaskScheduler, { keyingMaterialUpdateThreshold, nbKeyPackages, defaultCiphersuite, defaultCredentialType, }: Partial<MLSServiceConfig>);
|
|
38
|
-
initClient(userId: QualifiedId, client: RegisteredClient): Promise<void>;
|
|
38
|
+
initClient(userId: QualifiedId, client: RegisteredClient, blockKeypackageUpload?: boolean): Promise<void>;
|
|
39
39
|
private readonly uploadCommitBundle;
|
|
40
40
|
/**
|
|
41
41
|
* Will add users to an existing MLS group and send a commit bundle to backend.
|
|
@@ -208,7 +208,7 @@ export declare class MLSService extends TypedEventEmitter<Events> {
|
|
|
208
208
|
* @param oAuthIdToken The OAuth id token if the user is already authenticated
|
|
209
209
|
* @returns AcmeChallenge if the user is not authenticated, true if the user is authenticated
|
|
210
210
|
*/
|
|
211
|
-
enrollE2EI(discoveryUrl: string, e2eiServiceExternal: E2EIServiceExternal, user: User,
|
|
211
|
+
enrollE2EI(discoveryUrl: string, e2eiServiceExternal: E2EIServiceExternal, user: User, client: RegisteredClient, nbPrekeys: number, oAuthIdToken?: string): Promise<AcmeChallenge | boolean>;
|
|
212
212
|
}
|
|
213
213
|
export {};
|
|
214
214
|
//# sourceMappingURL=MLSService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MLSService.d.ts","sourceRoot":"","sources":["../../../../src/messagingProtocols/mls/MLSService/MLSService.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAqB,gBAAgB,EAAC,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAC,sBAAsB,EAAE,kBAAkB,EAAC,MAAM,sCAAsC,CAAC;AAChG,OAAO,EAAC,8BAA8B,EAAE,2BAA2B,EAAC,MAAM,+BAA+B,CAAC;AAE1G,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAEzD,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAW,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EACL,eAAe,EAIf,cAAc,EACd,UAAU,EAEV,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAC,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAC,sBAAsB,EAAC,MAAM,sCAAsC,CAAC;AAE5E,OAAO,EAAC,aAAa,EAAE,mBAAmB,EAAE,IAAI,EAAC,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAAC,QAAQ,EAAE,4BAA4B,EAAE,4BAA4B,EAAC,MAAM,UAAU,CAAC;AAK9F,eAAO,MAAM,oBAAoB,UAAW,UAAU,GAAG,EAAE,KAAG,UAE7D,CAAC;AAEF,UAAU,qBAAsB,SAAQ,gBAAgB;IACtD;;OAEG;IACH,uCAAuC,EAAE,MAAM,CAAC;CACjD;AASD,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC;CAC5C,CAAC;AACF,qBAAa,UAAW,SAAQ,iBAAiB,CAAC,MAAM,CAAC;IAOrD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IATzC,MAAM,iBAAuC;IAC7C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;gBAG9B,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,UAAU,EAC5B,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,sBAAsB,EAC/D,EACE,6BAA2E,EAC3E,aAA2C,EAC3C,kBAAqD,EACrD,qBAA2D,GAC5D,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAYjB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB;
|
|
1
|
+
{"version":3,"file":"MLSService.d.ts","sourceRoot":"","sources":["../../../../src/messagingProtocols/mls/MLSService/MLSService.ts"],"names":[],"mappings":"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"}
|
|
@@ -145,7 +145,7 @@ class MLSService extends commons_1.TypedEventEmitter {
|
|
|
145
145
|
minRequiredNumberOfAvailableKeyPackages: Math.floor(nbKeyPackages / 2),
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
|
-
async initClient(userId, client) {
|
|
148
|
+
async initClient(userId, client, blockKeypackageUpload = false) {
|
|
149
149
|
await this.coreCryptoClient.mlsInit((0, MLSId_1.generateMLSDeviceId)(userId, client.id), [this.config.defaultCiphersuite], this.config.nbKeyPackages);
|
|
150
150
|
await this.coreCryptoClient.registerCallbacks({
|
|
151
151
|
// All authorization/membership rules are enforced on backend
|
|
@@ -153,9 +153,14 @@ class MLSService extends commons_1.TypedEventEmitter {
|
|
|
153
153
|
authorize: async () => true,
|
|
154
154
|
userAuthorize: async () => true,
|
|
155
155
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
if (!blockKeypackageUpload) {
|
|
157
|
+
// We need to make sure keypackages and public key are uploaded to the backend
|
|
158
|
+
await this.uploadMLSPublicKeys(client);
|
|
159
|
+
await this.verifyRemoteMLSKeyPackagesAmount(client.id);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
this.logger.info(`Blocked initial key package upload for client ${client.id} as E2EI is enabled`);
|
|
163
|
+
}
|
|
159
164
|
}
|
|
160
165
|
/**
|
|
161
166
|
* Will add users to an existing MLS group and send a commit bundle to backend.
|
|
@@ -605,14 +610,14 @@ class MLSService extends commons_1.TypedEventEmitter {
|
|
|
605
610
|
* @param oAuthIdToken The OAuth id token if the user is already authenticated
|
|
606
611
|
* @returns AcmeChallenge if the user is not authenticated, true if the user is authenticated
|
|
607
612
|
*/
|
|
608
|
-
async enrollE2EI(discoveryUrl, e2eiServiceExternal, user,
|
|
613
|
+
async enrollE2EI(discoveryUrl, e2eiServiceExternal, user, client, nbPrekeys, oAuthIdToken) {
|
|
609
614
|
try {
|
|
610
615
|
const instance = await E2EIServiceInternal_1.E2EIServiceInternal.getInstance({
|
|
611
616
|
apiClient: this.apiClient,
|
|
612
617
|
coreCryptClient: this.coreCryptoClient,
|
|
613
618
|
e2eiServiceExternal,
|
|
614
619
|
user,
|
|
615
|
-
clientId,
|
|
620
|
+
clientId: client.id,
|
|
616
621
|
discoveryUrl,
|
|
617
622
|
keyPackagesAmount: nbPrekeys,
|
|
618
623
|
});
|
|
@@ -625,10 +630,14 @@ class MLSService extends commons_1.TypedEventEmitter {
|
|
|
625
630
|
else {
|
|
626
631
|
const rotateBundle = await instance.continueCertificateProcess(oAuthIdToken);
|
|
627
632
|
if (rotateBundle !== undefined) {
|
|
633
|
+
// upload the clients public keys
|
|
634
|
+
await this.uploadMLSPublicKeys(client);
|
|
628
635
|
// Remove old key packages
|
|
629
|
-
await this.deleteMLSKeyPackages(
|
|
636
|
+
await this.deleteMLSKeyPackages(client.id, rotateBundle.keyPackageRefsToRemove);
|
|
630
637
|
// Upload new key packages with x509 certificate
|
|
631
|
-
await this.uploadMLSKeyPackages(
|
|
638
|
+
await this.uploadMLSKeyPackages(client.id, rotateBundle.newKeyPackages);
|
|
639
|
+
// Verify that we have enough key packages
|
|
640
|
+
await this.verifyRemoteMLSKeyPackagesAmount(client.id);
|
|
632
641
|
// Update keying material
|
|
633
642
|
for (const [groupId, commitBundle] of rotateBundle.commits) {
|
|
634
643
|
const groupIdAsBytes = bazinga64_1.Converter.hexStringToArrayBufferView(groupId);
|
package/package.json
CHANGED