@neykoor/libsignal-node 1.0.3 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +28 -41
  2. package/lib/base-key-type.d.ts +1 -0
  3. package/lib/base-key-type.d.ts.map +1 -0
  4. package/lib/base-key-type.js +1 -0
  5. package/lib/base-key-type.js.map +1 -0
  6. package/lib/chain-type.d.ts +1 -0
  7. package/lib/chain-type.d.ts.map +1 -0
  8. package/lib/chain-type.js +1 -0
  9. package/lib/chain-type.js.map +1 -0
  10. package/lib/crypto.d.ts +1 -0
  11. package/lib/crypto.d.ts.map +1 -0
  12. package/lib/crypto.js +10 -9
  13. package/lib/crypto.js.map +1 -0
  14. package/lib/curve.d.ts +1 -0
  15. package/lib/curve.d.ts.map +1 -0
  16. package/lib/curve.js +20 -19
  17. package/lib/curve.js.map +1 -0
  18. package/lib/direction.d.ts +1 -0
  19. package/lib/direction.d.ts.map +1 -0
  20. package/lib/direction.js +1 -0
  21. package/lib/direction.js.map +1 -0
  22. package/lib/errors.d.ts +1 -0
  23. package/lib/errors.d.ts.map +1 -0
  24. package/lib/errors.js +6 -5
  25. package/lib/errors.js.map +1 -0
  26. package/lib/index.d.ts +21 -20
  27. package/lib/index.d.ts.map +1 -0
  28. package/lib/index.js +17 -16
  29. package/lib/index.js.map +1 -0
  30. package/lib/keyhelper.d.ts +3 -2
  31. package/lib/keyhelper.d.ts.map +1 -0
  32. package/lib/keyhelper.js +9 -8
  33. package/lib/keyhelper.js.map +1 -0
  34. package/lib/logger.d.ts +1 -0
  35. package/lib/logger.d.ts.map +1 -0
  36. package/lib/logger.js +1 -0
  37. package/lib/logger.js.map +1 -0
  38. package/lib/memory-storage.d.ts +5 -4
  39. package/lib/memory-storage.d.ts.map +1 -0
  40. package/lib/memory-storage.js +3 -2
  41. package/lib/memory-storage.js.map +1 -0
  42. package/lib/numeric-fingerprint.d.ts +1 -0
  43. package/lib/numeric-fingerprint.d.ts.map +1 -0
  44. package/lib/numeric-fingerprint.js +7 -6
  45. package/lib/numeric-fingerprint.js.map +1 -0
  46. package/lib/prekey-bundle-validator.d.ts +2 -1
  47. package/lib/prekey-bundle-validator.d.ts.map +1 -0
  48. package/lib/prekey-bundle-validator.js +13 -12
  49. package/lib/prekey-bundle-validator.js.map +1 -0
  50. package/lib/protobufs.d.ts +2 -1
  51. package/lib/protobufs.d.ts.map +1 -0
  52. package/lib/protobufs.js +2 -1
  53. package/lib/protobufs.js.map +1 -0
  54. package/lib/protocol-address.d.ts +1 -0
  55. package/lib/protocol-address.d.ts.map +1 -0
  56. package/lib/protocol-address.js +19 -10
  57. package/lib/protocol-address.js.map +1 -0
  58. package/lib/queue-job.d.ts +1 -0
  59. package/lib/queue-job.d.ts.map +1 -0
  60. package/lib/queue-job.js +1 -7
  61. package/lib/queue-job.js.map +1 -0
  62. package/lib/session-builder.d.ts +4 -3
  63. package/lib/session-builder.d.ts.map +1 -0
  64. package/lib/session-builder.js +17 -16
  65. package/lib/session-builder.js.map +1 -0
  66. package/lib/session-cipher.d.ts +5 -4
  67. package/lib/session-cipher.d.ts.map +1 -0
  68. package/lib/session-cipher.js +37 -36
  69. package/lib/session-cipher.js.map +1 -0
  70. package/lib/session-record.d.ts +6 -2
  71. package/lib/session-record.d.ts.map +1 -0
  72. package/lib/session-record.js +62 -39
  73. package/lib/session-record.js.map +1 -0
  74. package/lib/types.d.ts +4 -3
  75. package/lib/types.d.ts.map +1 -0
  76. package/lib/types.js +1 -0
  77. package/lib/types.js.map +1 -0
  78. package/lib/util.d.ts +1 -0
  79. package/lib/util.d.ts.map +1 -0
  80. package/lib/util.js +1 -0
  81. package/lib/util.js.map +1 -0
  82. package/lib/whisper-text-protocol.d.ts +85 -2
  83. package/lib/whisper-text-protocol.d.ts.map +1 -0
  84. package/lib/whisper-text-protocol.js +375 -335
  85. package/lib/whisper-text-protocol.js.map +1 -0
  86. package/package.json +46 -36
package/README.md CHANGED
@@ -19,17 +19,36 @@
19
19
 
20
20
  ## ✨ ¿Qué es esto?
21
21
 
22
- `libsignal-node-ts` es una reescritura completa en **TypeScript** de la librería [`libsignal-node`](https://github.com/this-xys/libsignal-node) (Signal Protocol / Double Ratchet), pensada como **reemplazo directo** de la dependencia `libsignal` que usa BaileysX.
22
+ `libsignal-node-ts` es una reescritura completa en **TypeScript** de la librería [`libsignal-node`](https://github.com/WhiskeySockets/libsignal-node) (Signal Protocol / Double Ratchet), pensada como **reemplazo directo** de la dependencia `libsignal` que usa BaileysX.
23
23
 
24
- Mismo API, misma criptografía, cero `@ts-ignore`, tipado de punta a punta.
24
+ Mismo API, misma criptografía, cero `@ts-ignore`, tipado de punta a punta — y varias correcciones de seguridad y memoria que la librería original no tiene.
25
25
 
26
26
  ## 🚀 Características
27
27
 
28
- - 🔒 Implementación completa del **Double Ratchet** (X3DH, sesiones, ratcheting)
29
- - 📦 Tipado estricto (`strict: true`, `noUncheckedIndexedAccess`)
30
- - ESM nativo
31
- - 🔁 API idéntica a `libsignal-node` — `ProtocolAddress`, `SessionBuilder`, `SessionCipher`, `SessionRecord`
32
- - 🧩 Drop-in: solo cambias el import, no tocas el resto de tu código
28
+ ### Lo que ya tiene `libsignal-node-ts` (y `libsignal-node` original no)
29
+
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
+ - **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
+ - 🧹 **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.
35
+ - 🧾 **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
+ - 🏷️ **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
+ - 🟦 **100% TypeScript en `src/`**, incluidos los mensajes protobuf de Signal (`whisper-text-protocol.ts`) — sin un solo `.js` generado a mano.
38
+
39
+ ### Lo que tienen en común
40
+
41
+ - Implementación completa del **Double Ratchet** (X3DH, sesiones, ratcheting)
42
+ - Misma API pública: `ProtocolAddress`, `SessionBuilder`, `SessionCipher`, `SessionRecord`, `keyhelper`, `curve`, `crypto`
43
+ - Mismas dependencias en runtime: `curve25519-js` y `protobufjs`
44
+ - Soporte nativo de `x25519` vía `node:crypto` con fallback a `curve25519-js`
45
+
46
+ ### Pendiente por traer desde `libsignal-node` (roadmap)
47
+
48
+ - 📄 **`WhisperTextProtocol.proto` + script de generación** — la original mantiene el `.proto` fuente y un `generate-proto.sh` que regenera el código con `pbjs`. En `libsignal-node-ts` el protobuf está portado a mano en TypeScript; falta el `.proto` como fuente de verdad y un script equivalente para regenerarlo automáticamente.
49
+ - 🔁 **Workflows de CI/CD** (`.github/workflows`) — build, lint y publish automático a npm, como los que trae la original.
50
+ - 🧹 **Config de ESLint propia** (`.eslintrc.json`) para forzar el mismo estilo en todo el repo.
51
+ - 📜 **`SECURITY.md` y `CODE_OF_CONDUCT.md`** — políticas de reporte de vulnerabilidades y de comunidad que la original sí documenta.
33
52
 
34
53
  ## 📦 Instalación
35
54
 
@@ -39,38 +58,6 @@ npm install libsignal-node-ts
39
58
 
40
59
  Dependencias en tiempo de ejecución: `curve25519-js` y `protobufjs` (se instalan solas junto con el paquete).
41
60
 
42
- ## 📂 Estructura del código fuente
43
-
44
- ```
45
- libsignal-node-ts/
46
- ├── src/
47
- │ ├── index.ts # punto de entrada
48
- │ ├── protocol-address.ts
49
- │ ├── session-builder.ts
50
- │ ├── session-cipher.ts
51
- │ ├── session-record.ts
52
- │ ├── curve.ts
53
- │ ├── curve25519-js.d.ts
54
- │ ├── crypto.ts
55
- │ ├── keyhelper.ts
56
- │ ├── numeric-fingerprint.ts
57
- │ ├── prekey-bundle-validator.ts
58
- │ ├── memory-storage.ts
59
- │ ├── logger.ts
60
- │ ├── errors.ts
61
- │ ├── direction.ts
62
- │ ├── base-key-type.ts
63
- │ ├── chain-type.ts
64
- │ ├── queue-job.ts
65
- │ ├── types.ts
66
- │ ├── protobufs.ts
67
- │ ├── whisper-text-protocol.js # protobufs generados (ESM)
68
- │ └── whisper-text-protocol.d.ts
69
- ├── lib/ # salida compilada (lo que se publica en npm)
70
- ├── package.json
71
- └── tsconfig.json
72
- ```
73
-
74
61
  ## 🔧 Uso en BaileysX
75
62
 
76
63
  En `src/Signal/libsignal.ts`, reemplaza:
@@ -121,10 +108,10 @@ const { type, body } = await cipher.encrypt(Buffer.from('hola mundo'))
121
108
  npm run build
122
109
  ```
123
110
 
124
- Compila `src/` a `lib/` con `tsc` en modo `strict` y corrige las extensiones `.js` de los imports ESM con `tsc-esm-fix`.
111
+ Compila `src/` a `lib/` con `tsc` en modo `strict` y corrige las extensiones `.js` de los imports ESM con `tsc-esm-fix`. Con `allowJs` desactivado en `tsconfig.json`, el build falla si se cuela cualquier archivo `.js` dentro de `src/`.
125
112
 
126
113
  ---
127
114
 
128
115
  <div align="center">
129
- Hecho con ☕ para el ecosistema <b>Eris-MD</b> / <b>BaileysX</b>
116
+ Hecho con ☕ para el ecosistema <b>Furina-MD</b> / <b>BaileysX</b>
130
117
  </div>
@@ -2,3 +2,4 @@ export declare enum BaseKeyType {
2
2
  OURS = 1,
3
3
  THEIRS = 2
4
4
  }
5
+ //# sourceMappingURL=base-key-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-key-type.d.ts","sourceRoot":"","sources":["../src/base-key-type.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,IAAI,IAAI;IACR,MAAM,IAAI;CACX"}
@@ -3,3 +3,4 @@ export var BaseKeyType;
3
3
  BaseKeyType[BaseKeyType["OURS"] = 1] = "OURS";
4
4
  BaseKeyType[BaseKeyType["THEIRS"] = 2] = "THEIRS";
5
5
  })(BaseKeyType || (BaseKeyType = {}));
6
+ //# sourceMappingURL=base-key-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-key-type.js","sourceRoot":"","sources":["../src/base-key-type.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,iDAAU,CAAA;AACZ,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB"}
@@ -2,3 +2,4 @@ export declare enum ChainType {
2
2
  SENDING = 1,
3
3
  RECEIVING = 2
4
4
  }
5
+ //# sourceMappingURL=chain-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-type.d.ts","sourceRoot":"","sources":["../src/chain-type.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,OAAO,IAAI;IACX,SAAS,IAAI;CACd"}
package/lib/chain-type.js CHANGED
@@ -3,3 +3,4 @@ export var ChainType;
3
3
  ChainType[ChainType["SENDING"] = 1] = "SENDING";
4
4
  ChainType[ChainType["RECEIVING"] = 2] = "RECEIVING";
5
5
  })(ChainType || (ChainType = {}));
6
+ //# sourceMappingURL=chain-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain-type.js","sourceRoot":"","sources":["../src/chain-type.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,+CAAW,CAAA;IACX,mDAAa,CAAA;AACf,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB"}
package/lib/crypto.d.ts CHANGED
@@ -4,3 +4,4 @@ export declare function calculateMAC(key: Uint8Array, data: Uint8Array): Buffer;
4
4
  export declare function hash(data: Uint8Array): Buffer;
5
5
  export declare function deriveSecrets(input: Uint8Array, salt: Uint8Array, info: Uint8Array, chunks?: number): Buffer[];
6
6
  export declare function verifyMAC(data: Uint8Array, key: Uint8Array, mac: Uint8Array, length: number): void;
7
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAUA,wBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,MAAM,CAOjF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,MAAM,CAOjF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAOtE;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAM7C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAqC9G;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAUlG"}
package/lib/crypto.js CHANGED
@@ -1,4 +1,4 @@
1
- import * as nodeCrypto from 'crypto';
1
+ import * as nodeCrypto from "crypto";
2
2
  function assertBuffer(value) {
3
3
  if (!(value instanceof Uint8Array)) {
4
4
  throw TypeError(`Expected Uint8Array instead of: ${value?.constructor?.name}`);
@@ -9,26 +9,26 @@ export function encrypt(key, data, iv) {
9
9
  assertBuffer(key);
10
10
  assertBuffer(data);
11
11
  assertBuffer(iv);
12
- const cipher = nodeCrypto.createCipheriv('aes-256-cbc', key, iv);
12
+ const cipher = nodeCrypto.createCipheriv("aes-256-cbc", key, iv);
13
13
  return Buffer.concat([cipher.update(data), cipher.final()]);
14
14
  }
15
15
  export function decrypt(key, data, iv) {
16
16
  assertBuffer(key);
17
17
  assertBuffer(data);
18
18
  assertBuffer(iv);
19
- const decipher = nodeCrypto.createDecipheriv('aes-256-cbc', key, iv);
19
+ const decipher = nodeCrypto.createDecipheriv("aes-256-cbc", key, iv);
20
20
  return Buffer.concat([decipher.update(data), decipher.final()]);
21
21
  }
22
22
  export function calculateMAC(key, data) {
23
23
  assertBuffer(key);
24
24
  assertBuffer(data);
25
- const hmac = nodeCrypto.createHmac('sha256', key);
25
+ const hmac = nodeCrypto.createHmac("sha256", key);
26
26
  hmac.update(data);
27
27
  return Buffer.from(hmac.digest());
28
28
  }
29
29
  export function hash(data) {
30
30
  assertBuffer(data);
31
- const sha512 = nodeCrypto.createHash('sha512');
31
+ const sha512 = nodeCrypto.createHash("sha512");
32
32
  sha512.update(data);
33
33
  return sha512.digest();
34
34
  }
@@ -37,11 +37,11 @@ export function deriveSecrets(input, salt, info, chunks) {
37
37
  assertBuffer(salt);
38
38
  assertBuffer(info);
39
39
  if (salt.byteLength !== 32) {
40
- throw new Error('Got salt of incorrect length');
40
+ throw new Error("Got salt of incorrect length");
41
41
  }
42
42
  const count = chunks || 3;
43
43
  if (count < 1 || count > 3) {
44
- throw new Error('chunks must be between 1 and 3');
44
+ throw new Error("chunks must be between 1 and 3");
45
45
  }
46
46
  const PRK = calculateMAC(salt, input);
47
47
  const infoArray = new Uint8Array(info.byteLength + 1 + 32);
@@ -65,9 +65,10 @@ export function deriveSecrets(input, salt, info, chunks) {
65
65
  export function verifyMAC(data, key, mac, length) {
66
66
  const calculatedMac = calculateMAC(key, data).slice(0, length);
67
67
  if (mac.length !== length || calculatedMac.length !== length) {
68
- throw new Error('Bad MAC length');
68
+ throw new Error("Bad MAC length");
69
69
  }
70
70
  if (!nodeCrypto.timingSafeEqual(mac, calculatedMac)) {
71
- throw new Error('Bad MAC');
71
+ throw new Error("Bad MAC");
72
72
  }
73
73
  }
74
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
package/lib/curve.d.ts CHANGED
@@ -7,3 +7,4 @@ export declare function generateKeyPair(): KeyPair;
7
7
  export declare function calculateAgreement(pubKeyInput: Uint8Array, privKey: Uint8Array): Buffer;
8
8
  export declare function calculateSignature(privKey: Uint8Array, message: Uint8Array): Buffer;
9
9
  export declare function verifySignature(pubKeyInput: Uint8Array, msg: Uint8Array, sig: Uint8Array): boolean;
10
+ //# sourceMappingURL=curve.d.ts.map
@@ -0,0 +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,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,GAAG,OAAO,CAgBlG"}
package/lib/curve.js CHANGED
@@ -1,6 +1,6 @@
1
- import * as curveJs from 'curve25519-js';
2
- import * as nodeCrypto from 'crypto';
3
- import { getLogger } from './logger.js';
1
+ import * as curveJs from "@neykoor/curve25519-ts";
2
+ import * as nodeCrypto from "crypto";
3
+ import { getLogger } from "./logger.js";
4
4
  const PUBLIC_KEY_DER_PREFIX = Buffer.from([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0]);
5
5
  const PRIVATE_KEY_DER_PREFIX = Buffer.from([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32]);
6
6
  const KEY_BUNDLE_TYPE = Buffer.from([5]);
@@ -9,7 +9,7 @@ function prefixKeyInPublicKey(pubKey) {
9
9
  }
10
10
  function validatePrivKey(privKey) {
11
11
  if (privKey === undefined) {
12
- throw new Error('Undefined private key');
12
+ throw new Error("Undefined private key");
13
13
  }
14
14
  if (!(privKey instanceof Uint8Array)) {
15
15
  throw new Error(`Invalid private key type: ${privKey.constructor.name}`);
@@ -23,12 +23,12 @@ function scrubPubKeyFormat(pubKey) {
23
23
  throw new Error(`Invalid public key type: ${pubKey.constructor.name}`);
24
24
  }
25
25
  if (pubKey === undefined || ((pubKey.byteLength !== 33 || pubKey[0] !== 5) && pubKey.byteLength !== 32)) {
26
- throw new Error('Invalid public key');
26
+ throw new Error("Invalid public key");
27
27
  }
28
28
  if (pubKey.byteLength === 33) {
29
29
  return Buffer.from(pubKey.slice(1));
30
30
  }
31
- getLogger().warn('Expected pubkey of length 33, please report the ST and client that generated the pubkey');
31
+ getLogger().warn("Expected pubkey of length 33, please report the ST and client that generated the pubkey");
32
32
  return Buffer.from(pubKey);
33
33
  }
34
34
  function unclampEd25519PrivateKey(clampedSk) {
@@ -45,9 +45,9 @@ export function getPublicFromPrivateKey(privKey) {
45
45
  }
46
46
  export function generateKeyPair() {
47
47
  try {
48
- const { publicKey: publicDerBytes, privateKey: privateDerBytes } = nodeCrypto.generateKeyPairSync('x25519', {
49
- publicKeyEncoding: { format: 'der', type: 'spki' },
50
- privateKeyEncoding: { format: 'der', type: 'pkcs8' }
48
+ const { publicKey: publicDerBytes, privateKey: privateDerBytes } = nodeCrypto.generateKeyPairSync("x25519", {
49
+ publicKeyEncoding: { format: "der", type: "spki" },
50
+ privateKeyEncoding: { format: "der", type: "pkcs8" }
51
51
  });
52
52
  const pubKey = publicDerBytes.slice(PUBLIC_KEY_DER_PREFIX.length, PUBLIC_KEY_DER_PREFIX.length + 32);
53
53
  const privKey = privateDerBytes.slice(PRIVATE_KEY_DER_PREFIX.length, PRIVATE_KEY_DER_PREFIX.length + 32);
@@ -69,18 +69,18 @@ export function calculateAgreement(pubKeyInput, privKey) {
69
69
  const pubKey = scrubPubKeyFormat(pubKeyInput);
70
70
  validatePrivKey(privKey);
71
71
  if (!pubKey || pubKey.byteLength !== 32) {
72
- throw new Error('Invalid public key');
72
+ throw new Error("Invalid public key");
73
73
  }
74
- if (typeof nodeCrypto.diffieHellman === 'function') {
74
+ if (typeof nodeCrypto.diffieHellman === "function") {
75
75
  const nodePrivateKey = nodeCrypto.createPrivateKey({
76
76
  key: Buffer.concat([PRIVATE_KEY_DER_PREFIX, privKey]),
77
- format: 'der',
78
- type: 'pkcs8'
77
+ format: "der",
78
+ type: "pkcs8"
79
79
  });
80
80
  const nodePublicKey = nodeCrypto.createPublicKey({
81
81
  key: Buffer.concat([PUBLIC_KEY_DER_PREFIX, pubKey]),
82
- format: 'der',
83
- type: 'spki'
82
+ format: "der",
83
+ type: "spki"
84
84
  });
85
85
  return nodeCrypto.diffieHellman({
86
86
  privateKey: nodePrivateKey,
@@ -93,20 +93,21 @@ export function calculateAgreement(pubKeyInput, privKey) {
93
93
  export function calculateSignature(privKey, message) {
94
94
  validatePrivKey(privKey);
95
95
  if (!message) {
96
- throw new Error('Invalid message');
96
+ throw new Error("Invalid message");
97
97
  }
98
98
  return Buffer.from(curveJs.sign(privKey, message));
99
99
  }
100
100
  export function verifySignature(pubKeyInput, msg, sig) {
101
101
  const pubKey = scrubPubKeyFormat(pubKeyInput);
102
102
  if (!pubKey || pubKey.byteLength !== 32) {
103
- throw new Error('Invalid public key');
103
+ throw new Error("Invalid public key");
104
104
  }
105
105
  if (!msg) {
106
- throw new Error('Invalid message');
106
+ throw new Error("Invalid message");
107
107
  }
108
108
  if (!sig || sig.byteLength !== 64) {
109
- throw new Error('Invalid signature');
109
+ throw new Error("Invalid signature");
110
110
  }
111
111
  return curveJs.verify(pubKey, msg, sig);
112
112
  }
113
+ //# sourceMappingURL=curve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
@@ -2,3 +2,4 @@ export declare enum Direction {
2
2
  SENDING = 1,
3
3
  RECEIVING = 2
4
4
  }
5
+ //# sourceMappingURL=direction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../src/direction.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,OAAO,IAAI;IACX,SAAS,IAAI;CACd"}
package/lib/direction.js CHANGED
@@ -3,3 +3,4 @@ export var Direction;
3
3
  Direction[Direction["SENDING"] = 1] = "SENDING";
4
4
  Direction[Direction["RECEIVING"] = 2] = "RECEIVING";
5
5
  })(Direction || (Direction = {}));
6
+ //# sourceMappingURL=direction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direction.js","sourceRoot":"","sources":["../src/direction.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAGX;AAHD,WAAY,SAAS;IACnB,+CAAW,CAAA;IACX,mDAAa,CAAA;AACf,CAAC,EAHW,SAAS,KAAT,SAAS,QAGpB"}
package/lib/errors.d.ts CHANGED
@@ -14,3 +14,4 @@ export declare class MessageCounterError extends SessionError {
14
14
  export declare class PreKeyError extends SessionError {
15
15
  constructor(message?: string);
16
16
  }
17
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;CAAG;AAEzC,qBAAa,yBAA0B,SAAQ,WAAW;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;gBAEf,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;CAM/C;AAED,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,WAAY,SAAQ,YAAY;gBAC/B,OAAO,CAAC,EAAE,MAAM;CAI7B"}
package/lib/errors.js CHANGED
@@ -2,8 +2,8 @@ export class SignalError extends Error {
2
2
  }
3
3
  export class UntrustedIdentityKeyError extends SignalError {
4
4
  constructor(addr, identityKey) {
5
- super();
6
- this.name = 'UntrustedIdentityKeyError';
5
+ super(`Untrusted identity key for address: ${addr}`);
6
+ this.name = "UntrustedIdentityKeyError";
7
7
  this.addr = addr;
8
8
  this.identityKey = identityKey;
9
9
  }
@@ -11,18 +11,19 @@ export class UntrustedIdentityKeyError extends SignalError {
11
11
  export class SessionError extends SignalError {
12
12
  constructor(message) {
13
13
  super(message);
14
- this.name = 'SessionError';
14
+ this.name = "SessionError";
15
15
  }
16
16
  }
17
17
  export class MessageCounterError extends SessionError {
18
18
  constructor(message) {
19
19
  super(message);
20
- this.name = 'MessageCounterError';
20
+ this.name = "MessageCounterError";
21
21
  }
22
22
  }
23
23
  export class PreKeyError extends SessionError {
24
24
  constructor(message) {
25
25
  super(message);
26
- this.name = 'PreKeyError';
26
+ this.name = "PreKeyError";
27
27
  }
28
28
  }
29
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;CAAG;AAEzC,MAAM,OAAO,yBAA0B,SAAQ,WAAW;IAIxD,YAAY,IAAY,EAAE,WAAoB;QAC5C,KAAK,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAA;QACvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;IACnC,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,YAAY;IAC3C,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF"}
package/lib/index.d.ts CHANGED
@@ -1,20 +1,21 @@
1
- export * as crypto from './crypto.js';
2
- export * as curve from './curve.js';
3
- export * as keyhelper from './keyhelper.js';
4
- export { ProtocolAddress } from './protocol-address.js';
5
- export { SessionBuilder } from './session-builder.js';
6
- export { assertValidDeviceKeyBundle } from './prekey-bundle-validator.js';
7
- export { SessionCipher } from './session-cipher.js';
8
- export { SessionRecord, SessionEntry } from './session-record.js';
9
- export { FingerprintGenerator } from './numeric-fingerprint.js';
10
- export { BaseKeyType } from './base-key-type.js';
11
- export { ChainType } from './chain-type.js';
12
- export { Direction } from './direction.js';
13
- export { MemorySignalStorage } from './memory-storage.js';
14
- export { setLogger, getLogger } from './logger.js';
15
- export type { SignalLogger } from './logger.js';
16
- export { wipeBuffer, wipeBuffers } from './util.js';
17
- export * from './errors.js';
18
- export type { KeyPair } from './curve.js';
19
- export type { SignalStorage, DeviceKeyBundle, IncomingPreKeyMessage, EncryptedMessage } from './types.js';
20
- export type { Chain, ChainKey, CurrentRatchet, IndexInfo, PendingPreKey, SerializedSessionEntry } from './session-record.js';
1
+ export * as crypto from "./crypto.js";
2
+ export * as curve from "./curve.js";
3
+ export * as keyhelper from "./keyhelper.js";
4
+ export { ProtocolAddress } from "./protocol-address.js";
5
+ export { SessionBuilder } from "./session-builder.js";
6
+ export { assertValidDeviceKeyBundle } from "./prekey-bundle-validator.js";
7
+ export { SessionCipher } from "./session-cipher.js";
8
+ export { SessionRecord, SessionEntry } from "./session-record.js";
9
+ export { FingerprintGenerator } from "./numeric-fingerprint.js";
10
+ export { BaseKeyType } from "./base-key-type.js";
11
+ export { ChainType } from "./chain-type.js";
12
+ export { Direction } from "./direction.js";
13
+ export { MemorySignalStorage } from "./memory-storage.js";
14
+ export { setLogger, getLogger } from "./logger.js";
15
+ export type { SignalLogger } from "./logger.js";
16
+ export { wipeBuffer, wipeBuffers } from "./util.js";
17
+ export * from "./errors.js";
18
+ export type { KeyPair } from "./curve.js";
19
+ export type { SignalStorage, DeviceKeyBundle, IncomingPreKeyMessage, EncryptedMessage } from "./types.js";
20
+ export type { Chain, ChainKey, CurrentRatchet, IndexInfo, PendingPreKey, SerializedSessionEntry } from "./session-record.js";
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,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,eAAe,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AACtG,YAAY,EACV,KAAK,EACL,QAAQ,EACR,cAAc,EACd,SAAS,EACT,aAAa,EACb,sBAAsB,EACvB,MAAM,kBAAkB,CAAA"}
package/lib/index.js CHANGED
@@ -1,16 +1,17 @@
1
- export * as crypto from './crypto.js';
2
- export * as curve from './curve.js';
3
- export * as keyhelper from './keyhelper.js';
4
- export { ProtocolAddress } from './protocol-address.js';
5
- export { SessionBuilder } from './session-builder.js';
6
- export { assertValidDeviceKeyBundle } from './prekey-bundle-validator.js';
7
- export { SessionCipher } from './session-cipher.js';
8
- export { SessionRecord, SessionEntry } from './session-record.js';
9
- export { FingerprintGenerator } from './numeric-fingerprint.js';
10
- export { BaseKeyType } from './base-key-type.js';
11
- export { ChainType } from './chain-type.js';
12
- export { Direction } from './direction.js';
13
- export { MemorySignalStorage } from './memory-storage.js';
14
- export { setLogger, getLogger } from './logger.js';
15
- export { wipeBuffer, wipeBuffers } from './util.js';
16
- export * from './errors.js';
1
+ export * as crypto from "./crypto.js";
2
+ export * as curve from "./curve.js";
3
+ export * as keyhelper from "./keyhelper.js";
4
+ export { ProtocolAddress } from "./protocol-address.js";
5
+ export { SessionBuilder } from "./session-builder.js";
6
+ export { assertValidDeviceKeyBundle } from "./prekey-bundle-validator.js";
7
+ export { SessionCipher } from "./session-cipher.js";
8
+ export { SessionRecord, SessionEntry } from "./session-record.js";
9
+ export { FingerprintGenerator } from "./numeric-fingerprint.js";
10
+ export { BaseKeyType } from "./base-key-type.js";
11
+ export { ChainType } from "./chain-type.js";
12
+ export { Direction } from "./direction.js";
13
+ export { MemorySignalStorage } from "./memory-storage.js";
14
+ export { setLogger, getLogger } from "./logger.js";
15
+ export { wipeBuffer, wipeBuffers } from "./util.js";
16
+ export * from "./errors.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAChD,cAAc,UAAU,CAAA"}
@@ -1,5 +1,5 @@
1
- import * as curve from './curve.js';
2
- import type { KeyPair } from './curve.js';
1
+ import * as curve from "./curve.js";
2
+ import type { KeyPair } from "./curve.js";
3
3
  export interface SignedPreKey {
4
4
  keyId: number;
5
5
  keyPair: KeyPair;
@@ -16,3 +16,4 @@ export declare const generateIdentityKeyPair: typeof curve.generateKeyPair;
16
16
  export declare function generateRegistrationId(): number;
17
17
  export declare function generateSignedPreKey(identityKeyPair: KeyPair, signedKeyId: number): SignedPreKey;
18
18
  export declare function generatePreKey(keyId: number): PreKey;
19
+ //# sourceMappingURL=keyhelper.d.ts.map
@@ -0,0 +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"}
package/lib/keyhelper.js CHANGED
@@ -1,15 +1,15 @@
1
- import * as nodeCrypto from 'crypto';
2
- import * as curve from './curve.js';
1
+ import * as nodeCrypto from "crypto";
2
+ import * as curve from "./curve.js";
3
3
  function isNonNegativeInteger(n) {
4
- return typeof n === 'number' && n % 1 === 0 && n >= 0;
4
+ return typeof n === "number" && n % 1 === 0 && n >= 0;
5
5
  }
6
6
  export const DEFAULT_SIGNED_PRE_KEY_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
7
7
  export function shouldRotateSignedPreKey(createdAt, maxAgeMs = DEFAULT_SIGNED_PRE_KEY_MAX_AGE_MS) {
8
8
  if (!isNonNegativeInteger(createdAt)) {
9
- throw new TypeError('Invalid argument for createdAt: ' + createdAt);
9
+ throw new TypeError("Invalid argument for createdAt: " + createdAt);
10
10
  }
11
11
  if (!isNonNegativeInteger(maxAgeMs)) {
12
- throw new TypeError('Invalid argument for maxAgeMs: ' + maxAgeMs);
12
+ throw new TypeError("Invalid argument for maxAgeMs: " + maxAgeMs);
13
13
  }
14
14
  return Date.now() - createdAt >= maxAgeMs;
15
15
  }
@@ -26,10 +26,10 @@ export function generateSignedPreKey(identityKeyPair, signedKeyId) {
26
26
  identityKeyPair.privKey.byteLength !== 32 ||
27
27
  !(identityKeyPair.pubKey instanceof Buffer) ||
28
28
  identityKeyPair.pubKey.byteLength !== 33) {
29
- throw new TypeError('Invalid argument for identityKeyPair');
29
+ throw new TypeError("Invalid argument for identityKeyPair");
30
30
  }
31
31
  if (!isNonNegativeInteger(signedKeyId)) {
32
- throw new TypeError('Invalid argument for signedKeyId: ' + signedKeyId);
32
+ throw new TypeError("Invalid argument for signedKeyId: " + signedKeyId);
33
33
  }
34
34
  const keyPair = curve.generateKeyPair();
35
35
  const sig = curve.calculateSignature(identityKeyPair.privKey, keyPair.pubKey);
@@ -42,7 +42,7 @@ export function generateSignedPreKey(identityKeyPair, signedKeyId) {
42
42
  }
43
43
  export function generatePreKey(keyId) {
44
44
  if (!isNonNegativeInteger(keyId)) {
45
- throw new TypeError('Invalid argument for keyId: ' + keyId);
45
+ throw new TypeError("Invalid argument for keyId: " + keyId);
46
46
  }
47
47
  const keyPair = curve.generateKeyPair();
48
48
  return {
@@ -50,3 +50,4 @@ export function generatePreKey(keyId) {
50
50
  keyPair
51
51
  };
52
52
  }
53
+ //# sourceMappingURL=keyhelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyhelper.js","sourceRoot":"","sources":["../src/keyhelper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAGhC,SAAS,oBAAoB,CAAC,CAAS;IACrC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvD,CAAC;AAcD,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAExE,MAAM,UAAU,wBAAwB,CACtC,SAAiB,EACjB,WAAmB,iCAAiC;IAEpD,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CAAC,kCAAkC,GAAG,SAAS,CAAC,CAAA;IACrE,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,SAAS,CAAC,iCAAiC,GAAG,QAAQ,CAAC,CAAA;IACnE,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,QAAQ,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,eAAe,CAAA;AAE5D,MAAM,UAAU,sBAAsB;IACpC,IAAI,cAAsB,CAAA;IAC1B,GAAG,CAAC;QACF,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAA;IACrE,CAAC,QAAQ,cAAc,KAAK,CAAC,EAAC;IAE9B,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,eAAwB,EAAE,WAAmB;IAChF,IACE,CAAC,CAAC,eAAe,CAAC,OAAO,YAAY,MAAM,CAAC;QAC5C,eAAe,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;QACzC,CAAC,CAAC,eAAe,CAAC,MAAM,YAAY,MAAM,CAAC;QAC3C,eAAe,CAAC,MAAM,CAAC,UAAU,KAAK,EAAE,EACxC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;IAC7D,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,oCAAoC,GAAG,WAAW,CAAC,CAAA;IACzE,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,EAAE,CAAA;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAE7E,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,OAAO;QACP,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,SAAS,CAAC,8BAA8B,GAAG,KAAK,CAAC,CAAA;IAC7D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvC,OAAO;QACL,KAAK;QACL,OAAO;KACR,CAAA;AACH,CAAC"}
package/lib/logger.d.ts CHANGED
@@ -4,3 +4,4 @@ export interface SignalLogger {
4
4
  }
5
5
  export declare function setLogger(logger: SignalLogger | null): void;
6
6
  export declare function getLogger(): SignalLogger;
7
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAC7C;AASD,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED,wBAAgB,SAAS,IAAI,YAAY,CAExC"}
package/lib/logger.js CHANGED
@@ -9,3 +9,4 @@ export function setLogger(logger) {
9
9
  export function getLogger() {
10
10
  return currentLogger;
11
11
  }
12
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,GAAiB;IAC/B,IAAI,KAAU,CAAC;IACf,KAAK,KAAU,CAAC;CACjB,CAAA;AAED,IAAI,aAAa,GAAiB,UAAU,CAAA;AAE5C,MAAM,UAAU,SAAS,CAAC,MAA2B;IACnD,aAAa,GAAG,MAAM,IAAI,UAAU,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { KeyPair } from './curve.js';
2
- import type { Direction } from './direction.js';
3
- import { SessionRecord } from './session-record.js';
4
- import type { SignalStorage } from './types.js';
1
+ import type { KeyPair } from "./curve.js";
2
+ import type { Direction } from "./direction.js";
3
+ import { SessionRecord } from "./session-record.js";
4
+ import type { SignalStorage } from "./types.js";
5
5
  export declare class MemorySignalStorage implements SignalStorage {
6
6
  private identityKeyPair;
7
7
  private registrationId;
@@ -23,3 +23,4 @@ export declare class MemorySignalStorage implements SignalStorage {
23
23
  storePreKey(id: number, keyPair: KeyPair): void;
24
24
  storeSignedPreKey(id: number, keyPair: KeyPair): void;
25
25
  }
26
+ //# sourceMappingURL=memory-storage.d.ts.map
@@ -0,0 +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,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAU5C,qBAAa,mBAAoB,YAAW,aAAa;IACvD,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;gBAEzC,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,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAGtD"}