wowok 2.1.18 → 2.1.19

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.
@@ -1,3 +1,4 @@
1
+ import { SignalProtocolStorage } from "./storage.js";
1
2
  import type { Xed25519KeyPair, MessengerConfig, RemoteBundle } from "./types.js";
2
3
  type KeyPairType = {
3
4
  pubKey: ArrayBuffer;
@@ -78,4 +79,50 @@ export declare class MessengerSession {
78
79
  */
79
80
  getRegistrationId(): Promise<number>;
80
81
  }
82
+ export interface SessionSnapshot {
83
+ sessionData: string | null;
84
+ timestamp: number;
85
+ }
86
+ export declare class SessionStateManager {
87
+ private store;
88
+ constructor(store: SignalProtocolStorage);
89
+ /**
90
+ * 保存会话快照
91
+ */
92
+ snapshotSession(sessionKey: string): Promise<SessionSnapshot>;
93
+ /**
94
+ * 回滚会话状态
95
+ */
96
+ rollbackSession(sessionKey: string, snapshot: SessionSnapshot): Promise<void>;
97
+ /**
98
+ * 提交会话状态(保留新会话)
99
+ */
100
+ commitSession(_sessionKey: string): Promise<void>;
101
+ }
102
+ export interface DecryptResult {
103
+ success: boolean;
104
+ plaintext?: string;
105
+ sessionUpdated: boolean;
106
+ sessionRolledBack: boolean;
107
+ messageType: "PREKEY" | "WHISPER";
108
+ error?: string;
109
+ }
110
+ export declare class DecryptionEngine {
111
+ private sessionManager;
112
+ private store;
113
+ constructor(store: SignalProtocolStorage);
114
+ /**
115
+ * 统一解密入口
116
+ */
117
+ decryptMessage(myAddress: string, peerAddress: string, ciphertext: ArrayBuffer, msgType: number, peerDeviceId?: number): Promise<DecryptResult>;
118
+ /**
119
+ * 处理 PREKEY_MESSAGE
120
+ */
121
+ private handlePreKeyMessage;
122
+ /**
123
+ * 处理 WHISPER_MESSAGE
124
+ */
125
+ private handleWhisperMessage;
126
+ private arrayBufferToBinary;
127
+ }
81
128
  export {};
@@ -10,12 +10,17 @@
10
10
  * 3. 消息加密和解密
11
11
  */
12
12
  import { KeyHelper, SessionBuilder, SessionCipher, SignalProtocolAddress, } from "libsignal-protocol-typescript";
13
- // eslint-disable-next-line import/no-cycle
14
- import { Account } from "../local/account.js";
15
13
  import { SignalProtocolStorage } from "./storage.js";
16
14
  import { MessengerServerClient } from "./server.js";
17
15
  import { recoverXed25519FromX25519PrivateKey, arrayBufferToUint8Array, bytesToBase64, base64ToBytes, } from "./crypto.js";
18
16
  import { MessageType, DEFAULT_MESSENGER_CONFIG, MessengerError, MessengerErrorCode, DEFAULT_DEVICE_ID, } from "./types.js";
17
+ // 动态导入 Account 以避免循环依赖
18
+ // eslint-disable-next-line import/no-cycle
19
+ async function getAccount() {
20
+ // eslint-disable-next-line import/no-cycle
21
+ const { Account } = await import("../local/account.js");
22
+ return Account.Instance();
23
+ }
19
24
  export class MessengerSession {
20
25
  store;
21
26
  serverClient;
@@ -54,7 +59,7 @@ export class MessengerSession {
54
59
  throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, "userAddress is required to derive identity");
55
60
  }
56
61
  // 从 Account 派生 X25519 密钥对
57
- const { privateKey, publicKey } = await Account.Instance().deriveX25519KeyPair(userAddress);
62
+ const { privateKey, publicKey } = await (await getAccount()).deriveX25519KeyPair(userAddress);
58
63
  // 生成注册 ID(可以从公钥派生,确保确定性)
59
64
  const registrationId = this.deriveRegistrationId(publicKey);
60
65
  // 转换为 Signal Protocol 格式
@@ -118,14 +123,14 @@ export class MessengerSession {
118
123
  // 生成 One-Time PreKeys(暂不保存)
119
124
  const oneTimePrekeys = await this.generatePreKeyBatch(this.config.prekey_count, userAddress);
120
125
  const prefixedIdentityKey = arrayBufferToUint8Array(identity.signalIdentity.pubKey);
121
- const account = await Account.Instance().get(userAddress, false);
126
+ const account = await (await getAccount()).get(userAddress, false);
122
127
  if (!account?.pubkey) {
123
128
  throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${userAddress}`);
124
129
  }
125
130
  const timestamp = Date.now();
126
131
  const nonce = this.generateNonce();
127
132
  const message = `register:${account.pubkey}:${timestamp}:${nonce}`;
128
- const signResult = await Account.Instance().signData(userAddress, message);
133
+ const signResult = await (await getAccount()).signData(userAddress, message);
129
134
  const signature = Buffer.from(signResult.signature.slice(2), "hex");
130
135
  const registerRequest = {
131
136
  userAddress,
@@ -220,7 +225,7 @@ export class MessengerSession {
220
225
  if (existingPreKey) {
221
226
  const pubKeyBytes = new Uint8Array(existingPreKey.pubKey);
222
227
  const publicKeyBase64 = bytesToBase64(pubKeyBytes);
223
- const signResult = await Account.Instance().signData(userAddress, pubKeyBytes);
228
+ const signResult = await (await getAccount()).signData(userAddress, pubKeyBytes);
224
229
  const signature = Buffer.from(signResult.signature.slice(2), "hex");
225
230
  prekeys.push({
226
231
  keyId,
@@ -231,7 +236,7 @@ export class MessengerSession {
231
236
  }
232
237
  const preKey = await KeyHelper.generatePreKey(keyId);
233
238
  const pubKeyBytes = new Uint8Array(preKey.keyPair.pubKey);
234
- const signResult = await Account.Instance().signData(userAddress, pubKeyBytes);
239
+ const signResult = await (await getAccount()).signData(userAddress, pubKeyBytes);
235
240
  const signature = Buffer.from(signResult.signature.slice(2), "hex");
236
241
  await this.store.storePreKey(keyId, preKey.keyPair);
237
242
  prekeys.push({
@@ -261,14 +266,14 @@ export class MessengerSession {
261
266
  if (prekeys.length === 0) {
262
267
  return;
263
268
  }
264
- const account = await Account.Instance().get(userAddress, false);
269
+ const account = await (await getAccount()).get(userAddress, false);
265
270
  if (!account?.pubkey) {
266
271
  throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${userAddress}`);
267
272
  }
268
273
  const timestamp = Date.now();
269
274
  const nonce = this.generateNonce();
270
275
  const message = `upload_prekeys:${account.pubkey}:${timestamp}:${nonce}`;
271
- const signResult = await Account.Instance().signData(userAddress, message);
276
+ const signResult = await (await getAccount()).signData(userAddress, message);
272
277
  const signature = Buffer.from(signResult.signature.slice(2), "hex");
273
278
  await this.serverClient.uploadPreKeys({
274
279
  userAddress,
@@ -298,7 +303,7 @@ export class MessengerSession {
298
303
  return;
299
304
  }
300
305
  if (!remoteBundle) {
301
- const account = await Account.Instance().get(myAddress, false);
306
+ const account = await (await getAccount()).get(myAddress, false);
302
307
  if (!account?.pubkey) {
303
308
  throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${myAddress}`);
304
309
  }
@@ -306,7 +311,7 @@ export class MessengerSession {
306
311
  const nonce = this.generateNonce();
307
312
  const publicKeyWithFlag = account.pubkey;
308
313
  const message = `get_bundle:${myAddress}:${timestamp}:${nonce}`;
309
- const signResult = await Account.Instance().signData(myAddress, message);
314
+ const signResult = await (await getAccount()).signData(myAddress, message);
310
315
  const signature = Buffer.from(signResult.signature.slice(2), "hex");
311
316
  remoteBundle = await this.serverClient.fetchRemoteBundle(peerAddress, myAddress, publicKeyWithFlag, {
312
317
  signatureScheme: "ED25519",
@@ -361,12 +366,12 @@ export class MessengerSession {
361
366
  let existingSession = await this.store.loadSession(sessionKey);
362
367
  let isNewSession = !existingSession;
363
368
  let retryCount = 0;
364
- const maxRetries = 2;
369
+ const maxRetries = 5; // 【用户要求】加大容错窗口,让消息可以重试更多次
365
370
  while (retryCount <= maxRetries) {
366
371
  try {
367
372
  if (isNewSession) {
368
373
  console.log(`[Session] 建立新会话 (尝试 ${retryCount + 1}/${maxRetries + 1})`);
369
- const account = await Account.Instance().get(myAddress, false);
374
+ const account = await (await getAccount()).get(myAddress, false);
370
375
  if (!account?.pubkey) {
371
376
  throw new MessengerError(MessengerErrorCode.IDENTITY_NOT_FOUND, `Account not found for ${myAddress}`);
372
377
  }
@@ -374,7 +379,7 @@ export class MessengerSession {
374
379
  const nonce = this.generateNonce();
375
380
  const publicKeyWithFlag = account.pubkey;
376
381
  const message = `get_bundle:${myAddress}:${timestamp}:${nonce}`;
377
- const signResult = await Account.Instance().signData(myAddress, message);
382
+ const signResult = await (await getAccount()).signData(myAddress, message);
378
383
  const signature = Buffer.from(signResult.signature.slice(2), "hex");
379
384
  const remoteBundle = await this.serverClient.fetchRemoteBundle(peerAddress, myAddress, publicKeyWithFlag, {
380
385
  signatureScheme: "ED25519",
@@ -441,20 +446,55 @@ export class MessengerSession {
441
446
  ciphertextBinary += String.fromCharCode(ciphertextArray[i]);
442
447
  }
443
448
  let retryCount = 0;
444
- const maxRetries = 2;
449
+ const maxRetries = 5; // 【用户要求】加大容错窗口,让消息可以重试更多次
450
+ // 【新增】如果是 WHISPER_MESSAGE 且没有现有会话,直接抛出可重试错误
451
+ if (msgType !== MessageType.PREKEY_MESSAGE && !existingSession) {
452
+ console.log(`[Session] 收到 WHISPER_MESSAGE 但无现有会话,需要等待 PREKEY_MESSAGE`);
453
+ throw new Error("收到 WHISPER_MESSAGE 但无现有会话,需要等待 PREKEY_MESSAGE");
454
+ }
445
455
  while (retryCount <= maxRetries) {
446
456
  try {
447
457
  const cipher = new SessionCipher(this.store, protocolAddress);
448
458
  let plaintextBuffer;
449
459
  if (msgType === MessageType.PREKEY_MESSAGE) {
450
- console.log(`[Session] 收到 PREKEY_MESSAGE,发送方想用新的 PreKey Bundle 建立会话`);
451
- if (existingSession && retryCount === 0) {
452
- console.log(`[Session] 检测到已有会话,但收到 PREKEY_MESSAGE,先删除旧会话以建立新会话`);
453
- await this.store.removeSession(sessionKey);
454
- existingSession = undefined;
460
+ console.log(`[Session] 收到 PREKEY_MESSAGE,尝试解密 (尝试 ${retryCount + 1}/${maxRetries + 1})`);
461
+ try {
462
+ // 【用户要求】先用尝试解密(真解密可能推动会话密钥变更,极度重要!)
463
+ plaintextBuffer =
464
+ await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
465
+ console.log(`[Session] PREKEY_MESSAGE 解密成功!`);
466
+ return decoder.decode(plaintextBuffer);
467
+ }
468
+ catch (decryptError) {
469
+ console.log(`[Session] 直接解密 PREKEY_MESSAGE 失败: ${decryptError instanceof Error ? decryptError.message : String(decryptError)}`);
470
+ // 如果解密失败,再处理 PREKEY 竞争的情况(但只在第一次尝试时处理)
471
+ if (existingSession && retryCount === 0) {
472
+ // 【用户要求】PREKEY 竞争时,双方始终优先以小地址发送的消息为最终依据
473
+ const myAddr = myAddress.toLowerCase();
474
+ const peerAddr = peerAddress.toLowerCase();
475
+ if (myAddr < peerAddr) {
476
+ // 我的地址较小,保留我的会话!不处理这个 PREKEY_MESSAGE,稍后重试
477
+ console.log(`[Session] 我的地址较小 (${myAddr} < ${peerAddr}),保留我的会话,稍后重试`);
478
+ throw new Error("PREKEY 竞争:我的地址较小,保留我的会话");
479
+ }
480
+ else {
481
+ // 我的地址较大,删除我的会话,用对方的 PREKEY_MESSAGE 建立新会话
482
+ console.log(`[Session] 我的地址较大 (${myAddr} > ${peerAddr}),删除我的会话,用对方的 PREKEY_MESSAGE 建立新会话`);
483
+ await this.store.removeSession(sessionKey);
484
+ existingSession = undefined;
485
+ // 现在删除了会话,重新尝试解密
486
+ console.log(`[Session] 已删除旧会话,重新尝试解密...`);
487
+ plaintextBuffer =
488
+ await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
489
+ console.log(`[Session] PREKEY_MESSAGE 解密成功,新会话已建立`);
490
+ return decoder.decode(plaintextBuffer);
491
+ }
492
+ }
493
+ else {
494
+ // 没有现有会话,或者不是第一次尝试,重新抛出解密错误
495
+ throw decryptError;
496
+ }
455
497
  }
456
- plaintextBuffer = await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
457
- console.log(`[Session] PREKEY_MESSAGE 解密成功,新会话已建立`);
458
498
  }
459
499
  else {
460
500
  plaintextBuffer = await cipher.decryptWhisperMessage(ciphertextBinary, "binary");
@@ -521,4 +561,160 @@ export class MessengerSession {
521
561
  return identity.registrationId;
522
562
  }
523
563
  }
564
+ export class SessionStateManager {
565
+ store;
566
+ constructor(store) {
567
+ this.store = store;
568
+ }
569
+ /**
570
+ * 保存会话快照
571
+ */
572
+ async snapshotSession(sessionKey) {
573
+ const sessionData = await this.store.loadSession(sessionKey);
574
+ return {
575
+ sessionData: sessionData || null,
576
+ timestamp: Date.now(),
577
+ };
578
+ }
579
+ /**
580
+ * 回滚会话状态
581
+ */
582
+ async rollbackSession(sessionKey, snapshot) {
583
+ if (snapshot.sessionData) {
584
+ await this.store.storeSession(sessionKey, snapshot.sessionData);
585
+ console.log(`[SessionState] 回滚会话: ${sessionKey}`);
586
+ }
587
+ else {
588
+ await this.store.removeSession(sessionKey);
589
+ console.log(`[SessionState] 清除会话: ${sessionKey}`);
590
+ }
591
+ }
592
+ /**
593
+ * 提交会话状态(保留新会话)
594
+ */
595
+ async commitSession(_sessionKey) {
596
+ // 新会话已经在 decrypt 过程中保存到存储
597
+ // 这里可以添加额外的确认逻辑
598
+ console.log(`[SessionState] 提交新会话`);
599
+ }
600
+ }
601
+ export class DecryptionEngine {
602
+ sessionManager;
603
+ store;
604
+ constructor(store) {
605
+ this.store = store;
606
+ this.sessionManager = new SessionStateManager(store);
607
+ }
608
+ /**
609
+ * 统一解密入口
610
+ */
611
+ async decryptMessage(myAddress, peerAddress, ciphertext, msgType, peerDeviceId = DEFAULT_DEVICE_ID) {
612
+ const protocolAddress = new SignalProtocolAddress(peerAddress, peerDeviceId);
613
+ const sessionKey = protocolAddress.toString();
614
+ // 1. 保存会话快照(用于回滚)
615
+ const snapshot = await this.sessionManager.snapshotSession(sessionKey);
616
+ try {
617
+ if (msgType === MessageType.PREKEY_MESSAGE) {
618
+ return await this.handlePreKeyMessage(myAddress, peerAddress, ciphertext, protocolAddress, sessionKey, snapshot);
619
+ }
620
+ else {
621
+ return await this.handleWhisperMessage(myAddress, peerAddress, ciphertext, protocolAddress, sessionKey, snapshot);
622
+ }
623
+ }
624
+ catch (error) {
625
+ // 发生错误,回滚会话
626
+ await this.sessionManager.rollbackSession(sessionKey, snapshot);
627
+ return {
628
+ success: false,
629
+ sessionUpdated: false,
630
+ sessionRolledBack: true,
631
+ messageType: msgType === MessageType.PREKEY_MESSAGE
632
+ ? "PREKEY"
633
+ : "WHISPER",
634
+ error: error instanceof Error ? error.message : String(error),
635
+ };
636
+ }
637
+ }
638
+ /**
639
+ * 处理 PREKEY_MESSAGE
640
+ */
641
+ async handlePreKeyMessage(myAddress, peerAddress, ciphertext, protocolAddress, sessionKey, snapshot) {
642
+ console.log(`[Decrypt] 处理 PREKEY_MESSAGE from ${peerAddress}`);
643
+ const cipher = new SessionCipher(this.store, protocolAddress);
644
+ const decoder = new TextDecoder();
645
+ // 尝试解密(这会可能建立新会话)
646
+ const ciphertextBinary = this.arrayBufferToBinary(ciphertext);
647
+ const plaintextBuffer = await cipher.decryptPreKeyWhisperMessage(ciphertextBinary, "binary");
648
+ const plaintext = decoder.decode(plaintextBuffer);
649
+ console.log(`[Decrypt] PREKEY_MESSAGE 解密成功`);
650
+ // 地址优先级判断
651
+ const myAddr = myAddress.toLowerCase();
652
+ const peerAddr = peerAddress.toLowerCase();
653
+ if (myAddr < peerAddr) {
654
+ // 我是小地址,我的会话优先
655
+ // 回滚到之前的会话状态
656
+ await this.sessionManager.rollbackSession(sessionKey, snapshot);
657
+ console.log(`[Decrypt] 小地址(${myAddr})优先,回滚会话,但消息已解密`);
658
+ return {
659
+ success: true,
660
+ plaintext,
661
+ sessionUpdated: false,
662
+ sessionRolledBack: true,
663
+ messageType: "PREKEY",
664
+ };
665
+ }
666
+ else {
667
+ // 我是大地址,接受对方的会话
668
+ await this.sessionManager.commitSession(sessionKey);
669
+ console.log(`[Decrypt] 大地址(${myAddr})接受新会话`);
670
+ return {
671
+ success: true,
672
+ plaintext,
673
+ sessionUpdated: true,
674
+ sessionRolledBack: false,
675
+ messageType: "PREKEY",
676
+ };
677
+ }
678
+ }
679
+ /**
680
+ * 处理 WHISPER_MESSAGE
681
+ */
682
+ async handleWhisperMessage(_myAddress, peerAddress, ciphertext, protocolAddress, sessionKey, snapshot) {
683
+ console.log(`[Decrypt] 处理 WHISPER_MESSAGE from ${peerAddress}`);
684
+ // 检查是否有现有会话
685
+ const existingSession = await this.store.loadSession(sessionKey);
686
+ if (!existingSession) {
687
+ console.log(`[Decrypt] 无会话,WHISPER_MESSAGE 需要等待 PREKEY`);
688
+ await this.sessionManager.rollbackSession(sessionKey, snapshot);
689
+ return {
690
+ success: false,
691
+ sessionUpdated: false,
692
+ sessionRolledBack: false,
693
+ messageType: "WHISPER",
694
+ error: "NO_SESSION",
695
+ };
696
+ }
697
+ const cipher = new SessionCipher(this.store, protocolAddress);
698
+ const decoder = new TextDecoder();
699
+ // 尝试解密
700
+ const ciphertextBinary = this.arrayBufferToBinary(ciphertext);
701
+ const plaintextBuffer = await cipher.decryptWhisperMessage(ciphertextBinary, "binary");
702
+ console.log(`[Decrypt] WHISPER_MESSAGE 解密成功`);
703
+ return {
704
+ success: true,
705
+ plaintext: decoder.decode(plaintextBuffer),
706
+ sessionUpdated: true,
707
+ sessionRolledBack: false,
708
+ messageType: "WHISPER",
709
+ };
710
+ }
711
+ arrayBufferToBinary(buffer) {
712
+ const array = new Uint8Array(buffer);
713
+ let binary = "";
714
+ for (let i = 0; i < array.length; i++) {
715
+ binary += String.fromCharCode(array[i]);
716
+ }
717
+ return binary;
718
+ }
719
+ }
524
720
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/w/messenger/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../../src/w/messenger/session.ts"],"names":[],"mappings":"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"}
@@ -780,15 +780,17 @@ export class MessageStorage {
780
780
  */
781
781
  getLastReceivedLeafIndex(myAddress, peerAddress) {
782
782
  // 查询从 peerAddress 发送给 myAddress 的消息中,
783
- // 最大的 last_received_leaf_index
783
+ // 最大的 leaf_index(这是我作为接收方,已经解密成功的对方发来的消息的最大序号)
784
+ // 注意:from_address 和 to_address 已经确定了消息方向,无需检查 direction 字段
784
785
  const myAddrLower = myAddress.toLowerCase();
785
786
  const peerAddrLower = peerAddress.toLowerCase();
786
787
  const row = this.db
787
788
  .prepare(`
788
- SELECT MAX(last_received_leaf_index) as max_index
789
+ SELECT MAX(leaf_index) as max_index
789
790
  FROM messages
790
791
  WHERE from_address = ? AND to_address = ?
791
- AND last_received_leaf_index IS NOT NULL
792
+ AND status = 'decrypted'
793
+ AND leaf_index IS NOT NULL
792
794
  `)
793
795
  .get(peerAddrLower, myAddrLower);
794
796
  return row?.max_index ?? -1;