@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.
- package/README.md +28 -41
- package/lib/base-key-type.d.ts +1 -0
- package/lib/base-key-type.d.ts.map +1 -0
- package/lib/base-key-type.js +1 -0
- package/lib/base-key-type.js.map +1 -0
- package/lib/chain-type.d.ts +1 -0
- package/lib/chain-type.d.ts.map +1 -0
- package/lib/chain-type.js +1 -0
- package/lib/chain-type.js.map +1 -0
- package/lib/crypto.d.ts +1 -0
- package/lib/crypto.d.ts.map +1 -0
- package/lib/crypto.js +10 -9
- package/lib/crypto.js.map +1 -0
- package/lib/curve.d.ts +1 -0
- package/lib/curve.d.ts.map +1 -0
- package/lib/curve.js +20 -19
- package/lib/curve.js.map +1 -0
- package/lib/direction.d.ts +1 -0
- package/lib/direction.d.ts.map +1 -0
- package/lib/direction.js +1 -0
- package/lib/direction.js.map +1 -0
- package/lib/errors.d.ts +1 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +6 -5
- package/lib/errors.js.map +1 -0
- package/lib/index.d.ts +21 -20
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +17 -16
- package/lib/index.js.map +1 -0
- package/lib/keyhelper.d.ts +3 -2
- package/lib/keyhelper.d.ts.map +1 -0
- package/lib/keyhelper.js +9 -8
- package/lib/keyhelper.js.map +1 -0
- package/lib/logger.d.ts +1 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +1 -0
- package/lib/logger.js.map +1 -0
- package/lib/memory-storage.d.ts +5 -4
- package/lib/memory-storage.d.ts.map +1 -0
- package/lib/memory-storage.js +3 -2
- package/lib/memory-storage.js.map +1 -0
- package/lib/numeric-fingerprint.d.ts +1 -0
- package/lib/numeric-fingerprint.d.ts.map +1 -0
- package/lib/numeric-fingerprint.js +7 -6
- package/lib/numeric-fingerprint.js.map +1 -0
- package/lib/prekey-bundle-validator.d.ts +2 -1
- package/lib/prekey-bundle-validator.d.ts.map +1 -0
- package/lib/prekey-bundle-validator.js +13 -12
- package/lib/prekey-bundle-validator.js.map +1 -0
- package/lib/protobufs.d.ts +2 -1
- package/lib/protobufs.d.ts.map +1 -0
- package/lib/protobufs.js +2 -1
- package/lib/protobufs.js.map +1 -0
- package/lib/protocol-address.d.ts +1 -0
- package/lib/protocol-address.d.ts.map +1 -0
- package/lib/protocol-address.js +19 -10
- package/lib/protocol-address.js.map +1 -0
- package/lib/queue-job.d.ts +1 -0
- package/lib/queue-job.d.ts.map +1 -0
- package/lib/queue-job.js +1 -7
- package/lib/queue-job.js.map +1 -0
- package/lib/session-builder.d.ts +4 -3
- package/lib/session-builder.d.ts.map +1 -0
- package/lib/session-builder.js +17 -16
- package/lib/session-builder.js.map +1 -0
- package/lib/session-cipher.d.ts +5 -4
- package/lib/session-cipher.d.ts.map +1 -0
- package/lib/session-cipher.js +37 -36
- package/lib/session-cipher.js.map +1 -0
- package/lib/session-record.d.ts +6 -2
- package/lib/session-record.d.ts.map +1 -0
- package/lib/session-record.js +62 -39
- package/lib/session-record.js.map +1 -0
- package/lib/types.d.ts +4 -3
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +1 -0
- package/lib/types.js.map +1 -0
- package/lib/util.d.ts +1 -0
- package/lib/util.d.ts.map +1 -0
- package/lib/util.js +1 -0
- package/lib/util.js.map +1 -0
- package/lib/whisper-text-protocol.d.ts +85 -2
- package/lib/whisper-text-protocol.d.ts.map +1 -0
- package/lib/whisper-text-protocol.js +375 -335
- package/lib/whisper-text-protocol.js.map +1 -0
- 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/
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
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>
|
|
116
|
+
Hecho con ☕ para el ecosistema <b>Furina-MD</b> / <b>BaileysX</b>
|
|
130
117
|
</div>
|
package/lib/base-key-type.d.ts
CHANGED
|
@@ -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"}
|
package/lib/base-key-type.js
CHANGED
|
@@ -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"}
|
package/lib/chain-type.d.ts
CHANGED
|
@@ -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
|
@@ -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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
68
|
+
throw new Error("Bad MAC length");
|
|
69
69
|
}
|
|
70
70
|
if (!nodeCrypto.timingSafeEqual(mac, calculatedMac)) {
|
|
71
|
-
throw new Error(
|
|
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
|
|
2
|
-
import * as nodeCrypto from
|
|
3
|
-
import { getLogger } from
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
49
|
-
publicKeyEncoding: { format:
|
|
50
|
-
privateKeyEncoding: { format:
|
|
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(
|
|
72
|
+
throw new Error("Invalid public key");
|
|
73
73
|
}
|
|
74
|
-
if (typeof nodeCrypto.diffieHellman ===
|
|
74
|
+
if (typeof nodeCrypto.diffieHellman === "function") {
|
|
75
75
|
const nodePrivateKey = nodeCrypto.createPrivateKey({
|
|
76
76
|
key: Buffer.concat([PRIVATE_KEY_DER_PREFIX, privKey]),
|
|
77
|
-
format:
|
|
78
|
-
type:
|
|
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:
|
|
83
|
-
type:
|
|
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(
|
|
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(
|
|
103
|
+
throw new Error("Invalid public key");
|
|
104
104
|
}
|
|
105
105
|
if (!msg) {
|
|
106
|
-
throw new Error(
|
|
106
|
+
throw new Error("Invalid message");
|
|
107
107
|
}
|
|
108
108
|
if (!sig || sig.byteLength !== 64) {
|
|
109
|
-
throw new Error(
|
|
109
|
+
throw new Error("Invalid signature");
|
|
110
110
|
}
|
|
111
111
|
return curveJs.verify(pubKey, msg, sig);
|
|
112
112
|
}
|
|
113
|
+
//# sourceMappingURL=curve.js.map
|
package/lib/curve.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"curve.js","sourceRoot":"","sources":["../src/curve.ts"],"names":[],"mappings":"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"}
|
package/lib/direction.d.ts
CHANGED
|
@@ -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
|
@@ -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
|
@@ -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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
2
|
-
export * as curve from
|
|
3
|
-
export * as keyhelper from
|
|
4
|
-
export { ProtocolAddress } from
|
|
5
|
-
export { SessionBuilder } from
|
|
6
|
-
export { assertValidDeviceKeyBundle } from
|
|
7
|
-
export { SessionCipher } from
|
|
8
|
-
export { SessionRecord, SessionEntry } from
|
|
9
|
-
export { FingerprintGenerator } from
|
|
10
|
-
export { BaseKeyType } from
|
|
11
|
-
export { ChainType } from
|
|
12
|
-
export { Direction } from
|
|
13
|
-
export { MemorySignalStorage } from
|
|
14
|
-
export { setLogger, getLogger } from
|
|
15
|
-
export type { SignalLogger } from
|
|
16
|
-
export { wipeBuffer, wipeBuffers } from
|
|
17
|
-
export * from
|
|
18
|
-
export type { KeyPair } from
|
|
19
|
-
export type { SignalStorage, DeviceKeyBundle, IncomingPreKeyMessage, EncryptedMessage } from
|
|
20
|
-
export type { Chain, ChainKey, CurrentRatchet, IndexInfo, PendingPreKey, SerializedSessionEntry } from
|
|
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
|
|
2
|
-
export * as curve from
|
|
3
|
-
export * as keyhelper from
|
|
4
|
-
export { ProtocolAddress } from
|
|
5
|
-
export { SessionBuilder } from
|
|
6
|
-
export { assertValidDeviceKeyBundle } from
|
|
7
|
-
export { SessionCipher } from
|
|
8
|
-
export { SessionRecord, SessionEntry } from
|
|
9
|
-
export { FingerprintGenerator } from
|
|
10
|
-
export { BaseKeyType } from
|
|
11
|
-
export { ChainType } from
|
|
12
|
-
export { Direction } from
|
|
13
|
-
export { MemorySignalStorage } from
|
|
14
|
-
export { setLogger, getLogger } from
|
|
15
|
-
export { wipeBuffer, wipeBuffers } from
|
|
16
|
-
export * from
|
|
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
|
package/lib/index.js.map
ADDED
|
@@ -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"}
|
package/lib/keyhelper.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as curve from
|
|
2
|
-
import type { KeyPair } from
|
|
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
|
|
2
|
-
import * as curve from
|
|
1
|
+
import * as nodeCrypto from "crypto";
|
|
2
|
+
import * as curve from "./curve.js";
|
|
3
3
|
function isNonNegativeInteger(n) {
|
|
4
|
-
return typeof n ===
|
|
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(
|
|
9
|
+
throw new TypeError("Invalid argument for createdAt: " + createdAt);
|
|
10
10
|
}
|
|
11
11
|
if (!isNonNegativeInteger(maxAgeMs)) {
|
|
12
|
-
throw new TypeError(
|
|
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(
|
|
29
|
+
throw new TypeError("Invalid argument for identityKeyPair");
|
|
30
30
|
}
|
|
31
31
|
if (!isNonNegativeInteger(signedKeyId)) {
|
|
32
|
-
throw new TypeError(
|
|
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(
|
|
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
|
@@ -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
|
@@ -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"}
|
package/lib/memory-storage.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { KeyPair } from
|
|
2
|
-
import type { Direction } from
|
|
3
|
-
import { SessionRecord } from
|
|
4
|
-
import type { SignalStorage } from
|
|
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"}
|