@baileys-md/baileys 11.2.4 → 12.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 (126) hide show
  1. package/LICENSE +1 -1
  2. package/WAProto/WAProto.proto +5311 -0
  3. package/WAProto/index.js +70084 -131686
  4. package/lib/Defaults/index.js +118 -117
  5. package/lib/KeyDB/BinarySearch.js +20 -0
  6. package/lib/KeyDB/KeyedDB.js +167 -0
  7. package/lib/KeyDB/index.js +4 -0
  8. package/lib/Signal/Group/ciphertext-message.js +13 -0
  9. package/lib/Signal/Group/group-session-builder.js +32 -0
  10. package/lib/Signal/Group/group_cipher.js +84 -0
  11. package/lib/Signal/Group/index.js +13 -0
  12. package/lib/Signal/Group/keyhelper.js +20 -0
  13. package/lib/Signal/Group/sender-chain-key.js +28 -0
  14. package/lib/Signal/Group/sender-key-distribution-message.js +65 -0
  15. package/lib/Signal/Group/sender-key-message.js +68 -0
  16. package/{WASignalGroup/sender_key_name.js → lib/Signal/Group/sender-key-name.js} +10 -28
  17. package/lib/Signal/Group/sender-key-record.js +43 -0
  18. package/lib/Signal/Group/sender-key-state.js +86 -0
  19. package/lib/Signal/Group/sender-message-key.js +28 -0
  20. package/lib/Signal/libsignal.js +314 -151
  21. package/lib/Signal/lid-mapping.js +155 -0
  22. package/lib/Socket/Client/index.js +4 -19
  23. package/lib/Socket/Client/types.js +13 -0
  24. package/lib/Socket/Client/websocket.js +52 -0
  25. package/lib/Socket/business.js +359 -242
  26. package/lib/Socket/chats.js +847 -844
  27. package/lib/Socket/communities.js +413 -0
  28. package/lib/Socket/groups.js +304 -319
  29. package/lib/Socket/index.js +15 -9
  30. package/lib/Socket/messages-recv.js +1109 -989
  31. package/lib/Socket/messages-send.js +611 -347
  32. package/lib/Socket/mex.js +45 -0
  33. package/lib/Socket/newsletter.js +230 -231
  34. package/lib/Socket/socket.js +795 -616
  35. package/lib/Store/index.js +6 -8
  36. package/lib/Store/make-cache-manager-store.js +73 -81
  37. package/lib/Store/make-in-memory-store.js +286 -427
  38. package/lib/Store/make-ordered-dictionary.js +77 -79
  39. package/lib/Store/object-repository.js +24 -26
  40. package/lib/Types/Auth.js +3 -2
  41. package/lib/Types/Bussines.js +3 -0
  42. package/lib/Types/Call.js +3 -2
  43. package/lib/Types/Chat.js +9 -4
  44. package/lib/Types/Contact.js +3 -2
  45. package/lib/Types/Events.js +3 -2
  46. package/lib/Types/GroupMetadata.js +3 -2
  47. package/lib/Types/Label.js +24 -26
  48. package/lib/Types/LabelAssociation.js +6 -8
  49. package/lib/Types/Message.js +12 -7
  50. package/lib/Types/Newsletter.js +32 -17
  51. package/lib/Types/Product.js +3 -2
  52. package/lib/Types/Signal.js +3 -2
  53. package/lib/Types/Socket.js +4 -2
  54. package/lib/Types/State.js +11 -2
  55. package/lib/Types/USync.js +3 -2
  56. package/lib/Types/index.js +27 -41
  57. package/lib/Utils/auth-utils.js +211 -198
  58. package/lib/Utils/baileys-event-stream.js +42 -61
  59. package/lib/Utils/browser-utils.js +25 -0
  60. package/lib/Utils/business.js +213 -214
  61. package/lib/Utils/chat-utils.js +711 -689
  62. package/lib/Utils/crypto.js +112 -133
  63. package/lib/Utils/decode-wa-message.js +254 -186
  64. package/lib/Utils/event-buffer.js +510 -502
  65. package/lib/Utils/generics.js +318 -408
  66. package/lib/Utils/history.js +83 -90
  67. package/lib/Utils/index.js +21 -33
  68. package/lib/Utils/link-preview.js +71 -116
  69. package/lib/Utils/logger.js +5 -7
  70. package/lib/Utils/lt-hash.js +40 -46
  71. package/lib/Utils/make-mutex.js +34 -41
  72. package/lib/Utils/message-retry-manager.js +113 -0
  73. package/lib/Utils/messages-media.js +575 -671
  74. package/lib/Utils/messages.js +354 -462
  75. package/lib/Utils/noise-handler.js +138 -149
  76. package/lib/Utils/pre-key-manager.js +85 -0
  77. package/lib/Utils/process-message.js +323 -354
  78. package/lib/Utils/signal.js +148 -130
  79. package/lib/Utils/use-multi-file-auth-state.js +109 -91
  80. package/lib/Utils/validate-connection.js +183 -190
  81. package/lib/WABinary/constants.js +1298 -35
  82. package/lib/WABinary/decode.js +231 -256
  83. package/lib/WABinary/encode.js +207 -239
  84. package/lib/WABinary/generic-utils.js +119 -40
  85. package/lib/WABinary/index.js +7 -21
  86. package/lib/WABinary/jid-utils.js +88 -64
  87. package/lib/WABinary/types.js +3 -2
  88. package/lib/WAM/BinaryInfo.js +10 -12
  89. package/lib/WAM/constants.js +22851 -15348
  90. package/lib/WAM/encode.js +135 -136
  91. package/lib/WAM/index.js +5 -19
  92. package/lib/WAUSync/Protocols/USyncContactProtocol.js +28 -30
  93. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +49 -53
  94. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -28
  95. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +36 -39
  96. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +50 -50
  97. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +26 -20
  98. package/lib/WAUSync/Protocols/index.js +6 -20
  99. package/lib/WAUSync/USyncQuery.js +86 -85
  100. package/lib/WAUSync/USyncUser.js +23 -25
  101. package/lib/WAUSync/index.js +5 -19
  102. package/lib/index.js +18 -33
  103. package/package.json +52 -57
  104. package/README.md +0 -2
  105. package/WASignalGroup/GroupProtocol.js +0 -1697
  106. package/WASignalGroup/ciphertext_message.js +0 -16
  107. package/WASignalGroup/group_cipher.js +0 -120
  108. package/WASignalGroup/group_session_builder.js +0 -46
  109. package/WASignalGroup/index.js +0 -5
  110. package/WASignalGroup/keyhelper.js +0 -21
  111. package/WASignalGroup/protobufs.js +0 -3
  112. package/WASignalGroup/queue_job.js +0 -69
  113. package/WASignalGroup/sender_chain_key.js +0 -50
  114. package/WASignalGroup/sender_key_distribution_message.js +0 -78
  115. package/WASignalGroup/sender_key_message.js +0 -92
  116. package/WASignalGroup/sender_key_record.js +0 -56
  117. package/WASignalGroup/sender_key_state.js +0 -129
  118. package/WASignalGroup/sender_message_key.js +0 -39
  119. package/lib/Defaults/baileys-version.json +0 -3
  120. package/lib/Defaults/phonenumber-mcc.json +0 -223
  121. package/lib/Socket/Client/abstract-socket-client.js +0 -13
  122. package/lib/Socket/Client/mobile-socket-client.js +0 -65
  123. package/lib/Socket/Client/web-socket-client.js +0 -62
  124. package/lib/Socket/registration.js +0 -166
  125. package/lib/Socket/usync.js +0 -70
  126. package/lib/Store/make-mongo-store.js +0 -567
@@ -1,207 +1,200 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.encodeSignedDeviceIdentity = exports.configureSuccessfulPairing = exports.generateRegistrationNode = exports.generateLoginNode = exports.generateMobileNode = void 0;
4
- const boom_1 = require("@hapi/boom");
5
- const crypto_1 = require("crypto");
6
- const WAProto_1 = require("../../WAProto");
7
- const Defaults_1 = require("../Defaults");
8
- const WABinary_1 = require("../WABinary");
9
- const crypto_2 = require("./crypto");
10
- const generics_1 = require("./generics");
11
- const signal_1 = require("./signal");
1
+ //=======================================================//
2
+ import { KEY_BUNDLE_TYPE, WA_ADV_ACCOUNT_SIG_PREFIX, WA_ADV_DEVICE_SIG_PREFIX, WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX } from "../Defaults/index.js";
3
+ import { getBinaryNodeChild, jidDecode, S_WHATSAPP_NET } from "../WABinary/index.js";
4
+ import { createSignalIdentity } from "./signal.js";
5
+ import { encodeBigEndian } from "./generics.js";
6
+ import { proto } from "../../WAProto/index.js";
7
+ import { Curve, hmacSign } from "./crypto.js";
8
+ import { createHash } from "crypto";
9
+ import { Boom } from "@hapi/boom";
10
+ //=======================================================//
12
11
  const getUserAgent = (config) => {
13
- var _a, _b;
14
- const osVersion = config.mobile ? '15.3.1' : '0.1';
15
- const version = config.mobile ? [2, 24, 6] : config.version;
16
- const device = config.mobile ? 'iPhone_7' : 'Desktop';
17
- const manufacturer = config.mobile ? 'Apple' : '';
18
- const platform = config.mobile ? WAProto_1.proto.ClientPayload.UserAgent.Platform.IOS : WAProto_1.proto.ClientPayload.UserAgent.Platform.WEB;
19
- const phoneId = config.mobile ? { phoneId: config.auth.creds.phoneId } : {};
20
- return {
21
- appVersion: {
22
- primary: version[0],
23
- secondary: version[1],
24
- tertiary: version[2],
25
- },
26
- platform,
27
- releaseChannel: WAProto_1.proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
28
- mcc: ((_a = config.auth.creds.registration) === null || _a === void 0 ? void 0 : _a.phoneNumberMobileCountryCode) || '000',
29
- mnc: ((_b = config.auth.creds.registration) === null || _b === void 0 ? void 0 : _b.phoneNumberMobileNetworkCode) || '000',
30
- osVersion: osVersion,
31
- manufacturer,
32
- device,
33
- osBuildNumber: osVersion,
34
- localeLanguageIso6391: 'en',
35
- localeCountryIso31661Alpha2: config.countryCode,
36
- ...phoneId
37
- };
12
+ return {
13
+ "appVersion": {
14
+ "primary": config.version[0],
15
+ "secondary": config.version[1],
16
+ "tertiary": config.version[2]
17
+ },
18
+ "platform": proto.ClientPayload.UserAgent.Platform.WEB,
19
+ "releaseChannel": proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
20
+ "osVersion": "0.1",
21
+ "device": "Desktop",
22
+ "osBuildNumber": "0.1",
23
+ "localeLanguageIso6391": "en",
24
+ "mnc": "000",
25
+ "mcc": "000",
26
+ "localeCountryIso31661Alpha2": config.countryCode
27
+ };
38
28
  };
29
+ //=======================================================//
39
30
  const PLATFORM_MAP = {
40
- 'Mac OS': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
41
- 'Windows': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
31
+ "Mac OS": proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
32
+ "Windows": proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
42
33
  };
34
+ //=======================================================//
43
35
  const getWebInfo = (config) => {
44
- let webSubPlatform = WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
45
- if (config.syncFullHistory && PLATFORM_MAP[config.browser[0]]) {
46
- webSubPlatform = PLATFORM_MAP[config.browser[0]];
47
- }
48
- return { webSubPlatform };
36
+ let webSubPlatform = proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
37
+ if (config.syncFullHistory &&
38
+ PLATFORM_MAP[config.browser[0]] &&
39
+ config.browser[1] === "Desktop") {
40
+ webSubPlatform = PLATFORM_MAP[config.browser[0]];
41
+ }
42
+ return { webSubPlatform };
49
43
  };
44
+ //=======================================================//
50
45
  const getClientPayload = (config) => {
51
- const payload = {
52
- connectType: WAProto_1.proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
53
- connectReason: WAProto_1.proto.ClientPayload.ConnectReason.USER_ACTIVATED,
54
- userAgent: getUserAgent(config),
55
- };
56
- if (!config.mobile) {
57
- payload.webInfo = getWebInfo(config);
58
- }
59
- return payload;
60
- };
61
- const generateMobileNode = (config) => {
62
- if (!config.auth.creds) {
63
- throw new boom_1.Boom('No registration data found', { data: config });
64
- }
65
- const payload = {
66
- ...getClientPayload(config),
67
- sessionId: Math.floor(Math.random() * 999999999 + 1),
68
- shortConnect: true,
69
- connectAttemptCount: 0,
70
- device: 0,
71
- dnsSource: {
72
- appCached: false,
73
- dnsMethod: WAProto_1.proto.ClientPayload.DNSSource.DNSResolutionMethod.SYSTEM,
74
- },
75
- passive: false, // XMPP heartbeat setting (false: server actively pings) (true: client actively pings)
76
- pushName: 'test',
77
- username: Number(`${config.auth.creds.registration.phoneNumberCountryCode}${config.auth.creds.registration.phoneNumberNationalNumber}`),
78
- };
79
- return WAProto_1.proto.ClientPayload.fromObject(payload);
46
+ const payload = {
47
+ connectType: proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
48
+ connectReason: proto.ClientPayload.ConnectReason.USER_ACTIVATED,
49
+ userAgent: getUserAgent(config)
50
+ };
51
+ payload.webInfo = getWebInfo(config);
52
+ return payload;
80
53
  };
81
- exports.generateMobileNode = generateMobileNode;
82
- const generateLoginNode = (userJid, config) => {
83
- const { user, device } = (0, WABinary_1.jidDecode)(userJid);
84
- const payload = {
85
- ...getClientPayload(config),
86
- passive: false,
87
- pull: true,
88
- username: +user,
89
- device: device,
90
- };
91
- return WAProto_1.proto.ClientPayload.fromObject(payload);
54
+ //=======================================================//
55
+ export const generateLoginNode = (userJid, config) => {
56
+ const { user, device } = jidDecode(userJid);
57
+ const payload = {
58
+ ...getClientPayload(config),
59
+ "passive": true,
60
+ "pull": true,
61
+ "username": +user,
62
+ "device": device,
63
+ "lidDbMigrated": false
64
+ };
65
+ return proto.ClientPayload.fromObject(payload);
92
66
  };
93
- exports.generateLoginNode = generateLoginNode;
67
+ //=======================================================//
94
68
  const getPlatformType = (platform) => {
95
- const platformType = platform.toUpperCase();
96
- return WAProto_1.proto.DeviceProps.PlatformType[platformType] || WAProto_1.proto.DeviceProps.PlatformType.DESKTOP;
69
+ const platformType = platform.toUpperCase();
70
+ return (proto.DeviceProps.PlatformType[platformType] ||
71
+ proto.DeviceProps.PlatformType.CHROME);
97
72
  };
98
- const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
99
- // the app version needs to be md5 hashed
100
- // and passed in
101
- const appVersionBuf = (0, crypto_1.createHash)('md5')
102
- .update(config.version.join('.')) // join as string
103
- .digest();
104
- const companion = {
105
- os: config.browser[0],
106
- platformType: getPlatformType(config.browser[1]),
107
- requireFullSync: config.syncFullHistory,
108
- };
109
- const companionProto = WAProto_1.proto.DeviceProps.encode(companion).finish();
110
- const registerPayload = {
111
- ...getClientPayload(config),
112
- passive: false,
113
- pull: false,
114
- devicePairingData: {
115
- buildHash: appVersionBuf,
116
- deviceProps: companionProto,
117
- eRegid: (0, generics_1.encodeBigEndian)(registrationId),
118
- eKeytype: Defaults_1.KEY_BUNDLE_TYPE,
119
- eIdent: signedIdentityKey.public,
120
- eSkeyId: (0, generics_1.encodeBigEndian)(signedPreKey.keyId, 3),
121
- eSkeyVal: signedPreKey.keyPair.public,
122
- eSkeySig: signedPreKey.signature,
123
- },
124
- };
125
- return WAProto_1.proto.ClientPayload.fromObject(registerPayload);
126
- };
127
- exports.generateRegistrationNode = generateRegistrationNode;
128
- const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
129
- const msgId = stanza.attrs.id;
130
- const pairSuccessNode = (0, WABinary_1.getBinaryNodeChild)(stanza, 'pair-success');
131
- const deviceIdentityNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device-identity');
132
- const platformNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'platform');
133
- const deviceNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device');
134
- const businessNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'biz');
135
- if (!deviceIdentityNode || !deviceNode) {
136
- throw new boom_1.Boom('Missing device-identity or device in pair success node', { data: stanza });
137
- }
138
- const bizName = businessNode === null || businessNode === void 0 ? void 0 : businessNode.attrs.name;
139
- const jid = deviceNode.attrs.jid;
140
- const { details, hmac } = WAProto_1.proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
141
- // check HMAC matches
142
- const advSign = (0, crypto_2.hmacSign)(details, Buffer.from(advSecretKey, 'base64'));
143
- if (Buffer.compare(hmac, advSign) !== 0) {
144
- throw new boom_1.Boom('Invalid account signature');
73
+ //=======================================================//
74
+ export const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
75
+ const appVersionBuf = createHash("md5")
76
+ .update(config.version.join("."))
77
+ .digest();
78
+ const companion = {
79
+ "os": config.browser[0],
80
+ "platformType": getPlatformType(config.browser[1]),
81
+ "requireFullSync": config.syncFullHistory,
82
+ "historySyncConfig": {
83
+ "storageQuotaMb": 569150,
84
+ "inlineInitialPayloadInE2EeMsg": true,
85
+ "supportCallLogHistory": false,
86
+ "supportBotUserAgentChatHistory": true,
87
+ "supportCagReactionsAndPolls": true,
88
+ "supportBizHostedMsg": true,
89
+ "supportRecentSyncChunkMessageCountTuning": true,
90
+ "supportHostedGroupMsg": true,
91
+ "supportFbidBotChatHistory": true,
92
+ "supportMessageAssociation": true
93
+ },
94
+ "version": {
95
+ "primary": 10,
96
+ "secondary": 15,
97
+ "tertiary": 7
145
98
  }
146
- const account = WAProto_1.proto.ADVSignedDeviceIdentity.decode(details);
147
- const { accountSignatureKey, accountSignature, details: deviceDetails } = account;
148
- // verify the device signature matches
149
- const accountMsg = Buffer.concat([Buffer.from([6, 0]), deviceDetails, signedIdentityKey.public]);
150
- if (!crypto_2.Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
151
- throw new boom_1.Boom('Failed to verify account signature');
99
+ };
100
+ const companionProto = proto.DeviceProps.encode(companion).finish();
101
+ const registerPayload = {
102
+ ...getClientPayload(config),
103
+ passive: false,
104
+ pull: false,
105
+ devicePairingData: {
106
+ buildHash: appVersionBuf,
107
+ deviceProps: companionProto,
108
+ eRegid: encodeBigEndian(registrationId),
109
+ eKeytype: KEY_BUNDLE_TYPE,
110
+ eIdent: signedIdentityKey.public,
111
+ eSkeyId: encodeBigEndian(signedPreKey.keyId, 3),
112
+ eSkeyVal: signedPreKey.keyPair.public,
113
+ eSkeySig: signedPreKey.signature
152
114
  }
153
- // sign the details with our identity key
154
- const deviceMsg = Buffer.concat([Buffer.from([6, 1]), deviceDetails, signedIdentityKey.public, accountSignatureKey]);
155
- account.deviceSignature = crypto_2.Curve.sign(signedIdentityKey.private, deviceMsg);
156
- const identity = (0, signal_1.createSignalIdentity)(jid, accountSignatureKey);
157
- const accountEnc = (0, exports.encodeSignedDeviceIdentity)(account, false);
158
- const deviceIdentity = WAProto_1.proto.ADVDeviceIdentity.decode(account.details);
159
- const reply = {
160
- tag: 'iq',
161
- attrs: {
162
- to: WABinary_1.S_WHATSAPP_NET,
163
- type: 'result',
164
- id: msgId,
165
- },
115
+ };
116
+ return proto.ClientPayload.fromObject(registerPayload);
117
+ };
118
+ //=======================================================//
119
+ export const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
120
+ const msgId = stanza.attrs.id;
121
+ const pairSuccessNode = getBinaryNodeChild(stanza, "pair-success");
122
+ const deviceIdentityNode = getBinaryNodeChild(pairSuccessNode, "device-identity");
123
+ const platformNode = getBinaryNodeChild(pairSuccessNode, "platform");
124
+ const deviceNode = getBinaryNodeChild(pairSuccessNode, "device");
125
+ const businessNode = getBinaryNodeChild(pairSuccessNode, "biz");
126
+ if (!deviceIdentityNode || !deviceNode) {
127
+ throw new Boom("Missing device-identity or device in pair success node", { data: stanza });
128
+ }
129
+ const bizName = businessNode?.attrs.name;
130
+ const jid = deviceNode.attrs.jid;
131
+ const lid = deviceNode.attrs.lid;
132
+ const { details, hmac, accountType } = proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
133
+ let hmacPrefix = Buffer.from([]);
134
+ if (accountType !== undefined && accountType === proto.ADVEncryptionType.HOSTED) {
135
+ hmacPrefix = WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX;
136
+ }
137
+ const advSign = hmacSign(Buffer.concat([hmacPrefix, details]), Buffer.from(advSecretKey, "base64"));
138
+ if (Buffer.compare(hmac, advSign) !== 0) {
139
+ throw new Boom("Invalid account signature");
140
+ }
141
+ const account = proto.ADVSignedDeviceIdentity.decode(details);
142
+ const { accountSignatureKey, accountSignature, details: deviceDetails } = account;
143
+ const deviceIdentity = proto.ADVDeviceIdentity.decode(deviceDetails);
144
+ const accountSignaturePrefix = deviceIdentity.deviceType === proto.ADVEncryptionType.HOSTED
145
+ ? WA_ADV_HOSTED_ACCOUNT_SIG_PREFIX
146
+ : WA_ADV_ACCOUNT_SIG_PREFIX;
147
+ const accountMsg = Buffer.concat([accountSignaturePrefix, deviceDetails, signedIdentityKey.public]);
148
+ if (!Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
149
+ throw new Boom("Failed to verify account signature");
150
+ }
151
+ const deviceMsg = Buffer.concat([
152
+ WA_ADV_DEVICE_SIG_PREFIX,
153
+ deviceDetails,
154
+ signedIdentityKey.public,
155
+ accountSignatureKey
156
+ ]);
157
+ account.deviceSignature = Curve.sign(signedIdentityKey.private, deviceMsg);
158
+ const identity = createSignalIdentity(lid, accountSignatureKey);
159
+ const accountEnc = encodeSignedDeviceIdentity(account, false);
160
+ const reply = {
161
+ tag: "iq",
162
+ attrs: {
163
+ to: S_WHATSAPP_NET,
164
+ type: "result",
165
+ id: msgId
166
+ },
167
+ content: [
168
+ {
169
+ tag: "pair-device-sign",
170
+ attrs: {},
166
171
  content: [
167
- {
168
- tag: 'pair-device-sign',
169
- attrs: {},
170
- content: [
171
- {
172
- tag: 'device-identity',
173
- attrs: { 'key-index': deviceIdentity.keyIndex.toString() },
174
- content: accountEnc
175
- }
176
- ]
177
- }
172
+ {
173
+ tag: "device-identity",
174
+ attrs: { "key-index": deviceIdentity.keyIndex.toString() },
175
+ content: accountEnc
176
+ }
178
177
  ]
179
- };
180
- const authUpdate = {
181
- account,
182
- me: { id: jid, name: bizName },
183
- signalIdentities: [
184
- ...(signalIdentities || []),
185
- identity
186
- ],
187
- platform: platformNode === null || platformNode === void 0 ? void 0 : platformNode.attrs.name
188
- };
189
- return {
190
- creds: authUpdate,
191
- reply
192
- };
178
+ }
179
+ ]
180
+ };
181
+ const authUpdate = {
182
+ account,
183
+ me: { id: jid, name: bizName, lid },
184
+ signalIdentities: [...(signalIdentities || []), identity],
185
+ platform: platformNode?.attrs.name
186
+ };
187
+ return {
188
+ creds: authUpdate,
189
+ reply
190
+ };
193
191
  };
194
- exports.configureSuccessfulPairing = configureSuccessfulPairing;
195
- const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
196
- var _a;
197
- account = { ...account };
198
- // set to null if we are not to include the signature key
199
- // or if we are including the signature key but it is empty
200
- if (!includeSignatureKey || !((_a = account.accountSignatureKey) === null || _a === void 0 ? void 0 : _a.length)) {
201
- account.accountSignatureKey = null;
202
- }
203
- return WAProto_1.proto.ADVSignedDeviceIdentity
204
- .encode(account)
205
- .finish();
192
+ //=======================================================//
193
+ export const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
194
+ account = { ...account };
195
+ if (!includeSignatureKey || !account.accountSignatureKey?.length) {
196
+ account.accountSignatureKey = null;
197
+ }
198
+ return proto.ADVSignedDeviceIdentity.encode(account).finish();
206
199
  };
207
- exports.encodeSignedDeviceIdentity = encodeSignedDeviceIdentity;
200
+ //=======================================================//