@neykoor/libsignal-node 1.0.9 → 1.0.11

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/README.md CHANGED
@@ -30,8 +30,12 @@ Mismo API, misma criptografía, cero `@ts-ignore`, tipado de punta a punta — y
30
30
  - 🛡️ **Verificación de firma real en `initOutgoing`** — la librería original invoca `curve.verifySignature(..., true)`, y ese cuarto parámetro (`isInit`) hace que la firma del signed prekey **nunca se valide** (`return isInit ? true : curveJs.verify(...)`). En `libsignal-node-ts` se eliminó ese bypass: la firma del signed prekey siempre se verifica de verdad antes de iniciar sesión.
31
31
  - ✅ **Validador de prekey bundles** (`assertValidDeviceKeyBundle`) — módulo nuevo que revisa longitudes de claves, rangos de `registrationId` y `keyId` antes de aceptar un bundle remoto. La librería original no valida nada de esto, solo confía en la forma del objeto.
32
32
  - 🧹 **Borrado de material sensible en memoria** (`wipeBuffer` / `wipeBuffers`) — las claves de mensaje, cadenas y secretos intermedios se ponen a cero después de usarse en `encrypt`/`decrypt`. La versión original nunca limpia estos buffers, quedan en memoria hasta que el GC los recoja.
33
- - 🔐 **Comparación de identidades a tiempo constante** — `MemorySignalStorage` usa `timingSafeEqual` para comparar identity keys, evitando ataques de timing. La original no trae ningún storage de referencia.
34
- - 💾 **`MemorySignalStorage` incluida** — implementación lista para usar de `SignalStorage` (sesiones, prekeys, identidades de confianza). En la librería original tienes que escribir tu propio storage desde cero, no traen ninguno.
33
+ - 🔐 **Comparación de identidades a tiempo constante** — `MemorySignalStorage` y `FileSignalStorage` usan `timingSafeEqual` para comparar identity keys, evitando ataques de timing. La original no trae ningún storage de referencia.
34
+ - 💾 **`MemorySignalStorage` y `FileSignalStorage` incluidas** — implementaciones listas para usar de `SignalStorage` (sesiones, prekeys, identidades de confianza) **y** `SenderKeyStore` (sender keys de grupo). `FileSignalStorage` persiste todo a un único archivo JSON en disco (escritura atómica con debounce), para bots que necesitan sobrevivir reinicios. En la librería original tienes que escribir tu propio storage desde cero, no traen ninguno.
35
+ - 🔄 **Rotación de sender key al salir un miembro del grupo** (`GroupSessionBuilder.rotate`) — genera una sender key nueva desde cero y descarta la cadena anterior, para que un miembro que sale del grupo no pueda derivar mensajes futuros a partir del chain key que ya tenía. La original no expone ninguna forma de rotar o invalidar una sender key ya distribuida.
36
+ - 🧹 **Limpieza automática de signed prekeys retiradas** — al rotar el signed prekey, `MemorySignalStorage`/`FileSignalStorage` guardan el anterior por un grace period configurable (por defecto 3 días, para no romper prekey messages en tránsito) y luego lo borran solos. La original no borra nunca los signed prekeys viejos, se acumulan indefinidamente.
37
+ - 🔒 **Cifrado en reposo para `FileSignalStorage`** — con `encryptionKey` (32 bytes) cada guardado se cifra con AES-256-GCM antes de tocar disco. Sin esto (o con la librería original, que no trae ningún storage) tu identity key privada y todas tus sesiones quedan en JSON plano en el filesystem.
38
+ - ⏱️ **Mantenimiento automático de prekeys** (`PreKeyPoolManager.startAutoMaintenance`) — repone prekeys y rota el signed prekey solo, sin que el bot tenga que acordarse de llamarlo. La original deja esto completamente en manos de quien la usa.
35
39
  - 🧾 **Sistema de logging inyectable** (`setLogger` / `getLogger`) — permite conectar tu logger (pino, winston, consola) o silenciar todo. La original usa `console.error` fijo, sin forma de desactivarlo.
36
40
  - 🏷️ **Tipado estricto de punta a punta** — `strict: true`, `noUncheckedIndexedAccess`, interfaces para `SignalStorage`, `DeviceKeyBundle`, `EncryptedMessage`, etc. La original es JS puro sin ningún `.d.ts` propio para su lógica principal.
37
41
  - 🟦 **100% TypeScript en `src/`**, incluidos los mensajes protobuf de Signal (`whisper-text-protocol.ts`) — sin un solo `.js` generado a mano.
@@ -43,15 +47,11 @@ Mismo API, misma criptografía, cero `@ts-ignore`, tipado de punta a punta — y
43
47
  ### Lo que tienen en común
44
48
 
45
49
  - Implementación completa del **Double Ratchet** (X3DH, sesiones, ratcheting)
46
- - Misma API pública: `ProtocolAddress`, `SessionBuilder`, `SessionCipher`, `SessionRecord`, `keyhelper`, `curve`, `crypto`
50
+ - Mensajería de **grupo con Sender Key** (`GroupCipher`, `GroupSessionBuilder`, `SenderKeyRecord`, `SenderKeyDistributionMessage`)
51
+ - Misma API pública: `ProtocolAddress`, `SessionBuilder`, `SessionCipher`, `SessionRecord`, `GroupCipher`, `GroupSessionBuilder`, `keyhelper`, `curve`, `crypto`
47
52
  - Misma base criptográfica que `libsignal-node` (curve25519 y `protobufjs`), aquí vía `@neykoor/curve25519-ts`
48
53
  - Soporte nativo de `x25519` vía `node:crypto` con fallback a `@neykoor/curve25519-ts`
49
54
 
50
- ### Pendiente por traer desde `libsignal-node` (roadmap)
51
-
52
- - 🔁 **Workflows de CI/CD** (`.github/workflows`) — build, lint y publish automático a npm, como los que trae la original.
53
- - 📜 **`SECURITY.md` y `CODE_OF_CONDUCT.md`** — políticas de reporte de vulnerabilidades y de comunidad que la original sí documenta.
54
-
55
55
  ## 📦 Instalación
56
56
 
57
57
  ```bash
@@ -82,7 +82,7 @@ const { PreKeyWhisperMessage } = protobufs
82
82
  Y en el `package.json` de tu proyecto, quita la dependencia `libsignal` y agrega:
83
83
 
84
84
  ```json
85
- "@neykoor/libsignal-node": "^1.0.5"
85
+ "@neykoor/libsignal-node": "^1.0.10"
86
86
  ```
87
87
 
88
88
  ## 📖 Uso básico
@@ -104,6 +104,66 @@ const { type, body } = await cipher.encrypt(Buffer.from('hola mundo'))
104
104
 
105
105
  `storage` debe implementar la interfaz `SignalStorage` exportada desde el paquete (o puedes usar `MemorySignalStorage`, incluida para pruebas rápidas y almacenamiento en memoria).
106
106
 
107
+ ## 💾 Storage persistente
108
+
109
+ Para bots que deben sobrevivir reinicios, usa `FileSignalStorage` en vez de `MemorySignalStorage`:
110
+
111
+ ```ts
112
+ import { FileSignalStorage } from '@neykoor/libsignal-node'
113
+
114
+ const storage = FileSignalStorage.create('./auth/session.json')
115
+ ```
116
+
117
+ Si el archivo no existe, genera `identityKeyPair` y `registrationId` nuevos y los guarda; si existe, carga sesiones, prekeys, sender keys e identidad tal cual quedaron. Cada escritura se debounce y se vuelca a disco de forma atómica. Llama a `storage.flush()` antes de cerrar el proceso para forzar el guardado inmediato.
118
+
119
+ Para cifrar lo que se guarda en disco, pasa una `encryptionKey` de 32 bytes:
120
+
121
+ ```ts
122
+ import { randomBytes } from 'crypto'
123
+
124
+ const encryptionKey = randomBytes(32) // guárdala fuera del código (variable de entorno, secret manager)
125
+ const storage = FileSignalStorage.create('./auth/session.json', { encryptionKey })
126
+ ```
127
+
128
+ Cada guardado se cifra con AES-256-GCM (IV aleatorio por escritura + auth tag). Si el archivo ya está cifrado y no le das la `encryptionKey` al cargarlo, tira error en vez de fallar en silencio.
129
+
130
+ ## 👥 Mensajería de grupo
131
+
132
+ ```ts
133
+ import { GroupSessionBuilder, GroupCipher, SenderKeyName } from '@neykoor/libsignal-node'
134
+
135
+ const senderKeyName = new SenderKeyName(groupId, addr)
136
+ const groupBuilder = new GroupSessionBuilder(storage)
137
+ const distributionMessage = await groupBuilder.create(senderKeyName)
138
+ // enviar distributionMessage al resto del grupo por sesión 1:1
139
+
140
+ const groupCipher = new GroupCipher(storage, senderKeyName)
141
+ const ciphertext = await groupCipher.encrypt(Buffer.from('hola grupo'))
142
+ ```
143
+
144
+ Cuando un miembro sale del grupo, rota tu propia sender key para que no pueda descifrar mensajes futuros:
145
+
146
+ ```ts
147
+ const newDistributionMessage = await groupBuilder.rotate(senderKeyName)
148
+ // reenviar newDistributionMessage a los miembros que quedan
149
+ ```
150
+
151
+ ## 🔑 Mantenimiento de prekeys
152
+
153
+ `PreKeyPoolManager` repone las prekeys y rota el signed prekey cuando hace falta. `startAutoMaintenance()` lo deja corriendo solo:
154
+
155
+ ```ts
156
+ import { PreKeyPoolManager } from '@neykoor/libsignal-node'
157
+
158
+ const poolManager = new PreKeyPoolManager(storage, identityKeyPair)
159
+ const stopMaintenance = poolManager.startAutoMaintenance() // revisa cada hora por defecto
160
+
161
+ process.on('SIGINT', () => {
162
+ stopMaintenance()
163
+ process.exit(0)
164
+ })
165
+ ```
166
+
107
167
  ## 🧪 Compilar desde el código fuente
108
168
 
109
169
  ```bash
package/lib/curve.d.ts CHANGED
@@ -7,5 +7,5 @@ export declare function generateKeyPair(): KeyPair;
7
7
  export declare function generateKeyPairAsync(): Promise<KeyPair>;
8
8
  export declare function calculateAgreement(pubKeyInput: Uint8Array, privKey: Uint8Array): Buffer;
9
9
  export declare function calculateSignature(privKey: Uint8Array, message: Uint8Array): Buffer;
10
- export declare function verifySignature(pubKeyInput: Uint8Array, msg: Uint8Array, sig: Uint8Array, isInit?: boolean): boolean;
10
+ export declare function verifySignature(pubKeyInput: Uint8Array, msg: Uint8Array, sig: Uint8Array): boolean;
11
11
  //# sourceMappingURL=curve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AA+CD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAInE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAsBzC;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAsC7D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CA4BvF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAQnF;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAgBpH"}
1
+ {"version":3,"file":"curve.d.ts","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AA0DD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CASnE;AAED,wBAAgB,eAAe,IAAI,OAAO,CAwBzC;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAwC7D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAiCvF;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAQnF;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAgBlG"}
package/lib/curve.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as curveJs from "@neykoor/curve25519-ts";
2
2
  import * as nodeCrypto from "crypto";
3
3
  import { getLogger } from "./logger.js";
4
+ import { wipeBuffer } from "./util.js";
4
5
  const PUBLIC_KEY_DER_PREFIX = Buffer.from([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0]);
5
6
  const PRIVATE_KEY_DER_PREFIX = Buffer.from([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32]);
6
7
  const KEY_BUNDLE_TYPE = Buffer.from([5]);
@@ -31,6 +32,16 @@ function scrubPubKeyFormat(pubKey) {
31
32
  getLogger().warn("Expected pubkey of length 33, please report the ST and client that generated the pubkey");
32
33
  return Buffer.from(pubKey);
33
34
  }
35
+ function assertNotLowOrderSecret(secret) {
36
+ let check = 0;
37
+ for (let i = 0; i < secret.byteLength; i++) {
38
+ check |= secret[i];
39
+ }
40
+ if (check === 0) {
41
+ throw new Error("invalid public key (low-order point)");
42
+ }
43
+ return secret;
44
+ }
34
45
  function unclampEd25519PrivateKey(clampedSk) {
35
46
  const unclampedSk = new Uint8Array(clampedSk);
36
47
  unclampedSk[0] = unclampedSk[0] | 6;
@@ -41,7 +52,10 @@ function unclampEd25519PrivateKey(clampedSk) {
41
52
  export function getPublicFromPrivateKey(privKey) {
42
53
  const unclampedPK = unclampEd25519PrivateKey(privKey);
43
54
  const keyPair = curveJs.generateKeyPair(unclampedPK);
44
- return prefixKeyInPublicKey(Buffer.from(keyPair.public));
55
+ const pubKey = prefixKeyInPublicKey(Buffer.from(keyPair.public));
56
+ unclampedPK.fill(0);
57
+ keyPair.private.fill(0);
58
+ return pubKey;
45
59
  }
46
60
  export function generateKeyPair() {
47
61
  try {
@@ -59,10 +73,10 @@ export function generateKeyPair() {
59
73
  catch (e) {
60
74
  getLogger().debug(`x25519 native keygen failed, falling back to curve25519-js: ${e?.message}`);
61
75
  const keyPair = curveJs.generateKeyPair(nodeCrypto.randomBytes(32));
62
- return {
63
- privKey: Buffer.from(keyPair.private),
64
- pubKey: prefixKeyInPublicKey(Buffer.from(keyPair.public))
65
- };
76
+ const privKey = Buffer.from(keyPair.private);
77
+ const pubKey = prefixKeyInPublicKey(Buffer.from(keyPair.public));
78
+ keyPair.private.fill(0);
79
+ return { privKey, pubKey };
66
80
  }
67
81
  }
68
82
  export async function generateKeyPairAsync() {
@@ -91,10 +105,10 @@ export async function generateKeyPairAsync() {
91
105
  getLogger().debug(`x25519 native async keygen failed, falling back to curve25519-js: ${e?.message}`);
92
106
  await new Promise((resolve) => setImmediate(resolve));
93
107
  const keyPair = curveJs.generateKeyPair(nodeCrypto.randomBytes(32));
94
- return {
95
- privKey: Buffer.from(keyPair.private),
96
- pubKey: prefixKeyInPublicKey(Buffer.from(keyPair.public))
97
- };
108
+ const privKey = Buffer.from(keyPair.private);
109
+ const pubKey = prefixKeyInPublicKey(Buffer.from(keyPair.public));
110
+ keyPair.private.fill(0);
111
+ return { privKey, pubKey };
98
112
  }
99
113
  }
100
114
  export function calculateAgreement(pubKeyInput, privKey) {
@@ -104,8 +118,9 @@ export function calculateAgreement(pubKeyInput, privKey) {
104
118
  throw new Error("Invalid public key");
105
119
  }
106
120
  if (typeof nodeCrypto.diffieHellman === "function") {
121
+ const privKeyDer = Buffer.concat([PRIVATE_KEY_DER_PREFIX, privKey]);
107
122
  const nodePrivateKey = nodeCrypto.createPrivateKey({
108
- key: Buffer.concat([PRIVATE_KEY_DER_PREFIX, privKey]),
123
+ key: privKeyDer,
109
124
  format: "der",
110
125
  type: "pkcs8"
111
126
  });
@@ -114,13 +129,14 @@ export function calculateAgreement(pubKeyInput, privKey) {
114
129
  format: "der",
115
130
  type: "spki"
116
131
  });
117
- return nodeCrypto.diffieHellman({
132
+ wipeBuffer(privKeyDer);
133
+ return assertNotLowOrderSecret(nodeCrypto.diffieHellman({
118
134
  privateKey: nodePrivateKey,
119
135
  publicKey: nodePublicKey
120
- });
136
+ }));
121
137
  }
122
138
  const secret = curveJs.sharedKey(privKey, pubKey);
123
- return Buffer.from(secret);
139
+ return assertNotLowOrderSecret(Buffer.from(secret));
124
140
  }
125
141
  export function calculateSignature(privKey, message) {
126
142
  validatePrivKey(privKey);
@@ -129,7 +145,7 @@ export function calculateSignature(privKey, message) {
129
145
  }
130
146
  return Buffer.from(curveJs.sign(privKey, message));
131
147
  }
132
- export function verifySignature(pubKeyInput, msg, sig, isInit) {
148
+ export function verifySignature(pubKeyInput, msg, sig) {
133
149
  const pubKey = scrubPubKeyFormat(pubKeyInput);
134
150
  if (!pubKey || pubKey.byteLength !== 32) {
135
151
  throw new Error("Invalid public key");
@@ -140,6 +156,6 @@ export function verifySignature(pubKeyInput, msg, sig, isInit) {
140
156
  if (!sig || sig.byteLength !== 64) {
141
157
  throw new Error("Invalid signature");
142
158
  }
143
- return isInit ? true : curveJs.verify(pubKey, msg, sig);
159
+ return curveJs.verify(pubKey, msg, sig);
144
160
  }
145
161
  //# sourceMappingURL=curve.js.map
package/lib/curve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { KeyPair } from "./curve.js";
2
+ import type { Direction } from "./direction.js";
3
+ import type { SignedPreKey } from "./keyhelper.js";
4
+ import type { PreKeyPoolStorage } from "./prekey-pool.js";
5
+ import { SenderKeyRecord } from "./sender-key-record.js";
6
+ import type { SenderKeyName } from "./sender-key-name.js";
7
+ import { SessionRecord } from "./session-record.js";
8
+ import type { SenderKeyStore, SignalStorage } from "./types.js";
9
+ interface FileSignalStorageOptions {
10
+ signedPreKeyGracePeriodMs?: number;
11
+ saveDebounceMs?: number;
12
+ encryptionKey?: Buffer;
13
+ }
14
+ export declare class FileSignalStorage implements SignalStorage, PreKeyPoolStorage, SenderKeyStore {
15
+ private filePath;
16
+ private identityKeyPair;
17
+ private registrationId;
18
+ private sessions;
19
+ private preKeys;
20
+ private signedPreKeys;
21
+ private trustedIdentities;
22
+ private senderKeys;
23
+ private retiredSignedPreKeys;
24
+ private nextPreKeyId;
25
+ private latestSignedPreKey;
26
+ private signedPreKeyGracePeriodMs;
27
+ private saveDebounceMs;
28
+ private encryptionKey;
29
+ private saveTimer;
30
+ private constructor();
31
+ static create(filePath: string, options?: FileSignalStorageOptions): FileSignalStorage;
32
+ private applySnapshot;
33
+ private toSnapshot;
34
+ private save;
35
+ private scheduleSave;
36
+ flush(): void;
37
+ loadSession(id: string): Promise<SessionRecord | undefined>;
38
+ storeSession(id: string, session: SessionRecord): Promise<void>;
39
+ loadSenderKey(senderKeyName: SenderKeyName): Promise<SenderKeyRecord | undefined>;
40
+ storeSenderKey(senderKeyName: SenderKeyName, record: SenderKeyRecord): Promise<void>;
41
+ removeSenderKey(senderKeyName: SenderKeyName): Promise<void>;
42
+ removeGroupSessions(groupId: string): Promise<void>;
43
+ isTrustedIdentity(identifier: string, identityKey: Buffer, _direction: Direction): Promise<boolean>;
44
+ saveIdentity(identifier: string, identityKey: Buffer): Promise<boolean>;
45
+ removeIdentity(identifier: string): Promise<void>;
46
+ private removeSessionsForIdentifier;
47
+ loadPreKey(id?: number | string): Promise<KeyPair | undefined>;
48
+ removePreKey(id: number): Promise<void>;
49
+ loadSignedPreKey(id?: number | string): Promise<KeyPair | undefined>;
50
+ getOurRegistrationId(): Promise<number>;
51
+ getOurIdentity(): Promise<KeyPair>;
52
+ storePreKey(id: number, keyPair: KeyPair): void;
53
+ storeSignedPreKey(idOrRecord: number | SignedPreKey, keyPair?: KeyPair): void;
54
+ removeSignedPreKey(id: number): Promise<void>;
55
+ private pruneRetiredSignedPreKeys;
56
+ getPreKeyCount(): Promise<number>;
57
+ getNextPreKeyId(): Promise<number>;
58
+ setNextPreKeyId(id: number): Promise<void>;
59
+ loadLatestSignedPreKey(): Promise<SignedPreKey | undefined>;
60
+ }
61
+ export {};
62
+ //# sourceMappingURL=file-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,292 @@
1
+ import { createCipheriv, createDecipheriv, randomBytes, timingSafeEqual } from "crypto";
2
+ import * as fs from "fs";
3
+ import * as path from "path";
4
+ import * as keyhelper from "./keyhelper.js";
5
+ import { SenderKeyRecord } from "./sender-key-record.js";
6
+ import { SessionRecord } from "./session-record.js";
7
+ const DEFAULT_SIGNED_PRE_KEY_GRACE_PERIOD_MS = 3 * 24 * 60 * 60 * 1000;
8
+ const DEFAULT_SAVE_DEBOUNCE_MS = 25;
9
+ const ENCRYPTION_KEY_LENGTH = 32;
10
+ const ENCRYPTION_ALGORITHM = "aes-256-gcm";
11
+ const ENCRYPTION_IV_LENGTH = 12;
12
+ function isEncryptedPayload(value) {
13
+ return (!!value &&
14
+ typeof value === "object" &&
15
+ value.encrypted === true &&
16
+ typeof value.iv === "string" &&
17
+ typeof value.authTag === "string" &&
18
+ typeof value.data === "string");
19
+ }
20
+ function encryptPayload(plaintext, key) {
21
+ const iv = randomBytes(ENCRYPTION_IV_LENGTH);
22
+ const cipher = createCipheriv(ENCRYPTION_ALGORITHM, key, iv);
23
+ const ciphertext = Buffer.concat([cipher.update(plaintext, "utf-8"), cipher.final()]);
24
+ const payload = {
25
+ encrypted: true,
26
+ iv: iv.toString("base64"),
27
+ authTag: cipher.getAuthTag().toString("base64"),
28
+ data: ciphertext.toString("base64")
29
+ };
30
+ return JSON.stringify(payload);
31
+ }
32
+ function decryptPayload(payload, key) {
33
+ const decipher = createDecipheriv(ENCRYPTION_ALGORITHM, key, Buffer.from(payload.iv, "base64"));
34
+ decipher.setAuthTag(Buffer.from(payload.authTag, "base64"));
35
+ const plaintext = Buffer.concat([decipher.update(Buffer.from(payload.data, "base64")), decipher.final()]);
36
+ return plaintext.toString("utf-8");
37
+ }
38
+ function bufferReviver(_key, value) {
39
+ if (value &&
40
+ typeof value === "object" &&
41
+ value.type === "Buffer" &&
42
+ Array.isArray(value.data)) {
43
+ return Buffer.from(value.data);
44
+ }
45
+ return value;
46
+ }
47
+ function safeEqual(a, b) {
48
+ if (a.byteLength !== b.byteLength) {
49
+ return false;
50
+ }
51
+ return timingSafeEqual(a, b);
52
+ }
53
+ export class FileSignalStorage {
54
+ constructor(filePath, identityKeyPair, registrationId, options) {
55
+ this.sessions = new Map();
56
+ this.preKeys = new Map();
57
+ this.signedPreKeys = new Map();
58
+ this.trustedIdentities = new Map();
59
+ this.senderKeys = new Map();
60
+ this.retiredSignedPreKeys = new Map();
61
+ this.nextPreKeyId = 1;
62
+ this.filePath = filePath;
63
+ this.identityKeyPair = identityKeyPair;
64
+ this.registrationId = registrationId;
65
+ this.signedPreKeyGracePeriodMs = options.signedPreKeyGracePeriodMs ?? DEFAULT_SIGNED_PRE_KEY_GRACE_PERIOD_MS;
66
+ this.saveDebounceMs = options.saveDebounceMs ?? DEFAULT_SAVE_DEBOUNCE_MS;
67
+ this.encryptionKey = options.encryptionKey;
68
+ }
69
+ static create(filePath, options = {}) {
70
+ if (options.encryptionKey && options.encryptionKey.length !== ENCRYPTION_KEY_LENGTH) {
71
+ throw new RangeError(`encryptionKey must be ${ENCRYPTION_KEY_LENGTH} bytes`);
72
+ }
73
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
74
+ if (fs.existsSync(filePath)) {
75
+ const raw = fs.readFileSync(filePath, "utf-8");
76
+ const parsed = JSON.parse(raw);
77
+ let json;
78
+ if (isEncryptedPayload(parsed)) {
79
+ if (!options.encryptionKey) {
80
+ throw new Error("File is encrypted; encryptionKey is required");
81
+ }
82
+ json = decryptPayload(parsed, options.encryptionKey);
83
+ }
84
+ else {
85
+ json = raw;
86
+ }
87
+ const data = JSON.parse(json, bufferReviver);
88
+ const storage = new FileSignalStorage(filePath, data.identityKeyPair, data.registrationId, options);
89
+ storage.applySnapshot(data);
90
+ return storage;
91
+ }
92
+ const identityKeyPair = keyhelper.generateIdentityKeyPair();
93
+ const registrationId = keyhelper.generateRegistrationId();
94
+ const storage = new FileSignalStorage(filePath, identityKeyPair, registrationId, options);
95
+ storage.save();
96
+ return storage;
97
+ }
98
+ applySnapshot(data) {
99
+ this.nextPreKeyId = data.nextPreKeyId ?? 1;
100
+ this.latestSignedPreKey = data.latestSignedPreKey;
101
+ for (const [id, keyPair] of Object.entries(data.preKeys ?? {})) {
102
+ this.preKeys.set(Number(id), keyPair);
103
+ }
104
+ for (const [id, keyPair] of Object.entries(data.signedPreKeys ?? {})) {
105
+ this.signedPreKeys.set(Number(id), keyPair);
106
+ }
107
+ for (const [id, retiredAt] of Object.entries(data.retiredSignedPreKeys ?? {})) {
108
+ this.retiredSignedPreKeys.set(Number(id), retiredAt);
109
+ }
110
+ for (const [identifier, key] of Object.entries(data.trustedIdentities ?? {})) {
111
+ this.trustedIdentities.set(identifier, key);
112
+ }
113
+ for (const [id, buf] of Object.entries(data.sessions ?? {})) {
114
+ this.sessions.set(id, SessionRecord.deserialize(buf));
115
+ }
116
+ for (const [id, record] of Object.entries(data.senderKeys ?? {})) {
117
+ this.senderKeys.set(id, SenderKeyRecord.deserialize(record));
118
+ }
119
+ }
120
+ toSnapshot() {
121
+ const sessions = {};
122
+ for (const [id, record] of this.sessions) {
123
+ sessions[id] = record.serialize();
124
+ }
125
+ const senderKeys = {};
126
+ for (const [id, record] of this.senderKeys) {
127
+ senderKeys[id] = record.serialize();
128
+ }
129
+ return {
130
+ identityKeyPair: this.identityKeyPair,
131
+ registrationId: this.registrationId,
132
+ nextPreKeyId: this.nextPreKeyId,
133
+ latestSignedPreKey: this.latestSignedPreKey,
134
+ preKeys: Object.fromEntries(this.preKeys),
135
+ signedPreKeys: Object.fromEntries(this.signedPreKeys),
136
+ retiredSignedPreKeys: Object.fromEntries(this.retiredSignedPreKeys),
137
+ trustedIdentities: Object.fromEntries(this.trustedIdentities),
138
+ sessions,
139
+ senderKeys
140
+ };
141
+ }
142
+ save() {
143
+ const json = JSON.stringify(this.toSnapshot());
144
+ const payload = this.encryptionKey ? encryptPayload(json, this.encryptionKey) : json;
145
+ const tmpPath = `${this.filePath}.tmp`;
146
+ fs.writeFileSync(tmpPath, payload);
147
+ fs.renameSync(tmpPath, this.filePath);
148
+ }
149
+ scheduleSave() {
150
+ if (this.saveTimer) {
151
+ clearTimeout(this.saveTimer);
152
+ }
153
+ this.saveTimer = setTimeout(() => {
154
+ this.saveTimer = undefined;
155
+ this.save();
156
+ }, this.saveDebounceMs);
157
+ }
158
+ flush() {
159
+ if (this.saveTimer) {
160
+ clearTimeout(this.saveTimer);
161
+ this.saveTimer = undefined;
162
+ }
163
+ this.save();
164
+ }
165
+ async loadSession(id) {
166
+ return this.sessions.get(id);
167
+ }
168
+ async storeSession(id, session) {
169
+ this.sessions.set(id, session);
170
+ this.scheduleSave();
171
+ }
172
+ async loadSenderKey(senderKeyName) {
173
+ return this.senderKeys.get(senderKeyName.serialize());
174
+ }
175
+ async storeSenderKey(senderKeyName, record) {
176
+ this.senderKeys.set(senderKeyName.serialize(), record);
177
+ this.scheduleSave();
178
+ }
179
+ async removeSenderKey(senderKeyName) {
180
+ this.senderKeys.delete(senderKeyName.serialize());
181
+ this.scheduleSave();
182
+ }
183
+ async removeGroupSessions(groupId) {
184
+ const prefix = `${groupId}::`;
185
+ for (const key of this.senderKeys.keys()) {
186
+ if (key.startsWith(prefix)) {
187
+ this.senderKeys.delete(key);
188
+ }
189
+ }
190
+ this.scheduleSave();
191
+ }
192
+ async isTrustedIdentity(identifier, identityKey, _direction) {
193
+ const existing = this.trustedIdentities.get(identifier);
194
+ if (!existing) {
195
+ this.trustedIdentities.set(identifier, identityKey);
196
+ this.scheduleSave();
197
+ return true;
198
+ }
199
+ return safeEqual(existing, identityKey);
200
+ }
201
+ async saveIdentity(identifier, identityKey) {
202
+ const existing = this.trustedIdentities.get(identifier);
203
+ const changed = !existing || !safeEqual(existing, identityKey);
204
+ this.trustedIdentities.set(identifier, identityKey);
205
+ if (existing && changed) {
206
+ this.removeSessionsForIdentifier(identifier);
207
+ }
208
+ this.scheduleSave();
209
+ return changed;
210
+ }
211
+ async removeIdentity(identifier) {
212
+ this.trustedIdentities.delete(identifier);
213
+ this.removeSessionsForIdentifier(identifier);
214
+ this.scheduleSave();
215
+ }
216
+ removeSessionsForIdentifier(identifier) {
217
+ const prefix = `${identifier}.`;
218
+ for (const key of this.sessions.keys()) {
219
+ if (key === identifier || key.startsWith(prefix)) {
220
+ this.sessions.delete(key);
221
+ }
222
+ }
223
+ }
224
+ async loadPreKey(id) {
225
+ if (id === undefined) {
226
+ return undefined;
227
+ }
228
+ return this.preKeys.get(Number(id));
229
+ }
230
+ async removePreKey(id) {
231
+ this.preKeys.delete(id);
232
+ this.scheduleSave();
233
+ }
234
+ async loadSignedPreKey(id) {
235
+ if (id === undefined) {
236
+ return undefined;
237
+ }
238
+ return this.signedPreKeys.get(Number(id));
239
+ }
240
+ async getOurRegistrationId() {
241
+ return this.registrationId;
242
+ }
243
+ async getOurIdentity() {
244
+ return this.identityKeyPair;
245
+ }
246
+ storePreKey(id, keyPair) {
247
+ this.preKeys.set(id, keyPair);
248
+ this.scheduleSave();
249
+ }
250
+ storeSignedPreKey(idOrRecord, keyPair) {
251
+ if (typeof idOrRecord === "number") {
252
+ this.signedPreKeys.set(idOrRecord, keyPair);
253
+ this.scheduleSave();
254
+ return;
255
+ }
256
+ if (this.latestSignedPreKey && this.latestSignedPreKey.keyId !== idOrRecord.keyId) {
257
+ this.retiredSignedPreKeys.set(this.latestSignedPreKey.keyId, Date.now());
258
+ }
259
+ this.signedPreKeys.set(idOrRecord.keyId, idOrRecord.keyPair);
260
+ this.latestSignedPreKey = idOrRecord;
261
+ this.pruneRetiredSignedPreKeys();
262
+ this.scheduleSave();
263
+ }
264
+ async removeSignedPreKey(id) {
265
+ this.signedPreKeys.delete(id);
266
+ this.retiredSignedPreKeys.delete(id);
267
+ this.scheduleSave();
268
+ }
269
+ pruneRetiredSignedPreKeys() {
270
+ const now = Date.now();
271
+ for (const [id, retiredAt] of this.retiredSignedPreKeys) {
272
+ if (now - retiredAt >= this.signedPreKeyGracePeriodMs) {
273
+ this.signedPreKeys.delete(id);
274
+ this.retiredSignedPreKeys.delete(id);
275
+ }
276
+ }
277
+ }
278
+ async getPreKeyCount() {
279
+ return this.preKeys.size;
280
+ }
281
+ async getNextPreKeyId() {
282
+ return this.nextPreKeyId;
283
+ }
284
+ async setNextPreKeyId(id) {
285
+ this.nextPreKeyId = id;
286
+ this.scheduleSave();
287
+ }
288
+ async loadLatestSignedPreKey() {
289
+ return this.latestSignedPreKey;
290
+ }
291
+ }
292
+ //# sourceMappingURL=file-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,8 @@ import type { SenderKeyStore } from "./types.js";
4
4
  export declare class GroupSessionBuilder {
5
5
  private readonly senderKeyStore;
6
6
  constructor(senderKeyStore: SenderKeyStore);
7
- /**
8
- * Procesa un SenderKeyDistributionMessage recibido de otro miembro del grupo
9
- * y guarda su sender key state para poder descifrar sus mensajes.
10
- */
11
7
  process(senderKeyName: SenderKeyName, senderKeyDistributionMessage: SenderKeyDistributionMessage): Promise<void>;
12
- /**
13
- * Crea (o reutiliza) nuestra propia sender key para el grupo y devuelve el
14
- * SenderKeyDistributionMessage que hay que enviar al resto de miembros.
15
- */
16
8
  create(senderKeyName: SenderKeyName): Promise<SenderKeyDistributionMessage>;
9
+ rotate(senderKeyName: SenderKeyName): Promise<SenderKeyDistributionMessage>;
17
10
  }
18
11
  //# sourceMappingURL=group-session-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-session-builder.d.ts","sourceRoot":"","sources":["../src/group-session-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,cAAc,EAAE,cAAc;IAI1C;;;OAGG;IACG,OAAO,CACX,aAAa,EAAE,aAAa,EAC5B,4BAA4B,EAAE,4BAA4B,GACzD,OAAO,CAAC,IAAI,CAAC;IAahB;;;OAGG;IACG,MAAM,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,4BAA4B,CAAC;CA2BlF"}
1
+ {"version":3,"file":"group-session-builder.d.ts","sourceRoot":"","sources":["../src/group-session-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;gBAEnC,cAAc,EAAE,cAAc;IAKpC,OAAO,CACX,aAAa,EAAE,aAAa,EAC5B,4BAA4B,EAAE,4BAA4B,GACzD,OAAO,CAAC,IAAI,CAAC;IAcV,MAAM,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA4B3E,MAAM,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAwBlF"}
@@ -6,19 +6,11 @@ export class GroupSessionBuilder {
6
6
  constructor(senderKeyStore) {
7
7
  this.senderKeyStore = senderKeyStore;
8
8
  }
9
- /**
10
- * Procesa un SenderKeyDistributionMessage recibido de otro miembro del grupo
11
- * y guarda su sender key state para poder descifrar sus mensajes.
12
- */
13
9
  async process(senderKeyName, senderKeyDistributionMessage) {
14
10
  const senderKeyRecord = (await this.senderKeyStore.loadSenderKey(senderKeyName)) ?? new SenderKeyRecord();
15
11
  senderKeyRecord.addSenderKeyState(senderKeyDistributionMessage.getId(), senderKeyDistributionMessage.getIteration(), senderKeyDistributionMessage.getChainKey(), senderKeyDistributionMessage.getSignatureKey());
16
12
  await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
17
13
  }
18
- /**
19
- * Crea (o reutiliza) nuestra propia sender key para el grupo y devuelve el
20
- * SenderKeyDistributionMessage que hay que enviar al resto de miembros.
21
- */
22
14
  async create(senderKeyName) {
23
15
  const senderKeyRecord = (await this.senderKeyStore.loadSenderKey(senderKeyName)) ?? new SenderKeyRecord();
24
16
  if (senderKeyRecord.isEmpty()) {
@@ -35,5 +27,19 @@ export class GroupSessionBuilder {
35
27
  const chainKey = state.getSenderChainKey();
36
28
  return new SenderKeyDistributionMessage(state.getKeyId(), chainKey.getIteration(), chainKey.getSeed(), state.getSigningKeyPublic());
37
29
  }
30
+ async rotate(senderKeyName) {
31
+ const keyId = groupKeyHelper.generateSenderKeyId();
32
+ const senderKey = groupKeyHelper.generateSenderKey();
33
+ const signingKey = groupKeyHelper.generateSenderSigningKey();
34
+ const senderKeyRecord = new SenderKeyRecord();
35
+ senderKeyRecord.setSenderKeyState(keyId, 0, senderKey, signingKey.pubKey, signingKey.privKey);
36
+ await this.senderKeyStore.storeSenderKey(senderKeyName, senderKeyRecord);
37
+ const state = senderKeyRecord.getSenderKeyState();
38
+ if (!state) {
39
+ throw new SenderKeyError("Failed to rotate sender key state");
40
+ }
41
+ const chainKey = state.getSenderChainKey();
42
+ return new SenderKeyDistributionMessage(state.getKeyId(), chainKey.getIteration(), chainKey.getSeed(), state.getSigningKeyPublic());
43
+ }
38
44
  }
39
45
  //# sourceMappingURL=group-session-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"group-session-builder.js","sourceRoot":"","sources":["../src/group-session-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAEhF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAGrD,MAAM,OAAO,mBAAmB;IAG9B,YAAY,cAA8B;QACxC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,aAA4B,EAC5B,4BAA0D;QAE1D,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,eAAe,EAAE,CAAA;QAEzG,eAAe,CAAC,iBAAiB,CAC/B,4BAA4B,CAAC,KAAK,EAAE,EACpC,4BAA4B,CAAC,YAAY,EAAE,EAC3C,4BAA4B,CAAC,WAAW,EAAE,EAC1C,4BAA4B,CAAC,eAAe,EAAE,CAC/C,CAAA;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IAC1E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,aAA4B;QACvC,MAAM,eAAe,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,IAAI,IAAI,eAAe,EAAE,CAAA;QAEzG,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,cAAc,CAAC,mBAAmB,EAAE,CAAA;YAClD,MAAM,SAAS,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAA;YACpD,MAAM,UAAU,GAAG,cAAc,CAAC,wBAAwB,EAAE,CAAA;YAE5D,eAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAC/F,CAAC;QAED,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;QAExE,MAAM,KAAK,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAA;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,cAAc,CAAC,mCAAmC,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAE1C,OAAO,IAAI,4BAA4B,CACrC,KAAK,CAAC,QAAQ,EAAE,EAChB,QAAQ,CAAC,YAAY,EAAE,EACvB,QAAQ,CAAC,OAAO,EAAE,EAClB,KAAK,CAAC,mBAAmB,EAAE,CAC5B,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"group-session-builder.js","sourceRoot":"","sources":["../src/group-session-builder.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -11,6 +11,7 @@ export { BaseKeyType } from "./base-key-type.js";
11
11
  export { ChainType } from "./chain-type.js";
12
12
  export { Direction } from "./direction.js";
13
13
  export { MemorySignalStorage } from "./memory-storage.js";
14
+ export { FileSignalStorage } from "./file-storage.js";
14
15
  export { PreKeyPoolManager } from "./prekey-pool.js";
15
16
  export type { PreKeyPoolStorage, PreKeyPoolOptions, PreKeyPoolStatus } from "./prekey-pool.js";
16
17
  export { setLogger, getLogger } from "./logger.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAChD,cAAc,UAAU,CAAA;AACxB,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACtH,YAAY,EACV,KAAK,EACL,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,EACb,sBAAsB,EACvB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAChD,cAAc,UAAU,CAAA;AACxB,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACtH,YAAY,EACV,KAAK,EACL,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,EACb,sBAAsB,EACvB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA"}
package/lib/index.js CHANGED
@@ -11,6 +11,7 @@ export { BaseKeyType } from "./base-key-type.js";
11
11
  export { ChainType } from "./chain-type.js";
12
12
  export { Direction } from "./direction.js";
13
13
  export { MemorySignalStorage } from "./memory-storage.js";
14
+ export { FileSignalStorage } from "./file-storage.js";
14
15
  export { PreKeyPoolManager } from "./prekey-pool.js";
15
16
  export { setLogger, getLogger } from "./logger.js";
16
17
  export { wipeBuffer, wipeBuffers } from "./util.js";
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAChD,cAAc,UAAU,CAAA;AAaxB,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,UAAU,CAAA;AAClC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAChD,cAAc,UAAU,CAAA;AAaxB,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import * as curve from "./curve.js";
2
2
  import type { KeyPair } from "./curve.js";
3
+ export declare function wrapPreKeyId(id: number): number;
3
4
  export interface SignedPreKey {
4
5
  keyId: number;
5
6
  keyPair: KeyPair;
@@ -1 +1 @@
1
- {"version":3,"file":"keyhelper.d.ts","sourceRoot":"","sources":["../src/keyhelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,iCAAiC,QAA0B,CAAA;AAExE,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAA0C,GACnD,OAAO,CAUT;AAED,eAAO,MAAM,uBAAuB,8BAAwB,CAAA;AAE5D,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAuBhG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,wBAAsB,yBAAyB,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAuBpH;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWxE;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBnB"}
1
+ {"version":3,"file":"keyhelper.d.ts","sourceRoot":"","sources":["../src/keyhelper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAOtC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,iCAAiC,QAA0B,CAAA;AAExE,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAA0C,GACnD,OAAO,CAUT;AAED,eAAO,MAAM,uBAAuB,8BAAwB,CAAA;AAE5D,wBAAgB,sBAAsB,IAAI,MAAM,CAO/C;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,CAuBhG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED,wBAAsB,yBAAyB,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAuBpH;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWxE;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBnB"}
package/lib/keyhelper.js CHANGED
@@ -1,8 +1,12 @@
1
1
  import * as nodeCrypto from "crypto";
2
2
  import * as curve from "./curve.js";
3
+ import { MAX_KEY_ID } from "./prekey-bundle-validator.js";
3
4
  function isNonNegativeInteger(n) {
4
5
  return typeof n === "number" && n % 1 === 0 && n >= 0;
5
6
  }
7
+ export function wrapPreKeyId(id) {
8
+ return (((id - 1) % MAX_KEY_ID) + MAX_KEY_ID) % MAX_KEY_ID + 1;
9
+ }
6
10
  export const DEFAULT_SIGNED_PRE_KEY_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
7
11
  export function shouldRotateSignedPreKey(createdAt, maxAgeMs = DEFAULT_SIGNED_PRE_KEY_MAX_AGE_MS) {
8
12
  if (!isNonNegativeInteger(createdAt)) {
@@ -95,7 +99,7 @@ export async function generatePreKeysBatch(startId, count, options = {}) {
95
99
  if (i >= count) {
96
100
  return;
97
101
  }
98
- results[i] = await generatePreKeyAsync(startId + i);
102
+ results[i] = await generatePreKeyAsync(wrapPreKeyId(startId + i));
99
103
  }
100
104
  }
101
105
  await Promise.all(Array.from({ length: concurrency }, worker));
@@ -1 +1 @@
1
- {"version":3,"file":"keyhelper.js","sourceRoot":"","sources":["../src/keyhelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyhelper.js","sourceRoot":"","sources":["../src/keyhelper.ts"],"names":[],"mappings":"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"}
@@ -3,22 +3,32 @@ import type { Direction } from "./direction.js";
3
3
  import type { SignedPreKey } from "./keyhelper.js";
4
4
  import type { PreKeyPoolStorage } from "./prekey-pool.js";
5
5
  import { SessionRecord } from "./session-record.js";
6
- import type { SignalStorage } from "./types.js";
7
- export declare class MemorySignalStorage implements SignalStorage, PreKeyPoolStorage {
6
+ import type { SenderKeyName } from "./sender-key-name.js";
7
+ import { SenderKeyRecord } from "./sender-key-record.js";
8
+ import type { SenderKeyStore, SignalStorage } from "./types.js";
9
+ export declare class MemorySignalStorage implements SignalStorage, PreKeyPoolStorage, SenderKeyStore {
8
10
  private identityKeyPair;
9
11
  private registrationId;
10
12
  private sessions;
11
13
  private preKeys;
12
14
  private signedPreKeys;
13
15
  private trustedIdentities;
16
+ private senderKeys;
17
+ private retiredSignedPreKeys;
14
18
  private nextPreKeyId;
15
19
  private latestSignedPreKey;
16
- constructor(identityKeyPair: KeyPair, registrationId: number);
20
+ private signedPreKeyGracePeriodMs;
21
+ constructor(identityKeyPair: KeyPair, registrationId: number, signedPreKeyGracePeriodMs?: number);
17
22
  loadSession(id: string): Promise<SessionRecord | undefined>;
18
23
  storeSession(id: string, session: SessionRecord): Promise<void>;
24
+ loadSenderKey(senderKeyName: SenderKeyName): Promise<SenderKeyRecord | undefined>;
25
+ storeSenderKey(senderKeyName: SenderKeyName, record: SenderKeyRecord): Promise<void>;
26
+ removeSenderKey(senderKeyName: SenderKeyName): Promise<void>;
27
+ removeGroupSessions(groupId: string): Promise<void>;
19
28
  isTrustedIdentity(identifier: string, identityKey: Buffer, _direction: Direction): Promise<boolean>;
20
29
  saveIdentity(identifier: string, identityKey: Buffer): Promise<boolean>;
21
30
  removeIdentity(identifier: string): Promise<void>;
31
+ private removeSessionsForIdentifier;
22
32
  loadPreKey(id?: number | string): Promise<KeyPair | undefined>;
23
33
  removePreKey(id: number): Promise<void>;
24
34
  loadSignedPreKey(id?: number | string): Promise<KeyPair | undefined>;
@@ -26,6 +36,8 @@ export declare class MemorySignalStorage implements SignalStorage, PreKeyPoolSto
26
36
  getOurIdentity(): Promise<KeyPair>;
27
37
  storePreKey(id: number, keyPair: KeyPair): void;
28
38
  storeSignedPreKey(idOrRecord: number | SignedPreKey, keyPair?: KeyPair): void;
39
+ removeSignedPreKey(id: number): Promise<void>;
40
+ private pruneRetiredSignedPreKeys;
29
41
  getPreKeyCount(): Promise<number>;
30
42
  getNextPreKeyId(): Promise<number>;
31
43
  setNextPreKeyId(id: number): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAU5C,qBAAa,mBAAoB,YAAW,aAAa,EAAE,iBAAiB;IAC1E,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,kBAAkB,CAA0B;gBAExC,eAAe,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM;IAKtD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAI3D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMvE,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAQ9D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,gBAAgB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAQpE,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAI/C,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAUvE,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,sBAAsB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC;CAGlE"}
1
+ {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,25 @@
1
1
  import { timingSafeEqual } from "crypto";
2
2
  import { SessionRecord } from "./session-record.js";
3
+ import { SenderKeyRecord } from "./sender-key-record.js";
3
4
  function safeEqual(a, b) {
4
5
  if (a.byteLength !== b.byteLength) {
5
6
  return false;
6
7
  }
7
8
  return timingSafeEqual(a, b);
8
9
  }
10
+ const DEFAULT_SIGNED_PRE_KEY_GRACE_PERIOD_MS = 3 * 24 * 60 * 60 * 1000;
9
11
  export class MemorySignalStorage {
10
- constructor(identityKeyPair, registrationId) {
12
+ constructor(identityKeyPair, registrationId, signedPreKeyGracePeriodMs = DEFAULT_SIGNED_PRE_KEY_GRACE_PERIOD_MS) {
11
13
  this.sessions = new Map();
12
14
  this.preKeys = new Map();
13
15
  this.signedPreKeys = new Map();
14
16
  this.trustedIdentities = new Map();
17
+ this.senderKeys = new Map();
18
+ this.retiredSignedPreKeys = new Map();
15
19
  this.nextPreKeyId = 1;
16
20
  this.identityKeyPair = identityKeyPair;
17
21
  this.registrationId = registrationId;
22
+ this.signedPreKeyGracePeriodMs = signedPreKeyGracePeriodMs;
18
23
  }
19
24
  async loadSession(id) {
20
25
  return this.sessions.get(id);
@@ -22,6 +27,23 @@ export class MemorySignalStorage {
22
27
  async storeSession(id, session) {
23
28
  this.sessions.set(id, session);
24
29
  }
30
+ async loadSenderKey(senderKeyName) {
31
+ return this.senderKeys.get(senderKeyName.serialize());
32
+ }
33
+ async storeSenderKey(senderKeyName, record) {
34
+ this.senderKeys.set(senderKeyName.serialize(), record);
35
+ }
36
+ async removeSenderKey(senderKeyName) {
37
+ this.senderKeys.delete(senderKeyName.serialize());
38
+ }
39
+ async removeGroupSessions(groupId) {
40
+ const prefix = `${groupId}::`;
41
+ for (const key of this.senderKeys.keys()) {
42
+ if (key.startsWith(prefix)) {
43
+ this.senderKeys.delete(key);
44
+ }
45
+ }
46
+ }
25
47
  async isTrustedIdentity(identifier, identityKey, _direction) {
26
48
  const existing = this.trustedIdentities.get(identifier);
27
49
  if (!existing) {
@@ -32,12 +54,24 @@ export class MemorySignalStorage {
32
54
  }
33
55
  async saveIdentity(identifier, identityKey) {
34
56
  const existing = this.trustedIdentities.get(identifier);
57
+ const changed = !existing || !safeEqual(existing, identityKey);
35
58
  this.trustedIdentities.set(identifier, identityKey);
36
- return !existing || !safeEqual(existing, identityKey);
59
+ if (existing && changed) {
60
+ this.removeSessionsForIdentifier(identifier);
61
+ }
62
+ return changed;
37
63
  }
38
64
  async removeIdentity(identifier) {
39
65
  this.trustedIdentities.delete(identifier);
40
- this.sessions.delete(identifier);
66
+ this.removeSessionsForIdentifier(identifier);
67
+ }
68
+ removeSessionsForIdentifier(identifier) {
69
+ const prefix = `${identifier}.`;
70
+ for (const key of this.sessions.keys()) {
71
+ if (key === identifier || key.startsWith(prefix)) {
72
+ this.sessions.delete(key);
73
+ }
74
+ }
41
75
  }
42
76
  async loadPreKey(id) {
43
77
  if (id === undefined) {
@@ -68,8 +102,25 @@ export class MemorySignalStorage {
68
102
  this.signedPreKeys.set(idOrRecord, keyPair);
69
103
  return;
70
104
  }
105
+ if (this.latestSignedPreKey && this.latestSignedPreKey.keyId !== idOrRecord.keyId) {
106
+ this.retiredSignedPreKeys.set(this.latestSignedPreKey.keyId, Date.now());
107
+ }
71
108
  this.signedPreKeys.set(idOrRecord.keyId, idOrRecord.keyPair);
72
109
  this.latestSignedPreKey = idOrRecord;
110
+ this.pruneRetiredSignedPreKeys();
111
+ }
112
+ async removeSignedPreKey(id) {
113
+ this.signedPreKeys.delete(id);
114
+ this.retiredSignedPreKeys.delete(id);
115
+ }
116
+ pruneRetiredSignedPreKeys() {
117
+ const now = Date.now();
118
+ for (const [id, retiredAt] of this.retiredSignedPreKeys) {
119
+ if (now - retiredAt >= this.signedPreKeyGracePeriodMs) {
120
+ this.signedPreKeys.delete(id);
121
+ this.retiredSignedPreKeys.delete(id);
122
+ }
123
+ }
73
124
  }
74
125
  async getPreKeyCount() {
75
126
  return this.preKeys.size;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../src/memory-storage.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { DeviceKeyBundle } from "./types.js";
2
+ export declare const MAX_KEY_ID = 16777215;
2
3
  export declare function assertValidDeviceKeyBundle(bundle: DeviceKeyBundle): void;
3
4
  //# sourceMappingURL=prekey-bundle-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prekey-bundle-validator.d.ts","sourceRoot":"","sources":["../src/prekey-bundle-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AA8B9C,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CA2BxE"}
1
+ {"version":3,"file":"prekey-bundle-validator.d.ts","sourceRoot":"","sources":["../src/prekey-bundle-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAQ9C,eAAO,MAAM,UAAU,WAAW,CAAA;AAsBlC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CA2BxE"}
@@ -4,7 +4,7 @@ const MAX_REGISTRATION_ID = 0x3fff;
4
4
  const IDENTITY_KEY_LENGTH = 33;
5
5
  const PUBLIC_KEY_LENGTH = 33;
6
6
  const SIGNATURE_LENGTH = 64;
7
- const MAX_KEY_ID = 0xffffff;
7
+ export const MAX_KEY_ID = 0xffffff;
8
8
  function isNonNegativeInteger(n) {
9
9
  return typeof n === "number" && Number.isInteger(n) && n >= 0;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prekey-bundle-validator.js","sourceRoot":"","sources":["../src/prekey-bundle-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAC7B,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAClC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAC9B,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAC5B,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,UAAU,GAAG,QAAQ,CAAA;AAE3B,SAAS,oBAAoB,CAAC,CAAU;IACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,MAAc,EAAE,KAAa;IACvE,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,uBAAuB,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,iCAAiC,MAAM,SAAS,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;IACnG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa;IAChD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;QACvD,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IAChE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,WAAW,CAAC,qCAAqC,CAAC,CAAA;IAC9D,CAAC;IAED,IACE,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC5C,MAAM,CAAC,cAAc,GAAG,mBAAmB;QAC3C,MAAM,CAAC,cAAc,GAAG,mBAAmB,EAC3C,CAAC;QACD,MAAM,IAAI,WAAW,CAAC,2BAA2B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC;IAED,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;IAE1E,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,WAAW,CAAC,sBAAsB,CAAC,CAAA;IAC/C,CAAC;IAED,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;IAC5D,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,CAAA;IAC9F,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;IAE7F,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;QAChD,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;IACpF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"prekey-bundle-validator.js","sourceRoot":"","sources":["../src/prekey-bundle-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAC7B,MAAM,mBAAmB,GAAG,MAAM,CAAA;AAClC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAC9B,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAC5B,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAC3B,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAA;AAElC,SAAS,oBAAoB,CAAC,CAAU;IACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,MAAc,EAAE,KAAa;IACvE,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,uBAAuB,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,iCAAiC,MAAM,SAAS,KAAK,CAAC,UAAU,EAAE,CAAC,CAAA;IACnG,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAAa;IAChD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;QACvD,MAAM,IAAI,WAAW,CAAC,GAAG,KAAK,qBAAqB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IAChE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,WAAW,CAAC,qCAAqC,CAAC,CAAA;IAC9D,CAAC;IAED,IACE,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC;QAC5C,MAAM,CAAC,cAAc,GAAG,mBAAmB;QAC3C,MAAM,CAAC,cAAc,GAAG,mBAAmB,EAC3C,CAAC;QACD,MAAM,IAAI,WAAW,CAAC,2BAA2B,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC;IAED,kBAAkB,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;IAE1E,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,WAAW,CAAC,sBAAsB,CAAC,CAAA;IAC/C,CAAC;IAED,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAA;IAC5D,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,CAAA;IAC9F,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,gBAAgB,EAAE,wBAAwB,CAAC,CAAA;IAE7F,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;QAChD,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,CAAA;IACpF,CAAC;AACH,CAAC"}
@@ -37,5 +37,6 @@ export declare class PreKeyPoolManager {
37
37
  rotateSignedPreKey(keyId: number): Promise<SignedPreKey>;
38
38
  private _rotateSignedPreKey;
39
39
  getStatus(): Promise<PreKeyPoolStatus>;
40
+ startAutoMaintenance(intervalMs?: number): () => void;
40
41
  }
41
42
  //# sourceMappingURL=prekey-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prekey-pool.d.ts","sourceRoot":"","sources":["../src/prekey-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/D,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC1C,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC3C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjD,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7D,sBAAsB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,GAAG,SAAS,CAAA;CACvF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAKD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,oBAAoB,CAAmC;gBAEnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB;IAS3F,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,gBAAgB,CAAC,KAAK,GAAE,MAA4B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAahE,iBAAiB;IAazB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC;IAS3C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAahD,mBAAmB;IAO3B,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAc7C"}
1
+ {"version":3,"file":"prekey-pool.d.ts","sourceRoot":"","sources":["../src/prekey-pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAGvD,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC/D,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC1C,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAC3C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjD,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC7D,sBAAsB,IAAI,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,GAAG,SAAS,CAAA;CACvF;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAKD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,oBAAoB,CAAQ;IACpC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,oBAAoB,CAAmC;gBAEnD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAE,iBAAsB;IAS3F,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,gBAAgB,CAAC,KAAK,GAAE,MAA4B,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAahE,iBAAiB;IAazB,kBAAkB,IAAI,OAAO,CAAC,YAAY,CAAC;IAS3C,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAahD,mBAAmB;IAO3B,SAAS,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAe5C,oBAAoB,CAAC,UAAU,GAAE,MAAuB,GAAG,MAAM,IAAI;CAUtE"}
@@ -36,7 +36,7 @@ export class PreKeyPoolManager {
36
36
  for (const preKey of generated) {
37
37
  await this.storage.storePreKey(preKey.keyId, preKey.keyPair);
38
38
  }
39
- await this.storage.setNextPreKeyId(startId + count);
39
+ await this.storage.setNextPreKeyId(keyhelper.wrapPreKeyId(startId + count));
40
40
  getLogger().debug(`Replenished ${count} prekeys starting at id ${startId}`);
41
41
  return generated;
42
42
  }
@@ -45,7 +45,7 @@ export class PreKeyPoolManager {
45
45
  if (latest && !keyhelper.shouldRotateSignedPreKey(latest.createdAt, this.signedPreKeyMaxAgeMs)) {
46
46
  return latest;
47
47
  }
48
- return this.rotateSignedPreKey(latest ? latest.keyId + 1 : 1);
48
+ return this.rotateSignedPreKey(latest ? keyhelper.wrapPreKeyId(latest.keyId + 1) : 1);
49
49
  }
50
50
  async rotateSignedPreKey(keyId) {
51
51
  if (this.rotatingSignedPreKey) {
@@ -78,5 +78,14 @@ export class PreKeyPoolManager {
78
78
  signedPreKeyAgeMs: latestSignedPreKey ? Date.now() - latestSignedPreKey.createdAt : undefined
79
79
  };
80
80
  }
81
+ startAutoMaintenance(intervalMs = 60 * 60 * 1000) {
82
+ const run = () => {
83
+ this.ensurePreKeys().catch(err => getLogger().warn("Failed to ensure prekeys", err));
84
+ this.ensureSignedPreKey().catch(err => getLogger().warn("Failed to ensure signed prekey", err));
85
+ };
86
+ run();
87
+ const timer = setInterval(run, intervalMs);
88
+ return () => clearInterval(timer);
89
+ }
81
90
  }
82
91
  //# sourceMappingURL=prekey-pool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prekey-pool.js","sourceRoot":"","sources":["../src/prekey-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prekey-pool.js","sourceRoot":"","sources":["../src/prekey-pool.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ export class SessionBuilder {
19
19
  if (!(await this.storage.isTrustedIdentity(this.addr.id, device.identityKey, Direction.SENDING))) {
20
20
  throw new errors.UntrustedIdentityKeyError(this.addr.id, device.identityKey);
21
21
  }
22
- if (!curve.verifySignature(device.identityKey, device.signedPreKey.publicKey, device.signedPreKey.signature, true)) {
22
+ if (!curve.verifySignature(device.identityKey, device.signedPreKey.publicKey, device.signedPreKey.signature)) {
23
23
  throw new Error("Signature validation failed");
24
24
  }
25
25
  const baseKey = curve.generateKeyPair();
@@ -1 +1 @@
1
- {"version":3,"file":"session-builder.js","sourceRoot":"","sources":["../src/session-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-builder.js","sourceRoot":"","sources":["../src/session-builder.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -19,6 +19,7 @@ export interface SignalStorage {
19
19
  export interface SenderKeyStore {
20
20
  loadSenderKey(senderKeyName: SenderKeyName): Promise<SenderKeyRecord | undefined>;
21
21
  storeSenderKey(senderKeyName: SenderKeyName, record: SenderKeyRecord): Promise<void>;
22
+ removeSenderKey(senderKeyName: SenderKeyName): Promise<void> | void;
22
23
  }
23
24
  export interface DeviceKeyBundle {
24
25
  registrationId: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAA;IAC3D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAC5G,YAAY,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAClF,cAAc,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC9D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,gBAAgB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,GAAG,SAAS,CAAA;IAC1F,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAChD,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA;IACjF,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrF;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAErD,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAA;IAC3D,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAC5G,YAAY,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;IAClF,cAAc,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACzD,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAA;IAC9D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,gBAAgB,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,GAAG,SAAS,CAAA;IAC1F,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;IAChD,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAA;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAA;IACjF,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpF,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACpE;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;IACD,MAAM,CAAC,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neykoor/libsignal-node",
3
- "version": "1.0.9",
3
+ "version": "1.0.11",
4
4
  "description": "TypeScript port of libsignal-node, compatible with BaileysX",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",