@kangwifi-pro/waliwa 1.1.1 → 1.1.2
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/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/socket/ws-socket.d.ts +22 -8
- package/dist/socket/ws-socket.d.ts.map +1 -1
- package/dist/socket/ws-socket.js +57 -20
- package/dist/socket/ws-socket.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/src/socket/ws-socket.ts +60 -20
package/dist/index.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ export { RecoveryManager, mapCodeToReason, getActionDescription, getReasonDescri
|
|
|
53
53
|
export { ProfileManager, PrivacyManager, NewsletterManagerExtended, StatusExtended, ContactsManager, BulkOperations, MessageExtras, DisappearingManager, LiveLocationManager, AudioTranscriptionManager, StickerManager, TypingIndicatorTracker, LastSeenTracker, MessageStatusTracker, SelfMessageFilter, ChatStateManager, DeviceInfoTracker, GroupEventsTracker, parseGroupInviteInfo, createCommunityManagers, type ProfileInfo, type PrivacyValue, type PrivacyCategory, type PrivacySettings, type NewsletterMetadata, type NewsletterPost, type StatusView, type StatusInfo, type StatusPrivacyValue, type StatusPrivacy, type ContactInfo, type BulkSendItem, type BulkSendResult, type BulkSendOptions, type AlbumItem, type MessageInfo, type DisappearingTimer, type TIMER_TO_SECONDS, type LiveLocation, type TranscriptionResult, type TranscriptionProvider, type StickerMetadata, type StickerPack, type ChatState, type GroupInviteInfo, type CommunityManagers, type CommunityTrackers } from './community/index.js';
|
|
54
54
|
export { TIMER_TO_SECONDS as DISAPPEARING_TIMERS, SECONDS_TO_TIMER as SECONDS_TO_TIMER, detectLanguageFromText } from './community/index.js';
|
|
55
55
|
export * from './types/index.js';
|
|
56
|
-
export declare const VERSION = "1.1.
|
|
56
|
+
export declare const VERSION = "1.1.2";
|
|
57
57
|
export declare const LIBRARY_NAME = "waliwa";
|
|
58
58
|
export declare const DEFAULT_CONFIG: {
|
|
59
59
|
wsURL: string;
|
package/dist/index.js
CHANGED
|
@@ -252,7 +252,7 @@ Object.defineProperty(exports, "detectLanguageFromText", { enumerable: true, get
|
|
|
252
252
|
// ============== All Types ==============
|
|
253
253
|
__exportStar(require("./types/index.js"), exports);
|
|
254
254
|
// ============== Version ==============
|
|
255
|
-
exports.VERSION = '1.1.
|
|
255
|
+
exports.VERSION = '1.1.2';
|
|
256
256
|
exports.LIBRARY_NAME = 'waliwa';
|
|
257
257
|
// ============== Default Config ==============
|
|
258
258
|
exports.DEFAULT_CONFIG = {
|
|
@@ -51,15 +51,29 @@ export declare class WAWebSocket extends EventEmitter {
|
|
|
51
51
|
/**
|
|
52
52
|
* Start Noise Protocol XX handshake
|
|
53
53
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
54
|
+
* WA Frame Format (used in ALL messages including handshake):
|
|
55
|
+
* [0x57, 0x41] (2 bytes "WA" magic)
|
|
56
|
+
* [0x01] (1 byte binary flag)
|
|
57
|
+
* [version] (1 byte, e.g. 0x2d = 45)
|
|
58
|
+
* [length_hi, length_mid, length_lo] (3 bytes big-endian length)
|
|
59
|
+
* [payload]
|
|
58
60
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
+
* Noise XX Pattern (3 messages):
|
|
62
|
+
* 1. Client → Server: WA header + ephemeral (32 bytes)
|
|
63
|
+
* 2. Server → Client: WA header + ephemeral(32) + enc_static(48) + enc_payload
|
|
64
|
+
* 3. Client → Server: WA header + enc_static(48) + enc_payload
|
|
61
65
|
*/
|
|
62
66
|
private startHandshake;
|
|
67
|
+
/**
|
|
68
|
+
* Wrap payload dengan WA frame header
|
|
69
|
+
* Format: [0x57, 0x41, 0x01, version, len_hi, len_mid, len_lo] + payload
|
|
70
|
+
*/
|
|
71
|
+
private wrapWAFrame;
|
|
72
|
+
/**
|
|
73
|
+
* Strip WA frame header (7 bytes) dari incoming message
|
|
74
|
+
* Returns just the payload
|
|
75
|
+
*/
|
|
76
|
+
private unwrapWAFrame;
|
|
63
77
|
/**
|
|
64
78
|
* Wait for a single WebSocket message with timeout
|
|
65
79
|
*/
|
|
@@ -71,12 +85,12 @@ export declare class WAWebSocket extends EventEmitter {
|
|
|
71
85
|
private generatePairingKey;
|
|
72
86
|
/**
|
|
73
87
|
* Handle incoming message - decrypt jika handshake done
|
|
74
|
-
* After handshake, messages
|
|
88
|
+
* After handshake, messages still use WA frame format
|
|
75
89
|
*/
|
|
76
90
|
private handleMessage;
|
|
77
91
|
/**
|
|
78
92
|
* Send encrypted frame ke server
|
|
79
|
-
*
|
|
93
|
+
* Wraps encrypted data dengan WA frame header
|
|
80
94
|
*/
|
|
81
95
|
send(plaintext: Uint8Array): void;
|
|
82
96
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-socket.d.ts","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAEL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IACvD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAmCD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEnB,IAAI,EAAE,kBAAkB;IAYpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D9B
|
|
1
|
+
{"version":3,"file":"ws-socket.d.ts","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAEL,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,OAAO,GACP,OAAO,GACP,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,gDAAgD;IAChD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6BAA6B;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC;IACvD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACtB;AAmCD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,CAA8C;IAC/D,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,UAAU,CAAa;gBAEnB,IAAI,EAAE,kBAAkB;IAYpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D9B;;;;;;;;;;;;;;OAcG;YACW,cAAc;IAiC5B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAanB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,kBAAkB;IAK1B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAgBrB;;;OAGG;IACH,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IASjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,KAAK,CAAC,IAAI,GAAE,MAAa,EAAE,MAAM,GAAE,MAAiB,GAAG,IAAI;IAa3D;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,gBAAgB,IAAI,aAAa,GAAG,IAAI;CAGzC;AAED,eAAe,WAAW,CAAC"}
|
package/dist/socket/ws-socket.js
CHANGED
|
@@ -134,38 +134,74 @@ class WAWebSocket extends events_1.EventEmitter {
|
|
|
134
134
|
/**
|
|
135
135
|
* Start Noise Protocol XX handshake
|
|
136
136
|
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
137
|
+
* WA Frame Format (used in ALL messages including handshake):
|
|
138
|
+
* [0x57, 0x41] (2 bytes "WA" magic)
|
|
139
|
+
* [0x01] (1 byte binary flag)
|
|
140
|
+
* [version] (1 byte, e.g. 0x2d = 45)
|
|
141
|
+
* [length_hi, length_mid, length_lo] (3 bytes big-endian length)
|
|
142
|
+
* [payload]
|
|
141
143
|
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
+
* Noise XX Pattern (3 messages):
|
|
145
|
+
* 1. Client → Server: WA header + ephemeral (32 bytes)
|
|
146
|
+
* 2. Server → Client: WA header + ephemeral(32) + enc_static(48) + enc_payload
|
|
147
|
+
* 3. Client → Server: WA header + enc_static(48) + enc_payload
|
|
144
148
|
*/
|
|
145
149
|
async startHandshake() {
|
|
146
150
|
this.handshake = new noise_js_1.NoiseHandshake(this.noiseKey, true);
|
|
147
151
|
// === Message 1: Send client ephemeral only ===
|
|
148
|
-
// Format: [0x57, 0x41] (WA magic) + [version 2 bytes] + [32-byte ephemeral]
|
|
149
152
|
const ephemeralPub = this.handshake.buildClientHello();
|
|
150
|
-
const
|
|
151
|
-
|
|
152
|
-
this.logger.debug(`Sending client hello (${clientHello.length} bytes)`);
|
|
153
|
+
const clientHello = this.wrapWAFrame(ephemeralPub);
|
|
154
|
+
this.logger.debug(`Sending client hello (${clientHello.length} bytes, payload ${ephemeralPub.length})`);
|
|
153
155
|
this.ws.send(Buffer.from(clientHello));
|
|
154
156
|
// === Message 2: Wait for server response ===
|
|
155
157
|
const serverData = await this.waitForMessage(15000);
|
|
156
|
-
//
|
|
157
|
-
this.
|
|
158
|
+
// Strip WA header (7 bytes) from server response
|
|
159
|
+
const serverPayload = this.unwrapWAFrame(new Uint8Array(serverData));
|
|
160
|
+
this.logger.debug(`Received server response (${serverData.length} bytes, payload ${serverPayload.length})`);
|
|
161
|
+
// Process server Noise data
|
|
162
|
+
this.handshake.readResponderHandshake(serverPayload);
|
|
158
163
|
this.logger.debug('Server handshake response processed');
|
|
159
164
|
// === Message 3: Send encrypted static + payload ===
|
|
160
165
|
const clientPayload = this.buildClientPayload();
|
|
161
166
|
const clientResponse = this.handshake.writeClientResponse(clientPayload);
|
|
162
|
-
|
|
163
|
-
this.
|
|
167
|
+
const wrappedResponse = this.wrapWAFrame(clientResponse);
|
|
168
|
+
this.logger.debug(`Sending client response (${wrappedResponse.length} bytes, payload ${clientResponse.length})`);
|
|
169
|
+
this.ws.send(Buffer.from(wrappedResponse));
|
|
164
170
|
// === Finalize: derive traffic keys ===
|
|
165
171
|
const { sendKey, recvKey } = this.handshake.finalize();
|
|
166
172
|
this.trafficCipher = new noise_js_1.TrafficCipher(sendKey, recvKey);
|
|
167
173
|
this.logger.debug('Noise handshake completed, traffic keys derived');
|
|
168
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Wrap payload dengan WA frame header
|
|
177
|
+
* Format: [0x57, 0x41, 0x01, version, len_hi, len_mid, len_lo] + payload
|
|
178
|
+
*/
|
|
179
|
+
wrapWAFrame(payload) {
|
|
180
|
+
const len = payload.length;
|
|
181
|
+
const header = new Uint8Array(7);
|
|
182
|
+
header[0] = 0x57; // 'W'
|
|
183
|
+
header[1] = 0x41; // 'A'
|
|
184
|
+
header[2] = 0x01; // binary flag
|
|
185
|
+
header[3] = 0x2d; // version 45
|
|
186
|
+
header[4] = (len >> 16) & 0xff;
|
|
187
|
+
header[5] = (len >> 8) & 0xff;
|
|
188
|
+
header[6] = len & 0xff;
|
|
189
|
+
return (0, crypto_js_1.concatBytes)(header, payload);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Strip WA frame header (7 bytes) dari incoming message
|
|
193
|
+
* Returns just the payload
|
|
194
|
+
*/
|
|
195
|
+
unwrapWAFrame(data) {
|
|
196
|
+
if (data.length < 7) {
|
|
197
|
+
throw new Error(`Invalid WA frame: too short (${data.length} bytes)`);
|
|
198
|
+
}
|
|
199
|
+
// Verify WA magic
|
|
200
|
+
if (data[0] !== 0x57 || data[1] !== 0x41) {
|
|
201
|
+
throw new Error(`Invalid WA frame magic: ${data[0]}, ${data[1]}`);
|
|
202
|
+
}
|
|
203
|
+
return data.subarray(7);
|
|
204
|
+
}
|
|
169
205
|
/**
|
|
170
206
|
* Wait for a single WebSocket message with timeout
|
|
171
207
|
*/
|
|
@@ -210,7 +246,7 @@ class WAWebSocket extends events_1.EventEmitter {
|
|
|
210
246
|
}
|
|
211
247
|
/**
|
|
212
248
|
* Handle incoming message - decrypt jika handshake done
|
|
213
|
-
* After handshake, messages
|
|
249
|
+
* After handshake, messages still use WA frame format
|
|
214
250
|
*/
|
|
215
251
|
handleMessage(data) {
|
|
216
252
|
if (!this.isHandshakeDone) {
|
|
@@ -218,8 +254,9 @@ class WAWebSocket extends events_1.EventEmitter {
|
|
|
218
254
|
return;
|
|
219
255
|
}
|
|
220
256
|
try {
|
|
221
|
-
//
|
|
222
|
-
const
|
|
257
|
+
// Strip WA header (7 bytes) then decrypt
|
|
258
|
+
const payload = this.unwrapWAFrame(new Uint8Array(data));
|
|
259
|
+
const plaintext = this.trafficCipher.decrypt(payload);
|
|
223
260
|
this.emit('message', plaintext);
|
|
224
261
|
}
|
|
225
262
|
catch (err) {
|
|
@@ -229,15 +266,15 @@ class WAWebSocket extends events_1.EventEmitter {
|
|
|
229
266
|
}
|
|
230
267
|
/**
|
|
231
268
|
* Send encrypted frame ke server
|
|
232
|
-
*
|
|
269
|
+
* Wraps encrypted data dengan WA frame header
|
|
233
270
|
*/
|
|
234
271
|
send(plaintext) {
|
|
235
272
|
if (!this.isHandshakeDone || !this.trafficCipher) {
|
|
236
273
|
throw new Error('Cannot send before handshake complete');
|
|
237
274
|
}
|
|
238
275
|
const ciphertext = this.trafficCipher.encrypt(plaintext);
|
|
239
|
-
|
|
240
|
-
this.ws.send(Buffer.from(
|
|
276
|
+
const frame = this.wrapWAFrame(ciphertext);
|
|
277
|
+
this.ws.send(Buffer.from(frame));
|
|
241
278
|
}
|
|
242
279
|
/**
|
|
243
280
|
* Start keep-alive ping
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-socket.js","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ws-socket.js","sourceRoot":"","sources":["../../src/socket/ws-socket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kangwifi-pro/waliwa",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "Lightweight, RAM-efficient WhatsApp library with hybrid protocol (WhatsApp Web MD + Mobile API), Multi-Branch SKDM Recovery system, Community features, and 9+ Baileys issue fixes. More complete than Baileys, lighter than ZapoJS.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/index.ts
CHANGED
|
@@ -324,7 +324,7 @@ export {
|
|
|
324
324
|
export * from './types/index.js';
|
|
325
325
|
|
|
326
326
|
// ============== Version ==============
|
|
327
|
-
export const VERSION = '1.1.
|
|
327
|
+
export const VERSION = '1.1.2';
|
|
328
328
|
export const LIBRARY_NAME = 'waliwa';
|
|
329
329
|
|
|
330
330
|
// ============== Default Config ==============
|
package/src/socket/ws-socket.ts
CHANGED
|
@@ -171,37 +171,44 @@ export class WAWebSocket extends EventEmitter {
|
|
|
171
171
|
/**
|
|
172
172
|
* Start Noise Protocol XX handshake
|
|
173
173
|
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
174
|
+
* WA Frame Format (used in ALL messages including handshake):
|
|
175
|
+
* [0x57, 0x41] (2 bytes "WA" magic)
|
|
176
|
+
* [0x01] (1 byte binary flag)
|
|
177
|
+
* [version] (1 byte, e.g. 0x2d = 45)
|
|
178
|
+
* [length_hi, length_mid, length_lo] (3 bytes big-endian length)
|
|
179
|
+
* [payload]
|
|
178
180
|
*
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
+
* Noise XX Pattern (3 messages):
|
|
182
|
+
* 1. Client → Server: WA header + ephemeral (32 bytes)
|
|
183
|
+
* 2. Server → Client: WA header + ephemeral(32) + enc_static(48) + enc_payload
|
|
184
|
+
* 3. Client → Server: WA header + enc_static(48) + enc_payload
|
|
181
185
|
*/
|
|
182
186
|
private async startHandshake(): Promise<void> {
|
|
183
187
|
this.handshake = new NoiseHandshake(this.noiseKey, true);
|
|
184
188
|
|
|
185
189
|
// === Message 1: Send client ephemeral only ===
|
|
186
|
-
// Format: [0x57, 0x41] (WA magic) + [version 2 bytes] + [32-byte ephemeral]
|
|
187
190
|
const ephemeralPub = this.handshake.buildClientHello();
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
this.logger.debug(`Sending client hello (${clientHello.length} bytes)`);
|
|
191
|
+
const clientHello = this.wrapWAFrame(ephemeralPub);
|
|
192
|
+
this.logger.debug(`Sending client hello (${clientHello.length} bytes, payload ${ephemeralPub.length})`);
|
|
191
193
|
this.ws!.send(Buffer.from(clientHello));
|
|
192
194
|
|
|
193
195
|
// === Message 2: Wait for server response ===
|
|
194
196
|
const serverData = await this.waitForMessage(15000);
|
|
195
197
|
|
|
196
|
-
//
|
|
197
|
-
this.
|
|
198
|
+
// Strip WA header (7 bytes) from server response
|
|
199
|
+
const serverPayload = this.unwrapWAFrame(new Uint8Array(serverData));
|
|
200
|
+
this.logger.debug(`Received server response (${serverData.length} bytes, payload ${serverPayload.length})`);
|
|
201
|
+
|
|
202
|
+
// Process server Noise data
|
|
203
|
+
this.handshake.readResponderHandshake(serverPayload);
|
|
198
204
|
this.logger.debug('Server handshake response processed');
|
|
199
205
|
|
|
200
206
|
// === Message 3: Send encrypted static + payload ===
|
|
201
207
|
const clientPayload = this.buildClientPayload();
|
|
202
208
|
const clientResponse = this.handshake.writeClientResponse(clientPayload);
|
|
203
|
-
|
|
204
|
-
this.
|
|
209
|
+
const wrappedResponse = this.wrapWAFrame(clientResponse);
|
|
210
|
+
this.logger.debug(`Sending client response (${wrappedResponse.length} bytes, payload ${clientResponse.length})`);
|
|
211
|
+
this.ws!.send(Buffer.from(wrappedResponse));
|
|
205
212
|
|
|
206
213
|
// === Finalize: derive traffic keys ===
|
|
207
214
|
const { sendKey, recvKey } = this.handshake.finalize();
|
|
@@ -209,6 +216,38 @@ export class WAWebSocket extends EventEmitter {
|
|
|
209
216
|
this.logger.debug('Noise handshake completed, traffic keys derived');
|
|
210
217
|
}
|
|
211
218
|
|
|
219
|
+
/**
|
|
220
|
+
* Wrap payload dengan WA frame header
|
|
221
|
+
* Format: [0x57, 0x41, 0x01, version, len_hi, len_mid, len_lo] + payload
|
|
222
|
+
*/
|
|
223
|
+
private wrapWAFrame(payload: Uint8Array): Uint8Array {
|
|
224
|
+
const len = payload.length;
|
|
225
|
+
const header = new Uint8Array(7);
|
|
226
|
+
header[0] = 0x57; // 'W'
|
|
227
|
+
header[1] = 0x41; // 'A'
|
|
228
|
+
header[2] = 0x01; // binary flag
|
|
229
|
+
header[3] = 0x2d; // version 45
|
|
230
|
+
header[4] = (len >> 16) & 0xff;
|
|
231
|
+
header[5] = (len >> 8) & 0xff;
|
|
232
|
+
header[6] = len & 0xff;
|
|
233
|
+
return concatBytes(header, payload);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Strip WA frame header (7 bytes) dari incoming message
|
|
238
|
+
* Returns just the payload
|
|
239
|
+
*/
|
|
240
|
+
private unwrapWAFrame(data: Uint8Array): Uint8Array {
|
|
241
|
+
if (data.length < 7) {
|
|
242
|
+
throw new Error(`Invalid WA frame: too short (${data.length} bytes)`);
|
|
243
|
+
}
|
|
244
|
+
// Verify WA magic
|
|
245
|
+
if (data[0] !== 0x57 || data[1] !== 0x41) {
|
|
246
|
+
throw new Error(`Invalid WA frame magic: ${data[0]}, ${data[1]}`);
|
|
247
|
+
}
|
|
248
|
+
return data.subarray(7);
|
|
249
|
+
}
|
|
250
|
+
|
|
212
251
|
/**
|
|
213
252
|
* Wait for a single WebSocket message with timeout
|
|
214
253
|
*/
|
|
@@ -259,7 +298,7 @@ export class WAWebSocket extends EventEmitter {
|
|
|
259
298
|
|
|
260
299
|
/**
|
|
261
300
|
* Handle incoming message - decrypt jika handshake done
|
|
262
|
-
* After handshake, messages
|
|
301
|
+
* After handshake, messages still use WA frame format
|
|
263
302
|
*/
|
|
264
303
|
private handleMessage(data: Buffer): void {
|
|
265
304
|
if (!this.isHandshakeDone) {
|
|
@@ -267,8 +306,9 @@ export class WAWebSocket extends EventEmitter {
|
|
|
267
306
|
return;
|
|
268
307
|
}
|
|
269
308
|
try {
|
|
270
|
-
//
|
|
271
|
-
const
|
|
309
|
+
// Strip WA header (7 bytes) then decrypt
|
|
310
|
+
const payload = this.unwrapWAFrame(new Uint8Array(data));
|
|
311
|
+
const plaintext = this.trafficCipher!.decrypt(payload);
|
|
272
312
|
this.emit('message', plaintext);
|
|
273
313
|
} catch (err: any) {
|
|
274
314
|
this.logger.error(`Message decrypt failed: ${err.message}`);
|
|
@@ -278,15 +318,15 @@ export class WAWebSocket extends EventEmitter {
|
|
|
278
318
|
|
|
279
319
|
/**
|
|
280
320
|
* Send encrypted frame ke server
|
|
281
|
-
*
|
|
321
|
+
* Wraps encrypted data dengan WA frame header
|
|
282
322
|
*/
|
|
283
323
|
send(plaintext: Uint8Array): void {
|
|
284
324
|
if (!this.isHandshakeDone || !this.trafficCipher) {
|
|
285
325
|
throw new Error('Cannot send before handshake complete');
|
|
286
326
|
}
|
|
287
327
|
const ciphertext = this.trafficCipher.encrypt(plaintext);
|
|
288
|
-
|
|
289
|
-
this.ws!.send(Buffer.from(
|
|
328
|
+
const frame = this.wrapWAFrame(ciphertext);
|
|
329
|
+
this.ws!.send(Buffer.from(frame));
|
|
290
330
|
}
|
|
291
331
|
|
|
292
332
|
/**
|