asepxyz12 1.0.0 → 1.0.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.
Files changed (68) hide show
  1. package/lib/Defaults/index.js +147 -36
  2. package/lib/Signal/Group/ciphertext-message.js +2 -1
  3. package/lib/Signal/Group/group-session-builder.js +43 -25
  4. package/lib/Signal/Group/group_cipher.js +58 -66
  5. package/lib/Signal/Group/index.js +54 -39
  6. package/lib/Signal/Group/keyhelper.js +45 -11
  7. package/lib/Signal/Group/sender-chain-key.js +15 -15
  8. package/lib/Signal/Group/sender-key-distribution-message.js +23 -23
  9. package/lib/Signal/Group/sender-key-name.js +8 -6
  10. package/lib/Signal/Group/sender-key-record.js +20 -12
  11. package/lib/Signal/Group/sender-key-state.js +48 -49
  12. package/lib/Signal/Group/sender-message-key.js +4 -3
  13. package/lib/Signal/libsignal.js +206 -210
  14. package/lib/Signal/lid-mapping.js +15 -13
  15. package/lib/Socket/business.js +239 -220
  16. package/lib/Socket/chats.js +885 -614
  17. package/lib/Socket/groups.js +211 -251
  18. package/lib/Socket/index.js +1 -1
  19. package/lib/Socket/messages-recv.js +752 -1116
  20. package/lib/Socket/messages-send.js +674 -1243
  21. package/lib/Socket/newsletter.js +410 -145
  22. package/lib/Socket/socket.js +490 -662
  23. package/lib/Socket/usync.js +70 -0
  24. package/lib/Store/make-cache-manager-store.js +36 -30
  25. package/lib/Store/make-in-memory-store.js +238 -234
  26. package/lib/Store/object-repository.js +2 -1
  27. package/lib/Types/Label.js +25 -23
  28. package/lib/Types/LabelAssociation.js +7 -2
  29. package/lib/Types/Message.js +8 -9
  30. package/lib/Types/index.js +32 -47
  31. package/lib/Utils/auth-utils.js +160 -210
  32. package/lib/Utils/baileys-event-stream.js +63 -0
  33. package/lib/Utils/bot-toolkit.js +455 -0
  34. package/lib/Utils/business.js +148 -147
  35. package/lib/Utils/chat-utils.js +453 -628
  36. package/lib/Utils/crypto.js +100 -93
  37. package/lib/Utils/decode-wa-message.js +185 -204
  38. package/lib/Utils/generics.js +376 -260
  39. package/lib/Utils/history.js +46 -50
  40. package/lib/Utils/index.js +2 -0
  41. package/lib/Utils/link-preview.js +63 -46
  42. package/lib/Utils/logger.js +5 -2
  43. package/lib/Utils/lt-hash.js +31 -25
  44. package/lib/Utils/make-mutex.js +30 -20
  45. package/lib/Utils/messages-media.js +586 -573
  46. package/lib/Utils/messages.js +463 -1584
  47. package/lib/Utils/noise-handler.js +53 -55
  48. package/lib/Utils/process-message.js +213 -706
  49. package/lib/Utils/signal.js +102 -132
  50. package/lib/Utils/use-multi-file-auth-state.js +63 -43
  51. package/lib/WABinary/constants.js +17 -1285
  52. package/lib/WABinary/decode.js +80 -61
  53. package/lib/WABinary/encode.js +202 -149
  54. package/lib/WABinary/generic-utils.js +192 -76
  55. package/lib/WABinary/jid-utils.js +91 -70
  56. package/lib/WAM/BinaryInfo.js +2 -1
  57. package/lib/WAM/encode.js +51 -44
  58. package/lib/WAUSync/Protocols/USyncContactProtocol.js +23 -21
  59. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +33 -26
  60. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +16 -11
  61. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +23 -13
  62. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +53 -0
  63. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +24 -0
  64. package/lib/WAUSync/Protocols/index.js +2 -0
  65. package/lib/WAUSync/USyncQuery.js +48 -56
  66. package/lib/WAUSync/USyncUser.js +8 -9
  67. package/lib/WAUSync/index.js +14 -29
  68. package/package.json +3 -3
@@ -1,36 +1,147 @@
1
- "use strict";
2
- const __createBinding =
3
- (this && this.__createBinding) ||
4
- (Object.create
5
- ? function (o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- let desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = {
10
- enumerable: true,
11
- get: function () {
12
- return m[k];
13
- },
14
- };
15
- }
16
- Object.defineProperty(o, k2, desc);
17
- }
18
- : function (o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- });
22
- const __exportStar =
23
- (this && this.__exportStar) ||
24
- function (m, exports) {
25
- for (var p in m) {
26
- if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) {
27
- __createBinding(exports, m, p);
28
- }
29
- }
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- __exportStar(require("./connection"), exports);
33
- __exportStar(require("./constants"), exports);
34
- __exportStar(require("./history"), exports);
35
- __exportStar(require("./media"), exports);
36
- __exportStar(require("./prefix"), exports);
1
+ var __importDefault = this && this.__importDefault || function (a) {
2
+ return a && a.__esModule ? a : { "default": a }
3
+ };
4
+
5
+ Object.defineProperty(exports, "__esModule", { value: !0 });
6
+
7
+ exports.DEFAULT_CACHE_TTLS =
8
+ exports.INITIAL_PREKEY_COUNT =
9
+ exports.MIN_PREKEY_COUNT =
10
+ exports.MEDIA_KEYS =
11
+ exports.MEDIA_HKDF_KEY_MAPPING =
12
+ exports.MEDIA_PATH_MAP =
13
+ exports.DEFAULT_CONNECTION_CONFIG =
14
+ exports.PROCESSABLE_HISTORY_TYPES =
15
+ exports.WA_CERT_DETAILS =
16
+ exports.URL_REGEX =
17
+ exports.NOISE_WA_HEADER =
18
+ exports.KEY_BUNDLE_TYPE =
19
+ exports.DICT_VERSION =
20
+ exports.NOISE_MODE =
21
+ exports.WA_DEFAULT_EPHEMERAL =
22
+ exports.PHONE_CONNECTION_CB =
23
+ exports.DEF_TAG_PREFIX =
24
+ exports.DEF_CALLBACK_PREFIX =
25
+ exports.DEFAULT_ORIGIN =
26
+ exports.UNAUTHORIZED_CODES =
27
+ void 0;
28
+
29
+ const crypto_1 = require("crypto");
30
+ const WAProto_1 = require("../../WAProto"),
31
+ libsignal_1 = require("../Signal/libsignal"),
32
+ Utils_1 = require("../Utils"),
33
+ logger_1 = __importDefault(require("../Utils/logger")),
34
+ baileys_version_json_1 = require("./baileys-version.json"),
35
+ phonenumber_mcc_json_1 = __importDefault(require("./phonenumber-mcc.json"));
36
+
37
+ exports.UNAUTHORIZED_CODES = [401, 403, 419];
38
+ exports.version = [2, 3000, 1027934701];
39
+ exports.PHONENUMBER_MCC = phonenumber_mcc_json_1.default;
40
+ exports.DEFAULT_ORIGIN = "https://web.whatsapp.com";
41
+ exports.MOBILE_ENDPOINT = 'g.whatsapp.net';
42
+ exports.MOBILE_PORT = 443;
43
+ exports.DEF_CALLBACK_PREFIX = "CB:";
44
+ exports.DEF_TAG_PREFIX = "TAG:";
45
+ exports.PHONE_CONNECTION_CB = "CB:Pong";
46
+ exports.WA_DEFAULT_EPHEMERAL = 604800;
47
+ const WA_VERSION = '2.25.23.24';
48
+ const WA_VERSION_HASH = (0, crypto_1.createHash)('md5').update(WA_VERSION).digest('hex');
49
+ exports.MOBILE_TOKEN = Buffer.from('0a1mLfGUIBVrMKF1RdvLI5lkRBvof6vn0fD2QRSM' + WA_VERSION_HASH);
50
+ exports.MOBILE_REGISTRATION_ENDPOINT = 'https://v.whatsapp.net/v2';
51
+ exports.MOBILE_USERAGENT = `WhatsApp/${WA_VERSION} iOS/17.5.1 Device/Apple-iPhone_13`;
52
+ exports.REGISTRATION_PUBLIC_KEY = Buffer.from([
53
+ 5, 142, 140, 15, 116, 195, 235, 197, 215, 166, 134, 92, 108, 60, 132, 56, 86, 176, 97, 33, 204, 232, 234, 119, 77,
54
+ 34, 251, 111, 18, 37, 18, 48, 45,
55
+ ]);
56
+ exports.NOISE_MODE = "Noise_XX_25519_AESGCM_SHA256\x00\x00\x00\x00";
57
+ exports.DICT_VERSION = 2;
58
+ exports.KEY_BUNDLE_TYPE = Buffer.from([5]);
59
+ exports.NOISE_WA_HEADER = Buffer.from([87, 65, 6, exports.DICT_VERSION]);
60
+ exports.PROTOCOL_VERSION = [5, 2];
61
+ exports.MOBILE_NOISE_HEADER = Buffer.concat([Buffer.from('WA'), Buffer.from(exports.PROTOCOL_VERSION)]);
62
+
63
+ exports.URL_REGEX = /https:\/\/(?![^:@\/\s]+:[^:@\/\s]+@)[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(:\d+)?(\/[^\s]*)?/g;
64
+ exports.WA_CERT_DETAILS = { SERIAL: 0 };
65
+
66
+ exports.PROCESSABLE_HISTORY_TYPES = [
67
+ WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.INITIAL_BOOTSTRAP,
68
+ WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.PUSH_NAME,
69
+ WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.RECENT,
70
+ WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.FULL,
71
+ WAProto_1.proto.Message.HistorySyncNotification.HistorySyncType.ON_DEMAND
72
+ ];
73
+
74
+ exports.DEFAULT_CONNECTION_CONFIG = {
75
+ version: baileys_version_json_1.version,
76
+ browser: Utils_1.Browsers("Chrome"),
77
+ waWebSocketUrl: "wss://web.whatsapp.com/ws/chat",
78
+ connectTimeoutMs: 2E4,
79
+ keepAliveIntervalMs: 3E4,
80
+ logger: logger_1.default.child({ class: "baileys" }),
81
+ printQRInTerminal: !1,
82
+ emitOwnEvents: !0,
83
+ defaultQueryTimeoutMs: 6E4,
84
+ customUploadHosts: [],
85
+ retryRequestDelayMs: 250,
86
+ maxMsgRetryCount: 5,
87
+ fireInitQueries: !0,
88
+ auth: void 0,
89
+ markOnlineOnConnect: !0,
90
+ syncFullHistory: !1,
91
+ patchMessageBeforeSending: a => a,
92
+ shouldSyncHistoryMessage: () => !0,
93
+ shouldIgnoreJid: () => !1,
94
+ linkPreviewImageThumbnailWidth: 192,
95
+ transactionOpts: { maxCommitRetries: 10, delayBetweenTriesMs: 3E3 },
96
+ generateHighQualityLinkPreview: !1,
97
+ options: {},
98
+ appStateMacVerification: { patch: !1, snapshot: !1 },
99
+ countryCode: "US",
100
+ getMessage: async () => { },
101
+ cachedGroupMetadata: async () => { },
102
+ makeSignalRepository: libsignal_1.makeLibSignalRepository
103
+ };
104
+
105
+ exports.MEDIA_PATH_MAP = {
106
+ image: "/mms/image",
107
+ video: "/mms/video",
108
+ document: "/mms/document",
109
+ audio: "/mms/audio",
110
+ sticker: "/mms/image",
111
+ "thumbnail-link": "/mms/image",
112
+ "product-catalog-image": "/product/image",
113
+ "md-app-state": "",
114
+ "md-msg-hist": "/mms/md-app-state"
115
+ };
116
+
117
+ exports.MEDIA_HKDF_KEY_MAPPING = {
118
+ audio: "Audio",
119
+ document: "Document",
120
+ gif: "Video",
121
+ image: "Image",
122
+ ppic: "",
123
+ product: "Image",
124
+ ptt: "Audio",
125
+ sticker: "Image",
126
+ video: "Video",
127
+ "thumbnail-document": "Document Thumbnail",
128
+ "thumbnail-image": "Image Thumbnail",
129
+ "thumbnail-video": "Video Thumbnail",
130
+ "thumbnail-link": "Link Thumbnail",
131
+ "md-msg-hist": "History",
132
+ "md-app-state": "App State",
133
+ "product-catalog-image": "",
134
+ "payment-bg-image": "Payment Background",
135
+ ptv: "Video"
136
+ };
137
+
138
+ exports.MEDIA_KEYS = Object.keys(exports.MEDIA_PATH_MAP);
139
+ exports.MIN_PREKEY_COUNT = 5;
140
+ exports.INITIAL_PREKEY_COUNT = 30;
141
+
142
+ exports.DEFAULT_CACHE_TTLS = {
143
+ SIGNAL_STORE: 300,
144
+ MSG_RETRY: 3600,
145
+ CALL_OFFER: 300,
146
+ USER_DEVICES: 300
147
+ };
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CiphertextMessage = void 0;
3
4
  class CiphertextMessage {
4
5
  constructor() {
5
6
  this.UNSUPPORTED_VERSION = 1;
@@ -11,4 +12,4 @@ class CiphertextMessage {
11
12
  this.ENCRYPTED_MESSAGE_OVERHEAD = 53;
12
13
  }
13
14
  }
14
- module.exports = { CiphertextMessage: CiphertextMessage };
15
+ exports.CiphertextMessage = CiphertextMessage;
@@ -1,46 +1,64 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const {
4
- generateSenderKey: generateSenderKey,
5
- generateSenderKeyId: generateSenderKeyId,
6
- generateSenderSigningKey: generateSenderSigningKey,
7
- } = require("./keyhelper");
8
- const {
9
- SenderKeyDistributionMessage: SenderKeyDistributionMessage,
10
- } = require("./sender-key-distribution-message");
36
+ exports.GroupSessionBuilder = void 0;
37
+ const keyhelper = __importStar(require("./keyhelper"));
38
+ const sender_key_distribution_message_1 = require("./sender-key-distribution-message");
11
39
  class GroupSessionBuilder {
12
40
  constructor(senderKeyStore) {
13
41
  this.senderKeyStore = senderKeyStore;
14
42
  }
15
43
  async process(senderKeyName, senderKeyDistributionMessage) {
16
44
  const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName);
17
- senderKeyRecord.addSenderKeyState(
18
- senderKeyDistributionMessage.getId(),
19
- senderKeyDistributionMessage.getIteration(),
20
- senderKeyDistributionMessage.getChainKey(),
21
- senderKeyDistributionMessage.getSignatureKey()
22
- );
45
+ senderKeyRecord.addSenderKeyState(senderKeyDistributionMessage.getId(), senderKeyDistributionMessage.getIteration(), senderKeyDistributionMessage.getChainKey(), senderKeyDistributionMessage.getSignatureKey());
23
46
  await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
24
47
  }
25
48
  async create(senderKeyName) {
26
49
  const senderKeyRecord = await this.senderKeyStore.loadSenderKey(senderKeyName);
27
50
  if (senderKeyRecord.isEmpty()) {
28
- const keyId = generateSenderKeyId();
29
- const senderKey = generateSenderKey();
30
- const signingKey = generateSenderSigningKey();
51
+ const keyId = keyhelper.generateSenderKeyId();
52
+ const senderKey = keyhelper.generateSenderKey();
53
+ const signingKey = keyhelper.generateSenderSigningKey();
31
54
  senderKeyRecord.setSenderKeyState(keyId, 0, senderKey, signingKey);
32
55
  await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
33
56
  }
34
57
  const state = senderKeyRecord.getSenderKeyState();
35
58
  if (!state) {
36
- throw new Error("No session state available");
59
+ throw new Error('No session state available');
37
60
  }
38
- return new SenderKeyDistributionMessage(
39
- state.getKeyId(),
40
- state.getSenderChainKey().getIteration(),
41
- state.getSenderChainKey().getSeed(),
42
- state.getSigningKeyPublic()
43
- );
61
+ return new sender_key_distribution_message_1.SenderKeyDistributionMessage(state.getKeyId(), state.getSenderChainKey().getIteration(), state.getSenderChainKey().getSeed(), state.getSigningKeyPublic());
44
62
  }
45
63
  }
46
- module.exports = { GroupSessionBuilder: GroupSessionBuilder };
64
+ exports.GroupSessionBuilder = GroupSessionBuilder;
@@ -1,62 +1,55 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const { decrypt: decrypt, encrypt: encrypt } = require("libsignal/src/crypto");
4
- const { SenderKeyMessage: SenderKeyMessage } = require("./sender-key-message");
6
+ exports.GroupCipher = void 0;
7
+ const crypto_1 = require("libsignal/src/crypto");
8
+ const queue_job_1 = __importDefault(require("./queue-job"));
9
+ const sender_key_message_1 = require("./sender-key-message");
5
10
  class GroupCipher {
6
11
  constructor(senderKeyStore, senderKeyName) {
7
12
  this.senderKeyStore = senderKeyStore;
8
13
  this.senderKeyName = senderKeyName;
9
14
  }
15
+ queueJob(awaitable) {
16
+ return (0, queue_job_1.default)(this.senderKeyName.toString(), awaitable);
17
+ }
10
18
  async encrypt(paddedPlaintext) {
11
- const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName);
12
- if (!record) {
13
- throw new Error("No SenderKeyRecord found for encryption");
14
- }
15
- const senderKeyState = record.getSenderKeyState();
16
- if (!senderKeyState) {
17
- throw new Error("No session to encrypt message");
18
- }
19
- const iteration = senderKeyState.getSenderChainKey().getIteration();
20
- const senderKey = this.getSenderKey(senderKeyState, iteration === 0 ? 0 : iteration + 1);
21
- const ciphertext = await this.getCipherText(
22
- senderKey.getIv(),
23
- senderKey.getCipherKey(),
24
- paddedPlaintext
25
- );
26
- const senderKeyMessage = new SenderKeyMessage(
27
- senderKeyState.getKeyId(),
28
- senderKey.getIteration(),
29
- ciphertext,
30
- senderKeyState.getSigningKeyPrivate()
31
- );
32
- await this.senderKeyStore.storeSenderKey(this.senderKeyName, record);
33
- return senderKeyMessage.serialize();
19
+ return await this.queueJob(async () => {
20
+ const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName);
21
+ if (!record) {
22
+ throw new Error('No SenderKeyRecord found for encryption');
23
+ }
24
+ const senderKeyState = record.getSenderKeyState();
25
+ if (!senderKeyState) {
26
+ throw new Error('No session to encrypt message');
27
+ }
28
+ const iteration = senderKeyState.getSenderChainKey().getIteration();
29
+ const senderKey = this.getSenderKey(senderKeyState, iteration === 0 ? 0 : iteration + 1);
30
+ const ciphertext = await this.getCipherText(senderKey.getIv(), senderKey.getCipherKey(), paddedPlaintext);
31
+ const senderKeyMessage = new sender_key_message_1.SenderKeyMessage(senderKeyState.getKeyId(), senderKey.getIteration(), ciphertext, senderKeyState.getSigningKeyPrivate());
32
+ await this.senderKeyStore.storeSenderKey(this.senderKeyName, record);
33
+ return senderKeyMessage.serialize();
34
+ });
34
35
  }
35
36
  async decrypt(senderKeyMessageBytes) {
36
- const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName);
37
- if (!record) {
38
- throw new Error("No SenderKeyRecord found for decryption");
39
- }
40
- const senderKeyMessage = new SenderKeyMessage(
41
- null,
42
- null,
43
- null,
44
- null,
45
- senderKeyMessageBytes
46
- );
47
- const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
48
- if (!senderKeyState) {
49
- throw new Error("No session found to decrypt message");
50
- }
51
- senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic());
52
- const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration());
53
- const plaintext = await this.getPlainText(
54
- senderKey.getIv(),
55
- senderKey.getCipherKey(),
56
- senderKeyMessage.getCipherText()
57
- );
58
- await this.senderKeyStore.storeSenderKey(this.senderKeyName, record);
59
- return plaintext;
37
+ return await this.queueJob(async () => {
38
+ const record = await this.senderKeyStore.loadSenderKey(this.senderKeyName);
39
+ if (!record) {
40
+ throw new Error('No SenderKeyRecord found for decryption');
41
+ }
42
+ const senderKeyMessage = new sender_key_message_1.SenderKeyMessage(null, null, null, null, senderKeyMessageBytes);
43
+ const senderKeyState = record.getSenderKeyState(senderKeyMessage.getKeyId());
44
+ if (!senderKeyState) {
45
+ throw new Error('No session found to decrypt message');
46
+ }
47
+ senderKeyMessage.verifySignature(senderKeyState.getSigningKeyPublic());
48
+ const senderKey = this.getSenderKey(senderKeyState, senderKeyMessage.getIteration());
49
+ const plaintext = await this.getPlainText(senderKey.getIv(), senderKey.getCipherKey(), senderKeyMessage.getCipherText());
50
+ await this.senderKeyStore.storeSenderKey(this.senderKeyName, record);
51
+ return plaintext;
52
+ });
60
53
  }
61
54
  getSenderKey(senderKeyState, iteration) {
62
55
  let senderChainKey = senderKeyState.getSenderChainKey();
@@ -64,16 +57,14 @@ class GroupCipher {
64
57
  if (senderKeyState.hasSenderMessageKey(iteration)) {
65
58
  const messageKey = senderKeyState.removeSenderMessageKey(iteration);
66
59
  if (!messageKey) {
67
- throw new Error("No sender message key found for iteration");
60
+ throw new Error('No sender message key found for iteration');
68
61
  }
69
62
  return messageKey;
70
63
  }
71
- throw new Error(
72
- `Received message with old counter: ${senderChainKey.getIteration()}, ${iteration}`
73
- );
64
+ throw new Error(`Received message with old counter: ${senderChainKey.getIteration()}, ${iteration}`);
74
65
  }
75
- if (iteration - senderChainKey.getIteration() > 2e3) {
76
- throw new Error("Over 2000 messages into the future!");
66
+ if (iteration - senderChainKey.getIteration() > 2000) {
67
+ throw new Error('Over 2000 messages into the future!');
77
68
  }
78
69
  while (senderChainKey.getIteration() < iteration) {
79
70
  senderKeyState.addSenderMessageKey(senderChainKey.getSenderMessageKey());
@@ -84,21 +75,22 @@ class GroupCipher {
84
75
  }
85
76
  async getPlainText(iv, key, ciphertext) {
86
77
  try {
87
- return decrypt(key, ciphertext, iv);
88
- } catch (e) {
89
- throw new Error("InvalidMessageException");
78
+ return (0, crypto_1.decrypt)(key, ciphertext, iv);
79
+ }
80
+ catch (e) {
81
+ throw new Error('InvalidMessageException');
90
82
  }
91
83
  }
92
84
  async getCipherText(iv, key, plaintext) {
93
85
  try {
94
- const ivBuffer = typeof iv === "string" ? Buffer.from(iv, "base64") : iv;
95
- const keyBuffer = typeof key === "string" ? Buffer.from(key, "base64") : key;
96
- const plaintextBuffer =
97
- typeof plaintext === "string" ? Buffer.from(plaintext) : plaintext;
98
- return encrypt(keyBuffer, plaintextBuffer, ivBuffer);
99
- } catch (e) {
100
- throw new Error("InvalidMessageException");
86
+ const ivBuffer = typeof iv === 'string' ? Buffer.from(iv, 'base64') : iv;
87
+ const keyBuffer = typeof key === 'string' ? Buffer.from(key, 'base64') : key;
88
+ const plaintextBuffer = typeof plaintext === 'string' ? Buffer.from(plaintext) : plaintext;
89
+ return (0, crypto_1.encrypt)(keyBuffer, plaintextBuffer, ivBuffer);
90
+ }
91
+ catch (e) {
92
+ throw new Error('InvalidMessageException');
101
93
  }
102
94
  }
103
95
  }
104
- module.exports = { GroupCipher: GroupCipher };
96
+ exports.GroupCipher = GroupCipher;
@@ -1,42 +1,57 @@
1
1
  "use strict";
2
- const __createBinding =
3
- (this && this.__createBinding) ||
4
- (Object.create
5
- ? function (o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- let desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = {
10
- enumerable: true,
11
- get: function () {
12
- return m[k];
13
- },
14
- };
15
- }
16
- Object.defineProperty(o, k2, desc);
17
- }
18
- : function (o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- });
22
- const __exportStar =
23
- (this && this.__exportStar) ||
24
- function (m, exports) {
25
- for (var p in m) {
26
- if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) {
27
- __createBinding(exports, m, p);
28
- }
29
- }
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
30
26
  };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
31
35
  Object.defineProperty(exports, "__esModule", { value: true });
32
- __exportStar(require("./ciphertext-message"), exports);
33
- __exportStar(require("./group-session-builder"), exports);
34
- __exportStar(require("./group_cipher"), exports);
35
- __exportStar(require("./keyhelper"), exports);
36
- __exportStar(require("./sender-chain-key"), exports);
37
- __exportStar(require("./sender-key-distribution-message"), exports);
38
- __exportStar(require("./sender-key-message"), exports);
39
- __exportStar(require("./sender-key-name"), exports);
40
- __exportStar(require("./sender-key-record"), exports);
41
- __exportStar(require("./sender-key-state"), exports);
42
- __exportStar(require("./sender-message-key"), exports);
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 group_session_builder_1 = require("./group-session-builder");
38
+ Object.defineProperty(exports, "GroupSessionBuilder", { enumerable: true, get: function () { return group_session_builder_1.GroupSessionBuilder; } });
39
+ var sender_key_distribution_message_1 = require("./sender-key-distribution-message");
40
+ Object.defineProperty(exports, "SenderKeyDistributionMessage", { enumerable: true, get: function () { return sender_key_distribution_message_1.SenderKeyDistributionMessage; } });
41
+ var sender_key_record_1 = require("./sender-key-record");
42
+ Object.defineProperty(exports, "SenderKeyRecord", { enumerable: true, get: function () { return sender_key_record_1.SenderKeyRecord; } });
43
+ var sender_key_name_1 = require("./sender-key-name");
44
+ Object.defineProperty(exports, "SenderKeyName", { enumerable: true, get: function () { return sender_key_name_1.SenderKeyName; } });
45
+ var group_cipher_1 = require("./group_cipher");
46
+ Object.defineProperty(exports, "GroupCipher", { enumerable: true, get: function () { return group_cipher_1.GroupCipher; } });
47
+ var sender_key_state_1 = require("./sender-key-state");
48
+ Object.defineProperty(exports, "SenderKeyState", { enumerable: true, get: function () { return sender_key_state_1.SenderKeyState; } });
49
+ var sender_key_message_1 = require("./sender-key-message");
50
+ Object.defineProperty(exports, "SenderKeyMessage", { enumerable: true, get: function () { return sender_key_message_1.SenderKeyMessage; } });
51
+ var sender_message_key_1 = require("./sender-message-key");
52
+ Object.defineProperty(exports, "SenderMessageKey", { enumerable: true, get: function () { return sender_message_key_1.SenderMessageKey; } });
53
+ var sender_chain_key_1 = require("./sender-chain-key");
54
+ Object.defineProperty(exports, "SenderChainKey", { enumerable: true, get: function () { return sender_chain_key_1.SenderChainKey; } });
55
+ var ciphertext_message_1 = require("./ciphertext-message");
56
+ Object.defineProperty(exports, "CiphertextMessage", { enumerable: true, get: function () { return ciphertext_message_1.CiphertextMessage; } });
57
+ exports.keyhelper = __importStar(require("./keyhelper"));
@@ -1,21 +1,55 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const { randomInt: randomInt, randomBytes: randomBytes } = require("crypto");
4
- const { generateKeyPair: generateKeyPair } = require("libsignal/src/curve");
36
+ exports.generateSenderKey = generateSenderKey;
37
+ exports.generateSenderKeyId = generateSenderKeyId;
38
+ exports.generateSenderSigningKey = generateSenderSigningKey;
39
+ const nodeCrypto = __importStar(require("crypto"));
40
+ const curve_1 = require("libsignal/src/curve");
5
41
  function generateSenderKey() {
6
- return randomBytes(32);
42
+ return nodeCrypto.randomBytes(32);
7
43
  }
8
44
  function generateSenderKeyId() {
9
- return randomInt(2147483647);
45
+ return nodeCrypto.randomInt(2147483647);
10
46
  }
11
47
  function generateSenderSigningKey(key) {
12
48
  if (!key) {
13
- key = generateKeyPair();
49
+ key = (0, curve_1.generateKeyPair)();
14
50
  }
15
- return { public: Buffer.from(key.pubKey), private: Buffer.from(key.privKey) };
51
+ return {
52
+ public: Buffer.from(key.pubKey),
53
+ private: Buffer.from(key.privKey)
54
+ };
16
55
  }
17
- module.exports = {
18
- generateSenderKey: generateSenderKey,
19
- generateSenderKeyId: generateSenderKeyId,
20
- generateSenderSigningKey: generateSenderSigningKey,
21
- };