@wireapp/core 38.0.0-beta.5 → 38.0.0-beta.6
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/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.d.ts +10 -4
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.js +35 -24
- package/lib/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.test.js +21 -5
- package/lib/messagingProtocols/proteus/ProteusService/ProteusService.js +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/index.d.ts +1 -0
- package/lib/messagingProtocols/proteus/ProteusService/index.d.ts.map +1 -1
- package/lib/messagingProtocols/proteus/ProteusService/index.js +3 -0
- package/package.json +1 -1
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import { QualifiedId } from '@wireapp/api-client/lib/user';
|
|
2
|
-
import logdown from 'logdown';
|
|
3
2
|
import { DecryptionError } from '../../../../errors/DecryptionError';
|
|
4
|
-
declare const
|
|
3
|
+
export declare const ProteusErrors: {
|
|
4
|
+
readonly InvalidMessage: 201;
|
|
5
|
+
readonly RemoteIdentityChanged: 204;
|
|
6
|
+
readonly InvalidSignature: 207;
|
|
7
|
+
readonly Unknown: 999;
|
|
8
|
+
};
|
|
9
|
+
type SenderInfo = {
|
|
5
10
|
clientId: string;
|
|
6
11
|
userId: QualifiedId;
|
|
7
|
-
}
|
|
8
|
-
export
|
|
12
|
+
};
|
|
13
|
+
export declare const generateDecryptionError: (senderInfo: SenderInfo, error: any) => DecryptionError;
|
|
14
|
+
export {};
|
|
9
15
|
//# sourceMappingURL=DecryptionErrorGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecryptionErrorGenerator.d.ts","sourceRoot":"","sources":["../../../../../src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"DecryptionErrorGenerator.d.ts","sourceRoot":"","sources":["../../../../../src/messagingProtocols/proteus/ProteusService/DecryptionErrorGenerator/DecryptionErrorGenerator.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAEzD,OAAO,EAAC,eAAe,EAAC,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAoCX,KAAK,UAAU,GAAG;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAC,CAAC;AAC1D,eAAO,MAAM,uBAAuB,eAAgB,UAAU,SAAS,GAAG,KAAG,eAO5E,CAAC"}
|
|
@@ -18,32 +18,43 @@
|
|
|
18
18
|
*
|
|
19
19
|
*/
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.generateDecryptionError = void 0;
|
|
21
|
+
exports.generateDecryptionError = exports.ProteusErrors = void 0;
|
|
22
22
|
const DecryptionError_1 = require("../../../../errors/DecryptionError");
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
exports.ProteusErrors = {
|
|
24
|
+
InvalidMessage: 201,
|
|
25
|
+
RemoteIdentityChanged: 204,
|
|
26
|
+
InvalidSignature: 207,
|
|
27
|
+
Unknown: 999,
|
|
28
|
+
};
|
|
29
|
+
const CoreCryptoErrorMapping = {
|
|
30
|
+
InvalidMessage: exports.ProteusErrors.InvalidMessage,
|
|
31
|
+
RemoteIdentityChanged: exports.ProteusErrors.RemoteIdentityChanged,
|
|
32
|
+
InvalidSignature: exports.ProteusErrors.InvalidSignature,
|
|
33
|
+
Unknown: exports.ProteusErrors.Unknown,
|
|
34
|
+
};
|
|
35
|
+
const mapCoreCryptoError = (error) => {
|
|
25
36
|
var _a;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
message = `Session with user '${remoteUserId}' (${remoteClientId}) is broken.\nReset the session for possible fix.`;
|
|
42
|
-
}
|
|
43
|
-
else if (isRemoteIdentityChanged) {
|
|
44
|
-
message = `Remote identity of client '${remoteClientId}' from user '${remoteUserId}' changed`;
|
|
37
|
+
return (_a = CoreCryptoErrorMapping[error.message]) !== null && _a !== void 0 ? _a : exports.ProteusErrors.Unknown;
|
|
38
|
+
};
|
|
39
|
+
const getErrorMessage = (code, userId, clientId) => {
|
|
40
|
+
const sender = `${userId.id} (${clientId})`;
|
|
41
|
+
switch (code) {
|
|
42
|
+
case exports.ProteusErrors.InvalidMessage:
|
|
43
|
+
return `Invalid message from ${sender}`;
|
|
44
|
+
case exports.ProteusErrors.InvalidSignature:
|
|
45
|
+
return `Invalid signature from ${sender}`;
|
|
46
|
+
case exports.ProteusErrors.RemoteIdentityChanged:
|
|
47
|
+
return `Remote identity of ${sender} has changed`;
|
|
48
|
+
case exports.ProteusErrors.Unknown:
|
|
49
|
+
return `Unknown decryption error from ${sender}`;
|
|
50
|
+
default:
|
|
51
|
+
return `Unhandled error code "${code}" from ${sender}`;
|
|
45
52
|
}
|
|
46
|
-
|
|
47
|
-
|
|
53
|
+
};
|
|
54
|
+
const generateDecryptionError = (senderInfo, error) => {
|
|
55
|
+
const { clientId: remoteClientId, userId } = senderInfo;
|
|
56
|
+
const code = mapCoreCryptoError(error);
|
|
57
|
+
const message = getErrorMessage(code, userId, remoteClientId);
|
|
58
|
+
return new DecryptionError_1.DecryptionError(message, code);
|
|
48
59
|
};
|
|
49
60
|
exports.generateDecryptionError = generateDecryptionError;
|
|
@@ -20,14 +20,30 @@
|
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
const DecryptionErrorGenerator_1 = require("./DecryptionErrorGenerator");
|
|
22
22
|
const DecryptionError_1 = require("../../../../errors/DecryptionError");
|
|
23
|
-
const logger = {
|
|
24
|
-
warn: jest.fn(),
|
|
25
|
-
};
|
|
26
23
|
const basePayload = { userId: { id: 'user1', domain: 'domain' }, clientId: 'client1' };
|
|
27
24
|
describe('generateDecryptionError', () => {
|
|
28
25
|
it('returns a ProteusError.DecryptError', () => {
|
|
29
|
-
const error = (0, DecryptionErrorGenerator_1.generateDecryptionError)(basePayload, new Error()
|
|
26
|
+
const error = (0, DecryptionErrorGenerator_1.generateDecryptionError)(basePayload, new Error());
|
|
30
27
|
expect(error).toBeInstanceOf(DecryptionError_1.DecryptionError);
|
|
31
|
-
expect(error.message).toBe('Unknown decryption error');
|
|
28
|
+
expect(error.message).toBe('Unknown decryption error from user1 (client1)');
|
|
29
|
+
expect(error.code).toBe(DecryptionErrorGenerator_1.ProteusErrors.Unknown);
|
|
30
|
+
});
|
|
31
|
+
it('handles remote identity changed', () => {
|
|
32
|
+
const error = (0, DecryptionErrorGenerator_1.generateDecryptionError)(basePayload, new Error('RemoteIdentityChanged'));
|
|
33
|
+
expect(error).toBeInstanceOf(DecryptionError_1.DecryptionError);
|
|
34
|
+
expect(error.message).toBe('Remote identity of user1 (client1) has changed');
|
|
35
|
+
expect(error.code).toBe(DecryptionErrorGenerator_1.ProteusErrors.RemoteIdentityChanged);
|
|
36
|
+
});
|
|
37
|
+
it('handles invalid message', () => {
|
|
38
|
+
const error = (0, DecryptionErrorGenerator_1.generateDecryptionError)(basePayload, new Error('InvalidMessage'));
|
|
39
|
+
expect(error).toBeInstanceOf(DecryptionError_1.DecryptionError);
|
|
40
|
+
expect(error.message).toBe('Invalid message from user1 (client1)');
|
|
41
|
+
expect(error.code).toBe(DecryptionErrorGenerator_1.ProteusErrors.InvalidMessage);
|
|
42
|
+
});
|
|
43
|
+
it('handles invalid signature', () => {
|
|
44
|
+
const error = (0, DecryptionErrorGenerator_1.generateDecryptionError)(basePayload, new Error('InvalidSignature'));
|
|
45
|
+
expect(error).toBeInstanceOf(DecryptionError_1.DecryptionError);
|
|
46
|
+
expect(error.message).toBe('Invalid signature from user1 (client1)');
|
|
47
|
+
expect(error.code).toBe(DecryptionErrorGenerator_1.ProteusErrors.InvalidSignature);
|
|
32
48
|
});
|
|
33
49
|
});
|
|
@@ -162,7 +162,7 @@ class ProteusService {
|
|
|
162
162
|
return decryptedMessage;
|
|
163
163
|
}
|
|
164
164
|
catch (error) {
|
|
165
|
-
throw (0, DecryptionErrorGenerator_1.generateDecryptionError)({ userId, clientId }, error
|
|
165
|
+
throw (0, DecryptionErrorGenerator_1.generateDecryptionError)({ userId, clientId }, error);
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
async encrypt(plainText, recipients, domain = '') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/messagingProtocols/proteus/ProteusService/index.ts"],"names":[],"mappings":"AAmBA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/messagingProtocols/proteus/ProteusService/index.ts"],"names":[],"mappings":"AAmBA,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC"}
|
|
@@ -32,6 +32,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
32
32
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
33
33
|
};
|
|
34
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.ProteusErrors = void 0;
|
|
35
36
|
__exportStar(require("./ProteusService"), exports);
|
|
36
37
|
__exportStar(require("../Utility"), exports);
|
|
37
38
|
__exportStar(require("./ProteusService.types"), exports);
|
|
39
|
+
var DecryptionErrorGenerator_1 = require("./DecryptionErrorGenerator");
|
|
40
|
+
Object.defineProperty(exports, "ProteusErrors", { enumerable: true, get: function () { return DecryptionErrorGenerator_1.ProteusErrors; } });
|