jagproject 26.3.23 → 26.3.26
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/WAProto/GenerateStatics.sh +3 -4
- package/WAProto/WAProto.proto +1215 -511
- package/WAProto/fix-imports.js +73 -0
- package/WAProto/index.d.ts +14017 -0
- package/WAProto/index.js +64857 -145167
- package/engine-requirements.js +4 -7
- package/lib/Defaults/index.d.ts +74 -0
- package/lib/Defaults/index.js +49 -35
- package/lib/Defaults/phonenumber-mcc.json +223 -0
- package/lib/Defaults/wileys-version.json +2 -2
- package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
- package/lib/Signal/Group/group-session-builder.d.ts +15 -0
- package/lib/Signal/Group/group-session-builder.js +5 -3
- package/lib/Signal/Group/group_cipher.d.ts +17 -0
- package/lib/Signal/Group/group_cipher.js +35 -46
- package/lib/Signal/Group/index.d.ts +12 -0
- package/lib/Signal/Group/index.js +21 -21
- package/lib/Signal/Group/keyhelper.d.ts +11 -0
- package/lib/Signal/Group/keyhelper.js +2 -2
- package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
- package/lib/Signal/Group/sender-chain-key.js +5 -10
- package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
- package/lib/Signal/Group/sender-key-distribution-message.js +7 -7
- package/lib/Signal/Group/sender-key-message.d.ts +19 -0
- package/lib/Signal/Group/sender-key-message.js +8 -8
- package/lib/Signal/Group/sender-key-name.d.ts +18 -0
- package/lib/Signal/Group/sender-key-record.d.ts +31 -0
- package/lib/Signal/Group/sender-key-record.js +7 -16
- package/lib/Signal/Group/sender-key-state.d.ts +39 -0
- package/lib/Signal/Group/sender-key-state.js +25 -37
- package/lib/Signal/Group/sender-message-key.d.ts +12 -0
- package/lib/Signal/Group/sender-message-key.js +2 -2
- package/lib/Signal/libsignal.d.ts +5 -0
- package/lib/Signal/libsignal.js +358 -54
- package/lib/Signal/lid-mapping.d.ts +19 -0
- package/lib/Signal/lid-mapping.js +274 -0
- package/lib/Socket/Client/index.d.ts +3 -0
- package/lib/Socket/Client/index.js +2 -2
- package/lib/Socket/Client/types.d.ts +16 -0
- package/lib/Socket/Client/types.js +1 -0
- package/lib/Socket/Client/websocket.d.ts +13 -0
- package/lib/Socket/Client/websocket.js +18 -30
- package/lib/Socket/business.d.ts +202 -0
- package/lib/Socket/business.js +160 -38
- package/lib/Socket/chats.d.ts +111 -0
- package/lib/Socket/chats.js +497 -314
- package/lib/Socket/communities.d.ts +258 -0
- package/lib/Socket/communities.js +438 -0
- package/lib/Socket/community.js +333 -0
- package/lib/Socket/groups.d.ts +150 -0
- package/lib/Socket/groups.js +229 -91
- package/lib/Socket/index.d.ts +245 -0
- package/lib/Socket/index.js +9 -6
- package/lib/Socket/messages-recv.d.ts +187 -0
- package/lib/Socket/messages-recv.js +1105 -501
- package/lib/Socket/messages-send.d.ts +183 -0
- package/lib/Socket/messages-send.js +1181 -501
- package/lib/Socket/mex.d.ts +3 -0
- package/lib/Socket/mex.js +45 -0
- package/lib/Socket/newsletter.d.ts +160 -0
- package/lib/Socket/newsletter.js +227 -200
- package/lib/Socket/socket.d.ts +55 -0
- package/lib/Socket/socket.js +507 -206
- package/lib/Socket/usync.js +6 -6
- package/lib/Store/index.js +17 -5
- package/lib/Store/make-cache-manager-store.js +83 -0
- package/lib/Store/make-in-memory-store.js +48 -89
- package/lib/Store/make-ordered-dictionary.js +1 -1
- package/lib/Types/Auth.d.ts +116 -0
- package/lib/Types/Bussines.d.ts +25 -0
- package/lib/Types/Bussines.js +2 -0
- package/lib/Types/Call.d.ts +15 -0
- package/lib/Types/Chat.d.ts +123 -0
- package/lib/Types/Chat.js +7 -1
- package/lib/Types/Contact.d.ts +24 -0
- package/lib/Types/Events.d.ts +237 -0
- package/lib/Types/Events.js +1 -0
- package/lib/Types/GroupMetadata.d.ts +67 -0
- package/lib/Types/Label.d.ts +47 -0
- package/lib/Types/Label.js +1 -3
- package/lib/Types/LabelAssociation.d.ts +30 -0
- package/lib/Types/LabelAssociation.js +1 -3
- package/lib/Types/Message.d.ts +305 -0
- package/lib/Types/Message.js +9 -5
- package/lib/Types/MexUpdates.js +11 -0
- package/lib/Types/Newsletter.d.ts +135 -0
- package/lib/Types/Newsletter.js +36 -11
- package/lib/Types/Product.d.ts +79 -0
- package/lib/Types/Signal.d.ts +76 -0
- package/lib/Types/Signal.js +1 -0
- package/lib/Types/Socket.d.ts +133 -0
- package/lib/Types/Socket.js +1 -0
- package/lib/Types/State.d.ts +39 -0
- package/lib/Types/State.js +12 -0
- package/lib/Types/USync.d.ts +26 -0
- package/lib/Types/USync.js +1 -0
- package/lib/Types/index.d.ts +65 -0
- package/lib/Types/index.js +14 -14
- package/lib/Utils/audioToBuffer.js +31 -0
- package/lib/Utils/auth-utils.d.ts +19 -0
- package/lib/Utils/auth-utils.js +222 -123
- package/lib/Utils/baileys-event-stream.js +60 -0
- package/lib/Utils/bridge-runtime.d.ts +1 -0
- package/lib/Utils/bridge-runtime.js +14 -0
- package/lib/Utils/browser-utils.d.ts +4 -0
- package/lib/Utils/browser-utils.js +38 -29
- package/lib/Utils/business.d.ts +23 -0
- package/lib/Utils/business.js +54 -48
- package/lib/Utils/chat-utils.d.ts +70 -0
- package/lib/Utils/chat-utils.js +284 -189
- package/lib/Utils/crypto.d.ts +37 -0
- package/lib/Utils/crypto.js +16 -41
- package/lib/Utils/decode-wa-message.d.ts +48 -0
- package/lib/Utils/decode-wa-message.js +128 -48
- package/lib/Utils/event-buffer.d.ts +34 -0
- package/lib/Utils/event-buffer.js +124 -62
- package/lib/Utils/generics.d.ts +91 -0
- package/lib/Utils/generics.js +154 -138
- package/lib/Utils/history.d.ts +22 -0
- package/lib/Utils/history.js +77 -34
- package/lib/Utils/identity-change-handler.d.ts +37 -0
- package/lib/Utils/identity-change-handler.js +54 -0
- package/lib/Utils/index.d.ts +22 -0
- package/lib/Utils/index.js +32 -19
- package/lib/Utils/link-preview.d.ts +21 -0
- package/lib/Utils/link-preview.js +12 -17
- package/lib/Utils/logger.d.ts +13 -0
- package/lib/Utils/lt-hash.d.ts +8 -0
- package/lib/Utils/lt-hash.js +2 -43
- package/lib/Utils/make-mutex.d.ts +9 -0
- package/lib/Utils/make-mutex.js +21 -27
- package/lib/Utils/message-retry-manager.d.ts +110 -0
- package/lib/Utils/message-retry-manager.js +143 -45
- package/lib/Utils/messages-media.d.ts +130 -0
- package/lib/Utils/messages-media.js +429 -502
- package/lib/Utils/messages-newsletter.d.ts +84 -0
- package/lib/Utils/messages-newsletter.js +295 -0
- package/lib/Utils/messages.d.ts +92 -0
- package/lib/Utils/messages.js +1025 -674
- package/lib/Utils/noise-handler.d.ts +20 -0
- package/lib/Utils/noise-handler.js +145 -91
- package/lib/Utils/pre-key-manager.d.ts +28 -0
- package/lib/Utils/pre-key-manager.js +112 -0
- package/lib/Utils/process-message.d.ts +60 -0
- package/lib/Utils/process-message.js +316 -184
- package/lib/Utils/reporting-utils.d.ts +11 -0
- package/lib/Utils/reporting-utils.js +262 -0
- package/lib/Utils/resolve-jid.d.ts +43 -0
- package/lib/Utils/resolve-jid.js +95 -0
- package/lib/Utils/rust-bridge-shim.d.ts +22 -0
- package/lib/Utils/rust-bridge-shim.js +70 -0
- package/lib/Utils/serial-task-queue.js +29 -0
- package/lib/Utils/signal.d.ts +34 -0
- package/lib/Utils/signal.js +56 -39
- package/lib/Utils/streamToBuffer.js +17 -0
- package/lib/Utils/sync-action-utils.d.ts +19 -0
- package/lib/Utils/sync-action-utils.js +52 -0
- package/lib/Utils/tc-token-utils.d.ts +12 -0
- package/lib/Utils/tc-token-utils.js +20 -0
- package/lib/Utils/use-mongo-file-auth-state.js +71 -0
- package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
- package/lib/Utils/use-multi-file-auth-state.js +11 -12
- package/lib/Utils/use-single-file-auth-state.js +73 -0
- package/lib/Utils/validate-connection.d.ts +11 -0
- package/lib/Utils/validate-connection.js +59 -82
- package/lib/Utils/wileys-event-stream.js +1 -61
- package/lib/WABinary/constants.d.ts +28 -0
- package/lib/WABinary/decode.d.ts +7 -0
- package/lib/WABinary/decode.js +39 -4
- package/lib/WABinary/encode.d.ts +3 -0
- package/lib/WABinary/encode.js +17 -11
- package/lib/WABinary/generic-utils.d.ts +15 -0
- package/lib/WABinary/generic-utils.js +46 -18
- package/lib/WABinary/index.d.ts +6 -0
- package/lib/WABinary/index.js +9 -5
- package/lib/WABinary/jid-utils.d.ts +48 -0
- package/lib/WABinary/jid-utils.js +67 -37
- package/lib/WABinary/types.d.ts +19 -0
- package/lib/WABinary/types.js +34 -0
- package/lib/WAM/BinaryInfo.d.ts +9 -0
- package/lib/WAM/constants.d.ts +40 -0
- package/lib/WAM/constants.js +19183 -11678
- package/lib/WAM/encode.d.ts +3 -0
- package/lib/WAM/encode.js +15 -17
- package/lib/WAM/index.d.ts +4 -0
- package/lib/WAM/index.js +3 -3
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +6 -6
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +9 -9
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +6 -6
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +7 -8
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +18 -17
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +11 -3
- package/lib/WAUSync/Protocols/index.d.ts +5 -0
- package/lib/WAUSync/Protocols/index.js +6 -4
- package/lib/WAUSync/USyncQuery.d.ts +29 -0
- package/lib/WAUSync/USyncQuery.js +38 -30
- package/lib/WAUSync/USyncUser.d.ts +13 -0
- package/lib/WAUSync/index.d.ts +4 -0
- package/lib/WAUSync/index.js +3 -3
- package/lib/index.d.ts +12 -0
- package/lib/index.js +3 -5
- package/package.json +7 -4
- package/LICENSE +0 -21
|
@@ -34,24 +34,24 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.keyhelper = exports.CiphertextMessage = exports.SenderChainKey = exports.SenderMessageKey = exports.SenderKeyMessage = exports.SenderKeyState = exports.GroupCipher = exports.SenderKeyName = exports.SenderKeyRecord = exports.SenderKeyDistributionMessage = exports.GroupSessionBuilder = void 0;
|
|
37
|
-
var
|
|
38
|
-
Object.defineProperty(exports, "GroupSessionBuilder", { enumerable: true, get: function () { return
|
|
39
|
-
var
|
|
40
|
-
Object.defineProperty(exports, "SenderKeyDistributionMessage", { enumerable: true, get: function () { return
|
|
41
|
-
var
|
|
42
|
-
Object.defineProperty(exports, "SenderKeyRecord", { enumerable: true, get: function () { return
|
|
43
|
-
var
|
|
44
|
-
Object.defineProperty(exports, "SenderKeyName", { enumerable: true, get: function () { return
|
|
45
|
-
var
|
|
46
|
-
Object.defineProperty(exports, "GroupCipher", { enumerable: true, get: function () { return
|
|
47
|
-
var
|
|
48
|
-
Object.defineProperty(exports, "SenderKeyState", { enumerable: true, get: function () { return
|
|
49
|
-
var
|
|
50
|
-
Object.defineProperty(exports, "SenderKeyMessage", { enumerable: true, get: function () { return
|
|
51
|
-
var
|
|
52
|
-
Object.defineProperty(exports, "SenderMessageKey", { enumerable: true, get: function () { return
|
|
53
|
-
var
|
|
54
|
-
Object.defineProperty(exports, "SenderChainKey", { enumerable: true, get: function () { return
|
|
55
|
-
var
|
|
56
|
-
Object.defineProperty(exports, "CiphertextMessage", { enumerable: true, get: function () { return
|
|
57
|
-
exports.keyhelper = __importStar(require("./keyhelper"));
|
|
37
|
+
var group_session_builder_js_1 = require("./group-session-builder.js");
|
|
38
|
+
Object.defineProperty(exports, "GroupSessionBuilder", { enumerable: true, get: function () { return group_session_builder_js_1.GroupSessionBuilder; } });
|
|
39
|
+
var sender_key_distribution_message_js_1 = require("./sender-key-distribution-message.js");
|
|
40
|
+
Object.defineProperty(exports, "SenderKeyDistributionMessage", { enumerable: true, get: function () { return sender_key_distribution_message_js_1.SenderKeyDistributionMessage; } });
|
|
41
|
+
var sender_key_record_js_1 = require("./sender-key-record.js");
|
|
42
|
+
Object.defineProperty(exports, "SenderKeyRecord", { enumerable: true, get: function () { return sender_key_record_js_1.SenderKeyRecord; } });
|
|
43
|
+
var sender_key_name_js_1 = require("./sender-key-name.js");
|
|
44
|
+
Object.defineProperty(exports, "SenderKeyName", { enumerable: true, get: function () { return sender_key_name_js_1.SenderKeyName; } });
|
|
45
|
+
var group_cipher_js_1 = require("./group_cipher.js");
|
|
46
|
+
Object.defineProperty(exports, "GroupCipher", { enumerable: true, get: function () { return group_cipher_js_1.GroupCipher; } });
|
|
47
|
+
var sender_key_state_js_1 = require("./sender-key-state.js");
|
|
48
|
+
Object.defineProperty(exports, "SenderKeyState", { enumerable: true, get: function () { return sender_key_state_js_1.SenderKeyState; } });
|
|
49
|
+
var sender_key_message_js_1 = require("./sender-key-message.js");
|
|
50
|
+
Object.defineProperty(exports, "SenderKeyMessage", { enumerable: true, get: function () { return sender_key_message_js_1.SenderKeyMessage; } });
|
|
51
|
+
var sender_message_key_js_1 = require("./sender-message-key.js");
|
|
52
|
+
Object.defineProperty(exports, "SenderMessageKey", { enumerable: true, get: function () { return sender_message_key_js_1.SenderMessageKey; } });
|
|
53
|
+
var sender_chain_key_js_1 = require("./sender-chain-key.js");
|
|
54
|
+
Object.defineProperty(exports, "SenderChainKey", { enumerable: true, get: function () { return sender_chain_key_js_1.SenderChainKey; } });
|
|
55
|
+
var ciphertext_message_js_1 = require("./ciphertext-message.js");
|
|
56
|
+
Object.defineProperty(exports, "CiphertextMessage", { enumerable: true, get: function () { return ciphertext_message_js_1.CiphertextMessage; } });
|
|
57
|
+
exports.keyhelper = __importStar(require("./keyhelper.js"));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { generateKeyPair } from 'libsignal/src/curve.js';
|
|
2
|
+
type KeyPairType = ReturnType<typeof generateKeyPair>;
|
|
3
|
+
export declare function generateSenderKey(): Buffer;
|
|
4
|
+
export declare function generateSenderKeyId(): number;
|
|
5
|
+
export interface SigningKeyPair {
|
|
6
|
+
public: Buffer;
|
|
7
|
+
private: Buffer;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateSenderSigningKey(key?: KeyPairType): SigningKeyPair;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=keyhelper.d.ts.map
|
|
@@ -37,7 +37,7 @@ exports.generateSenderKey = generateSenderKey;
|
|
|
37
37
|
exports.generateSenderKeyId = generateSenderKeyId;
|
|
38
38
|
exports.generateSenderSigningKey = generateSenderSigningKey;
|
|
39
39
|
const nodeCrypto = __importStar(require("crypto"));
|
|
40
|
-
const
|
|
40
|
+
const curve_js_1 = require("libsignal/src/curve.js");
|
|
41
41
|
function generateSenderKey() {
|
|
42
42
|
return nodeCrypto.randomBytes(32);
|
|
43
43
|
}
|
|
@@ -46,7 +46,7 @@ function generateSenderKeyId() {
|
|
|
46
46
|
}
|
|
47
47
|
function generateSenderSigningKey(key) {
|
|
48
48
|
if (!key) {
|
|
49
|
-
key = (0,
|
|
49
|
+
key = (0, curve_js_1.generateKeyPair)();
|
|
50
50
|
}
|
|
51
51
|
return {
|
|
52
52
|
public: Buffer.from(key.pubKey),
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SenderMessageKey } from './sender-message-key.js';
|
|
2
|
+
export declare class SenderChainKey {
|
|
3
|
+
private readonly MESSAGE_KEY_SEED;
|
|
4
|
+
private readonly CHAIN_KEY_SEED;
|
|
5
|
+
private readonly iteration;
|
|
6
|
+
private readonly chainKey;
|
|
7
|
+
constructor(iteration: number, chainKey: Uint8Array | Buffer);
|
|
8
|
+
getIteration(): number;
|
|
9
|
+
getSenderMessageKey(): SenderMessageKey;
|
|
10
|
+
getNext(): SenderChainKey;
|
|
11
|
+
getSeed(): Uint8Array;
|
|
12
|
+
private getDerivative;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sender-chain-key.d.ts.map
|
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SenderChainKey = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const crypto_js_1 = require("libsignal/src/crypto.js");
|
|
5
|
+
const sender_message_key_js_1 = require("./sender-message-key.js");
|
|
6
6
|
class SenderChainKey {
|
|
7
7
|
constructor(iteration, chainKey) {
|
|
8
8
|
this.MESSAGE_KEY_SEED = Buffer.from([0x01]);
|
|
9
9
|
this.CHAIN_KEY_SEED = Buffer.from([0x02]);
|
|
10
10
|
this.iteration = iteration;
|
|
11
|
-
|
|
12
|
-
this.chainKey = chainKey;
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
this.chainKey = Buffer.from(chainKey || []);
|
|
16
|
-
}
|
|
11
|
+
this.chainKey = Buffer.from(chainKey);
|
|
17
12
|
}
|
|
18
13
|
getIteration() {
|
|
19
14
|
return this.iteration;
|
|
20
15
|
}
|
|
21
16
|
getSenderMessageKey() {
|
|
22
|
-
return new
|
|
17
|
+
return new sender_message_key_js_1.SenderMessageKey(this.iteration, this.getDerivative(this.MESSAGE_KEY_SEED, this.chainKey));
|
|
23
18
|
}
|
|
24
19
|
getNext() {
|
|
25
20
|
return new SenderChainKey(this.iteration + 1, this.getDerivative(this.CHAIN_KEY_SEED, this.chainKey));
|
|
@@ -28,7 +23,7 @@ class SenderChainKey {
|
|
|
28
23
|
return this.chainKey;
|
|
29
24
|
}
|
|
30
25
|
getDerivative(seed, key) {
|
|
31
|
-
return (0,
|
|
26
|
+
return (0, crypto_js_1.calculateMAC)(key, seed);
|
|
32
27
|
}
|
|
33
28
|
}
|
|
34
29
|
exports.SenderChainKey = SenderChainKey;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CiphertextMessage } from './ciphertext-message.js';
|
|
2
|
+
export declare class SenderKeyDistributionMessage extends CiphertextMessage {
|
|
3
|
+
private readonly id;
|
|
4
|
+
private readonly iteration;
|
|
5
|
+
private readonly chainKey;
|
|
6
|
+
private readonly signatureKey;
|
|
7
|
+
private readonly serialized;
|
|
8
|
+
constructor(id?: number | null, iteration?: number | null, chainKey?: Uint8Array | null, signatureKey?: Uint8Array | null, serialized?: Uint8Array | null);
|
|
9
|
+
private intsToByteHighAndLow;
|
|
10
|
+
serialize(): Uint8Array;
|
|
11
|
+
getType(): number;
|
|
12
|
+
getIteration(): number;
|
|
13
|
+
getChainKey(): Uint8Array;
|
|
14
|
+
getSignatureKey(): Uint8Array;
|
|
15
|
+
getId(): number;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=sender-key-distribution-message.d.ts.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SenderKeyDistributionMessage = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
class SenderKeyDistributionMessage extends
|
|
4
|
+
const index_js_1 = require("../../../WAProto/index.js");
|
|
5
|
+
const ciphertext_message_js_1 = require("./ciphertext-message.js");
|
|
6
|
+
class SenderKeyDistributionMessage extends ciphertext_message_js_1.CiphertextMessage {
|
|
7
7
|
constructor(id, iteration, chainKey, signatureKey, serialized) {
|
|
8
8
|
super();
|
|
9
9
|
if (serialized) {
|
|
10
10
|
try {
|
|
11
11
|
const message = serialized.slice(1);
|
|
12
|
-
const distributionMessage =
|
|
12
|
+
const distributionMessage = index_js_1.proto.SenderKeyDistributionMessage.decode(message).toJSON();
|
|
13
13
|
this.serialized = serialized;
|
|
14
14
|
this.id = distributionMessage.id;
|
|
15
15
|
this.iteration = distributionMessage.iteration;
|
|
@@ -32,7 +32,7 @@ class SenderKeyDistributionMessage extends ciphertext_message_1.CiphertextMessag
|
|
|
32
32
|
this.iteration = iteration;
|
|
33
33
|
this.chainKey = chainKey;
|
|
34
34
|
this.signatureKey = signatureKey;
|
|
35
|
-
const message =
|
|
35
|
+
const message = index_js_1.proto.SenderKeyDistributionMessage.encode(index_js_1.proto.SenderKeyDistributionMessage.create({
|
|
36
36
|
id,
|
|
37
37
|
iteration,
|
|
38
38
|
chainKey,
|
|
@@ -54,10 +54,10 @@ class SenderKeyDistributionMessage extends ciphertext_message_1.CiphertextMessag
|
|
|
54
54
|
return this.iteration;
|
|
55
55
|
}
|
|
56
56
|
getChainKey() {
|
|
57
|
-
return
|
|
57
|
+
return this.chainKey;
|
|
58
58
|
}
|
|
59
59
|
getSignatureKey() {
|
|
60
|
-
return
|
|
60
|
+
return this.signatureKey;
|
|
61
61
|
}
|
|
62
62
|
getId() {
|
|
63
63
|
return this.id;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CiphertextMessage } from './ciphertext-message.js';
|
|
2
|
+
export declare class SenderKeyMessage extends CiphertextMessage {
|
|
3
|
+
private readonly SIGNATURE_LENGTH;
|
|
4
|
+
private readonly messageVersion;
|
|
5
|
+
private readonly keyId;
|
|
6
|
+
private readonly iteration;
|
|
7
|
+
private readonly ciphertext;
|
|
8
|
+
private readonly signature;
|
|
9
|
+
private readonly serialized;
|
|
10
|
+
constructor(keyId?: number | null, iteration?: number | null, ciphertext?: Uint8Array | null, signatureKey?: Uint8Array | null, serialized?: Uint8Array | null);
|
|
11
|
+
getKeyId(): number;
|
|
12
|
+
getIteration(): number;
|
|
13
|
+
getCipherText(): Uint8Array;
|
|
14
|
+
verifySignature(signatureKey: Uint8Array): void;
|
|
15
|
+
private getSignature;
|
|
16
|
+
serialize(): Uint8Array;
|
|
17
|
+
getType(): number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sender-key-message.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SenderKeyMessage = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
class SenderKeyMessage extends
|
|
4
|
+
const curve_js_1 = require("libsignal/src/curve.js");
|
|
5
|
+
const index_js_1 = require("../../../WAProto/index.js");
|
|
6
|
+
const ciphertext_message_js_1 = require("./ciphertext-message.js");
|
|
7
|
+
class SenderKeyMessage extends ciphertext_message_js_1.CiphertextMessage {
|
|
8
8
|
constructor(keyId, iteration, ciphertext, signatureKey, serialized) {
|
|
9
9
|
super();
|
|
10
10
|
this.SIGNATURE_LENGTH = 64;
|
|
@@ -12,7 +12,7 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
|
|
|
12
12
|
const version = serialized[0];
|
|
13
13
|
const message = serialized.slice(1, serialized.length - this.SIGNATURE_LENGTH);
|
|
14
14
|
const signature = serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
|
15
|
-
const senderKeyMessage =
|
|
15
|
+
const senderKeyMessage = index_js_1.proto.SenderKeyMessage.decode(message).toJSON();
|
|
16
16
|
this.serialized = serialized;
|
|
17
17
|
this.messageVersion = (version & 0xff) >> 4;
|
|
18
18
|
this.keyId = senderKeyMessage.id;
|
|
@@ -26,7 +26,7 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
|
|
|
26
26
|
else {
|
|
27
27
|
const version = (((this.CURRENT_VERSION << 4) | this.CURRENT_VERSION) & 0xff) % 256;
|
|
28
28
|
const ciphertextBuffer = Buffer.from(ciphertext);
|
|
29
|
-
const message =
|
|
29
|
+
const message = index_js_1.proto.SenderKeyMessage.encode(index_js_1.proto.SenderKeyMessage.create({
|
|
30
30
|
id: keyId,
|
|
31
31
|
iteration: iteration,
|
|
32
32
|
ciphertext: ciphertextBuffer
|
|
@@ -52,12 +52,12 @@ class SenderKeyMessage extends ciphertext_message_1.CiphertextMessage {
|
|
|
52
52
|
verifySignature(signatureKey) {
|
|
53
53
|
const part1 = this.serialized.slice(0, this.serialized.length - this.SIGNATURE_LENGTH);
|
|
54
54
|
const part2 = this.serialized.slice(-1 * this.SIGNATURE_LENGTH);
|
|
55
|
-
const res = (0,
|
|
55
|
+
const res = (0, curve_js_1.verifySignature)(signatureKey, part1, part2);
|
|
56
56
|
if (!res)
|
|
57
57
|
throw new Error('Invalid signature!');
|
|
58
58
|
}
|
|
59
59
|
getSignature(signatureKey, serialized) {
|
|
60
|
-
return Buffer.from((0,
|
|
60
|
+
return Buffer.from((0, curve_js_1.calculateSignature)(signatureKey, serialized));
|
|
61
61
|
}
|
|
62
62
|
serialize() {
|
|
63
63
|
return this.serialized;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Sender {
|
|
2
|
+
id: string;
|
|
3
|
+
deviceId: number;
|
|
4
|
+
toString(): string;
|
|
5
|
+
}
|
|
6
|
+
export declare class SenderKeyName {
|
|
7
|
+
private readonly groupId;
|
|
8
|
+
private readonly sender;
|
|
9
|
+
constructor(groupId: string, sender: Sender);
|
|
10
|
+
getGroupId(): string;
|
|
11
|
+
getSender(): Sender;
|
|
12
|
+
serialize(): string;
|
|
13
|
+
toString(): string;
|
|
14
|
+
equals(other: SenderKeyName | null): boolean;
|
|
15
|
+
hashCode(): number;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=sender-key-name.d.ts.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SenderKeyState } from './sender-key-state.js';
|
|
2
|
+
export interface SenderKeyStateStructure {
|
|
3
|
+
senderKeyId: number;
|
|
4
|
+
senderChainKey: {
|
|
5
|
+
iteration: number;
|
|
6
|
+
seed: Uint8Array;
|
|
7
|
+
};
|
|
8
|
+
senderSigningKey: {
|
|
9
|
+
public: Uint8Array;
|
|
10
|
+
private?: Uint8Array;
|
|
11
|
+
};
|
|
12
|
+
senderMessageKeys: Array<{
|
|
13
|
+
iteration: number;
|
|
14
|
+
seed: Uint8Array;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export declare class SenderKeyRecord {
|
|
18
|
+
private readonly MAX_STATES;
|
|
19
|
+
private readonly senderKeyStates;
|
|
20
|
+
constructor(serialized?: SenderKeyStateStructure[]);
|
|
21
|
+
isEmpty(): boolean;
|
|
22
|
+
getSenderKeyState(keyId?: number): SenderKeyState | undefined;
|
|
23
|
+
addSenderKeyState(id: number, iteration: number, chainKey: Uint8Array, signatureKey: Uint8Array): void;
|
|
24
|
+
setSenderKeyState(id: number, iteration: number, chainKey: Uint8Array, keyPair: {
|
|
25
|
+
public: Uint8Array;
|
|
26
|
+
private: Uint8Array;
|
|
27
|
+
}): void;
|
|
28
|
+
serialize(): SenderKeyStateStructure[];
|
|
29
|
+
static deserialize(data: Uint8Array): SenderKeyRecord;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=sender-key-record.d.ts.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SenderKeyRecord = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const generics_js_1 = require("../../Utils/generics.js");
|
|
5
|
+
const sender_key_state_js_1 = require("./sender-key-state.js");
|
|
6
6
|
class SenderKeyRecord {
|
|
7
7
|
constructor(serialized) {
|
|
8
8
|
this.MAX_STATES = 5;
|
|
9
9
|
this.senderKeyStates = [];
|
|
10
10
|
if (serialized) {
|
|
11
11
|
for (const structure of serialized) {
|
|
12
|
-
this.senderKeyStates.push(new
|
|
12
|
+
this.senderKeyStates.push(new sender_key_state_js_1.SenderKeyState(null, null, null, null, null, null, structure));
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -23,30 +23,21 @@ class SenderKeyRecord {
|
|
|
23
23
|
return this.senderKeyStates.find(state => state.getKeyId() === keyId);
|
|
24
24
|
}
|
|
25
25
|
addSenderKeyState(id, iteration, chainKey, signatureKey) {
|
|
26
|
-
this.senderKeyStates.push(new
|
|
26
|
+
this.senderKeyStates.push(new sender_key_state_js_1.SenderKeyState(id, iteration, chainKey, null, signatureKey));
|
|
27
27
|
if (this.senderKeyStates.length > this.MAX_STATES) {
|
|
28
28
|
this.senderKeyStates.shift();
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
setSenderKeyState(id, iteration, chainKey, keyPair) {
|
|
32
32
|
this.senderKeyStates.length = 0;
|
|
33
|
-
this.senderKeyStates.push(new
|
|
33
|
+
this.senderKeyStates.push(new sender_key_state_js_1.SenderKeyState(id, iteration, chainKey, keyPair));
|
|
34
34
|
}
|
|
35
35
|
serialize() {
|
|
36
36
|
return this.senderKeyStates.map(state => state.getStructure());
|
|
37
37
|
}
|
|
38
38
|
static deserialize(data) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
parsed = JSON.parse(data, generics_1.BufferJSON.reviver);
|
|
42
|
-
}
|
|
43
|
-
else if (data instanceof Uint8Array) {
|
|
44
|
-
const str = Buffer.from(data).toString('utf-8');
|
|
45
|
-
parsed = JSON.parse(str, generics_1.BufferJSON.reviver);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
parsed = data;
|
|
49
|
-
}
|
|
39
|
+
const str = Buffer.from(data).toString('utf-8');
|
|
40
|
+
const parsed = JSON.parse(str, generics_js_1.BufferJSON.reviver);
|
|
50
41
|
return new SenderKeyRecord(parsed);
|
|
51
42
|
}
|
|
52
43
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SenderChainKey } from './sender-chain-key.js';
|
|
2
|
+
import { SenderMessageKey } from './sender-message-key.js';
|
|
3
|
+
interface SenderChainKeyStructure {
|
|
4
|
+
iteration: number;
|
|
5
|
+
seed: Uint8Array;
|
|
6
|
+
}
|
|
7
|
+
interface SenderSigningKeyStructure {
|
|
8
|
+
public: Uint8Array;
|
|
9
|
+
private?: Uint8Array;
|
|
10
|
+
}
|
|
11
|
+
interface SenderMessageKeyStructure {
|
|
12
|
+
iteration: number;
|
|
13
|
+
seed: Uint8Array;
|
|
14
|
+
}
|
|
15
|
+
interface SenderKeyStateStructure {
|
|
16
|
+
senderKeyId: number;
|
|
17
|
+
senderChainKey: SenderChainKeyStructure;
|
|
18
|
+
senderSigningKey: SenderSigningKeyStructure;
|
|
19
|
+
senderMessageKeys: SenderMessageKeyStructure[];
|
|
20
|
+
}
|
|
21
|
+
export declare class SenderKeyState {
|
|
22
|
+
private readonly MAX_MESSAGE_KEYS;
|
|
23
|
+
private readonly senderKeyStateStructure;
|
|
24
|
+
constructor(id?: number | null, iteration?: number | null, chainKey?: Uint8Array | null | string, signatureKeyPair?: {
|
|
25
|
+
public: Uint8Array | string;
|
|
26
|
+
private: Uint8Array | string;
|
|
27
|
+
} | null, signatureKeyPublic?: Uint8Array | string | null, signatureKeyPrivate?: Uint8Array | string | null, senderKeyStateStructure?: SenderKeyStateStructure | null);
|
|
28
|
+
getKeyId(): number;
|
|
29
|
+
getSenderChainKey(): SenderChainKey;
|
|
30
|
+
setSenderChainKey(chainKey: SenderChainKey): void;
|
|
31
|
+
getSigningKeyPublic(): Buffer;
|
|
32
|
+
getSigningKeyPrivate(): Buffer | undefined;
|
|
33
|
+
hasSenderMessageKey(iteration: number): boolean;
|
|
34
|
+
addSenderMessageKey(senderMessageKey: SenderMessageKey): void;
|
|
35
|
+
removeSenderMessageKey(iteration: number): SenderMessageKey | null;
|
|
36
|
+
getStructure(): SenderKeyStateStructure;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=sender-key-state.d.ts.map
|
|
@@ -1,37 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SenderKeyState = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const sender_chain_key_js_1 = require("./sender-chain-key.js");
|
|
5
|
+
const sender_message_key_js_1 = require("./sender-message-key.js");
|
|
6
6
|
class SenderKeyState {
|
|
7
7
|
constructor(id, iteration, chainKey, signatureKeyPair, signatureKeyPublic, signatureKeyPrivate, senderKeyStateStructure) {
|
|
8
8
|
this.MAX_MESSAGE_KEYS = 2000;
|
|
9
9
|
if (senderKeyStateStructure) {
|
|
10
|
-
this.senderKeyStateStructure =
|
|
10
|
+
this.senderKeyStateStructure = {
|
|
11
|
+
...senderKeyStateStructure,
|
|
12
|
+
senderMessageKeys: Array.isArray(senderKeyStateStructure.senderMessageKeys)
|
|
13
|
+
? senderKeyStateStructure.senderMessageKeys
|
|
14
|
+
: []
|
|
15
|
+
};
|
|
11
16
|
}
|
|
12
17
|
else {
|
|
13
18
|
if (signatureKeyPair) {
|
|
14
19
|
signatureKeyPublic = signatureKeyPair.public;
|
|
15
20
|
signatureKeyPrivate = signatureKeyPair.private;
|
|
16
21
|
}
|
|
17
|
-
chainKey = typeof chainKey === 'string' ? Buffer.from(chainKey, 'base64') : chainKey;
|
|
18
|
-
const senderChainKeyStructure = {
|
|
19
|
-
iteration: iteration || 0,
|
|
20
|
-
seed: chainKey || Buffer.alloc(0)
|
|
21
|
-
};
|
|
22
|
-
const signingKeyStructure = {
|
|
23
|
-
public: typeof signatureKeyPublic === 'string'
|
|
24
|
-
? Buffer.from(signatureKeyPublic, 'base64')
|
|
25
|
-
: signatureKeyPublic || Buffer.alloc(0)
|
|
26
|
-
};
|
|
27
|
-
if (signatureKeyPrivate) {
|
|
28
|
-
signingKeyStructure.private =
|
|
29
|
-
typeof signatureKeyPrivate === 'string' ? Buffer.from(signatureKeyPrivate, 'base64') : signatureKeyPrivate;
|
|
30
|
-
}
|
|
31
22
|
this.senderKeyStateStructure = {
|
|
32
23
|
senderKeyId: id || 0,
|
|
33
|
-
senderChainKey:
|
|
34
|
-
|
|
24
|
+
senderChainKey: {
|
|
25
|
+
iteration: iteration || 0,
|
|
26
|
+
seed: Buffer.from(chainKey || [])
|
|
27
|
+
},
|
|
28
|
+
senderSigningKey: {
|
|
29
|
+
public: Buffer.from(signatureKeyPublic || []),
|
|
30
|
+
private: Buffer.from(signatureKeyPrivate || [])
|
|
31
|
+
},
|
|
35
32
|
senderMessageKeys: []
|
|
36
33
|
};
|
|
37
34
|
}
|
|
@@ -40,7 +37,7 @@ class SenderKeyState {
|
|
|
40
37
|
return this.senderKeyStateStructure.senderKeyId;
|
|
41
38
|
}
|
|
42
39
|
getSenderChainKey() {
|
|
43
|
-
return new
|
|
40
|
+
return new sender_chain_key_js_1.SenderChainKey(this.senderKeyStateStructure.senderChainKey.iteration, this.senderKeyStateStructure.senderChainKey.seed);
|
|
44
41
|
}
|
|
45
42
|
setSenderChainKey(chainKey) {
|
|
46
43
|
this.senderKeyStateStructure.senderChainKey = {
|
|
@@ -49,26 +46,17 @@ class SenderKeyState {
|
|
|
49
46
|
};
|
|
50
47
|
}
|
|
51
48
|
getSigningKeyPublic() {
|
|
52
|
-
const publicKey = this.senderKeyStateStructure.senderSigningKey.public;
|
|
53
|
-
if (publicKey
|
|
54
|
-
|
|
49
|
+
const publicKey = Buffer.from(this.senderKeyStateStructure.senderSigningKey.public);
|
|
50
|
+
if (publicKey.length === 32) {
|
|
51
|
+
const fixed = Buffer.alloc(33);
|
|
52
|
+
fixed[0] = 0x05;
|
|
53
|
+
publicKey.copy(fixed, 1);
|
|
54
|
+
return fixed;
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
return Buffer.from(publicKey, 'base64');
|
|
58
|
-
}
|
|
59
|
-
return Buffer.from(publicKey || []);
|
|
56
|
+
return publicKey;
|
|
60
57
|
}
|
|
61
58
|
getSigningKeyPrivate() {
|
|
62
59
|
const privateKey = this.senderKeyStateStructure.senderSigningKey.private;
|
|
63
|
-
if (!privateKey) {
|
|
64
|
-
return undefined;
|
|
65
|
-
}
|
|
66
|
-
if (privateKey instanceof Buffer) {
|
|
67
|
-
return privateKey;
|
|
68
|
-
}
|
|
69
|
-
else if (typeof privateKey === 'string') {
|
|
70
|
-
return Buffer.from(privateKey, 'base64');
|
|
71
|
-
}
|
|
72
60
|
return Buffer.from(privateKey || []);
|
|
73
61
|
}
|
|
74
62
|
hasSenderMessageKey(iteration) {
|
|
@@ -88,7 +76,7 @@ class SenderKeyState {
|
|
|
88
76
|
if (index !== -1) {
|
|
89
77
|
const messageKey = this.senderKeyStateStructure.senderMessageKeys[index];
|
|
90
78
|
this.senderKeyStateStructure.senderMessageKeys.splice(index, 1);
|
|
91
|
-
return new
|
|
79
|
+
return new sender_message_key_js_1.SenderMessageKey(messageKey.iteration, messageKey.seed);
|
|
92
80
|
}
|
|
93
81
|
return null;
|
|
94
82
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class SenderMessageKey {
|
|
2
|
+
private readonly iteration;
|
|
3
|
+
private readonly iv;
|
|
4
|
+
private readonly cipherKey;
|
|
5
|
+
private readonly seed;
|
|
6
|
+
constructor(iteration: number, seed: Uint8Array);
|
|
7
|
+
getIteration(): number;
|
|
8
|
+
getIv(): Uint8Array;
|
|
9
|
+
getCipherKey(): Uint8Array;
|
|
10
|
+
getSeed(): Uint8Array;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=sender-message-key.d.ts.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SenderMessageKey = void 0;
|
|
4
|
-
const
|
|
4
|
+
const crypto_js_1 = require("libsignal/src/crypto.js");
|
|
5
5
|
class SenderMessageKey {
|
|
6
6
|
constructor(iteration, seed) {
|
|
7
|
-
const derivative = (0,
|
|
7
|
+
const derivative = (0, crypto_js_1.deriveSecrets)(seed, Buffer.alloc(32), Buffer.from('WhisperGroup'));
|
|
8
8
|
const keys = new Uint8Array(32);
|
|
9
9
|
keys.set(new Uint8Array(derivative[0].slice(16)));
|
|
10
10
|
keys.set(new Uint8Array(derivative[1].slice(0, 16)), 16);
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { LIDMapping, SignalAuthState } from '../Types/index.js';
|
|
2
|
+
import type { SignalRepositoryWithLIDStore } from '../Types/Signal.js';
|
|
3
|
+
import type { ILogger } from '../Utils/logger.js';
|
|
4
|
+
export declare function makeLibSignalRepository(auth: SignalAuthState, logger: ILogger, pnToLIDFunc?: (jids: string[]) => Promise<LIDMapping[] | undefined>): SignalRepositoryWithLIDStore;
|
|
5
|
+
//# sourceMappingURL=libsignal.d.ts.map
|