@unknownncat/swt-libsignal 1.0.4

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 (55) hide show
  1. package/dist/base_key_type.d.ts +5 -0
  2. package/dist/base_key_type.js +4 -0
  3. package/dist/chain_type.d.ts +5 -0
  4. package/dist/chain_type.js +4 -0
  5. package/dist/crypto.d.ts +2 -0
  6. package/dist/crypto.js +95 -0
  7. package/dist/curve.d.ts +5 -0
  8. package/dist/curve.js +67 -0
  9. package/dist/fingerprint.d.ts +5 -0
  10. package/dist/fingerprint.js +76 -0
  11. package/dist/generated/WhisperTextProtocol.d.ts +49 -0
  12. package/dist/generated/WhisperTextProtocol.js +199 -0
  13. package/dist/index.d.ts +20 -0
  14. package/dist/index.js +13 -0
  15. package/dist/job_queue.d.ts +3 -0
  16. package/dist/job_queue.js +48 -0
  17. package/dist/key-helper.d.ts +14 -0
  18. package/dist/key-helper.js +42 -0
  19. package/dist/protobuf.d.ts +1 -0
  20. package/dist/protobuf.js +2 -0
  21. package/dist/protocol_address.d.ts +9 -0
  22. package/dist/protocol_address.js +50 -0
  23. package/dist/session/builder/index.d.ts +2 -0
  24. package/dist/session/builder/index.js +2 -0
  25. package/dist/session/builder/session-builder.d.ts +13 -0
  26. package/dist/session/builder/session-builder.js +148 -0
  27. package/dist/session/builder/types.d.ts +38 -0
  28. package/dist/session/builder/types.js +1 -0
  29. package/dist/session/cipher/encoding.d.ts +13 -0
  30. package/dist/session/cipher/encoding.js +135 -0
  31. package/dist/session/cipher/index.d.ts +3 -0
  32. package/dist/session/cipher/index.js +3 -0
  33. package/dist/session/cipher/session-cipher.d.ts +26 -0
  34. package/dist/session/cipher/session-cipher.js +300 -0
  35. package/dist/session/cipher/types.d.ts +47 -0
  36. package/dist/session/cipher/types.js +1 -0
  37. package/dist/session/constants.d.ts +3 -0
  38. package/dist/session/constants.js +3 -0
  39. package/dist/session/index.d.ts +3 -0
  40. package/dist/session/index.js +3 -0
  41. package/dist/session/record/index.d.ts +3 -0
  42. package/dist/session/record/index.js +3 -0
  43. package/dist/session/record/session-entry.d.ts +20 -0
  44. package/dist/session/record/session-entry.js +146 -0
  45. package/dist/session/record/session-record.d.ts +21 -0
  46. package/dist/session/record/session-record.js +95 -0
  47. package/dist/session/record/types.d.ts +71 -0
  48. package/dist/session/record/types.js +1 -0
  49. package/dist/session/utils.d.ts +7 -0
  50. package/dist/session/utils.js +18 -0
  51. package/dist/signal-errors.d.ts +18 -0
  52. package/dist/signal-errors.js +24 -0
  53. package/dist/teste.d.ts +1 -0
  54. package/dist/teste.js +18 -0
  55. package/package.json +40 -0
@@ -0,0 +1,71 @@
1
+ import type { BaseKeyType } from "../../base_key_type.js";
2
+ export interface PendingPreKey {
3
+ baseKey: Uint8Array;
4
+ signedKeyId: number;
5
+ preKeyId?: number;
6
+ }
7
+ export interface ChainKey {
8
+ counter: number;
9
+ key: Uint8Array | undefined;
10
+ }
11
+ export interface ChainState {
12
+ chainKey: ChainKey;
13
+ chainType: number;
14
+ messageKeys: Record<string, Uint8Array>;
15
+ }
16
+ export interface CurrentRatchet {
17
+ ephemeralKeyPair: {
18
+ pubKey: Uint8Array;
19
+ privKey: Uint8Array;
20
+ };
21
+ lastRemoteEphemeralKey: Uint8Array;
22
+ previousCounter: number;
23
+ rootKey: Uint8Array;
24
+ }
25
+ export interface IndexInfo {
26
+ baseKey: Uint8Array;
27
+ baseKeyType: BaseKeyType;
28
+ closed: number;
29
+ used: number;
30
+ created: number;
31
+ remoteIdentityKey: Uint8Array;
32
+ }
33
+ export interface SerializedChainState {
34
+ chainKey: {
35
+ counter: number;
36
+ key: string | undefined;
37
+ };
38
+ chainType: number;
39
+ messageKeys: Record<string, string>;
40
+ }
41
+ export interface SerializedPendingPreKey {
42
+ baseKey: string;
43
+ signedKeyId: number;
44
+ preKeyId?: number;
45
+ }
46
+ export interface SerializedSessionEntry {
47
+ registrationId: number;
48
+ currentRatchet: {
49
+ ephemeralKeyPair: {
50
+ pubKey: string;
51
+ privKey: string;
52
+ };
53
+ lastRemoteEphemeralKey: string;
54
+ previousCounter: number;
55
+ rootKey: string;
56
+ };
57
+ indexInfo: {
58
+ baseKey: string;
59
+ baseKeyType: BaseKeyType;
60
+ closed: number;
61
+ used: number;
62
+ created: number;
63
+ remoteIdentityKey: string;
64
+ };
65
+ _chains: Record<string, SerializedChainState>;
66
+ pendingPreKey?: SerializedPendingPreKey;
67
+ }
68
+ export interface SerializedSessionRecord {
69
+ _sessions: Record<string, SerializedSessionEntry>;
70
+ version: string;
71
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,7 @@
1
+ export declare function assertUint8(value: unknown): asserts value is Uint8Array;
2
+ export declare function toBase64(u: Uint8Array): string;
3
+ export declare function fromBase64(b64: string): Uint8Array;
4
+ export declare const u8: {
5
+ readonly encode: (u: Uint8Array | undefined) => string | undefined;
6
+ readonly decode: (s: string | undefined) => Uint8Array | undefined;
7
+ };
@@ -0,0 +1,18 @@
1
+ export function assertUint8(value) {
2
+ if (!(value instanceof Uint8Array)) {
3
+ const name = (value instanceof Object)
4
+ ? value.constructor.name
5
+ : typeof value;
6
+ throw new TypeError(`Expected Uint8Array instead of: ${name}`);
7
+ }
8
+ }
9
+ export function toBase64(u) {
10
+ return Buffer.from(u).toString('base64');
11
+ }
12
+ export function fromBase64(b64) {
13
+ return new Uint8Array(Buffer.from(b64, 'base64'));
14
+ }
15
+ export const u8 = {
16
+ encode: (u) => u ? toBase64(u) : undefined,
17
+ decode: (s) => s ? fromBase64(s) : undefined,
18
+ };
@@ -0,0 +1,18 @@
1
+ export declare class SignalError extends Error {
2
+ constructor(message?: string, options?: {
3
+ cause?: unknown;
4
+ });
5
+ }
6
+ export declare class UntrustedIdentityKeyError extends SignalError {
7
+ readonly addr: string;
8
+ readonly identityKey: Uint8Array;
9
+ constructor(addr: string, identityKey: Uint8Array, options?: {
10
+ cause?: unknown;
11
+ });
12
+ }
13
+ export declare class SessionError extends SignalError {
14
+ }
15
+ export declare class MessageCounterError extends SessionError {
16
+ }
17
+ export declare class PreKeyError extends SessionError {
18
+ }
@@ -0,0 +1,24 @@
1
+ export class SignalError extends Error {
2
+ constructor(message, options) {
3
+ super(message, options);
4
+ this.name = new.target.name;
5
+ if (Error.captureStackTrace) {
6
+ Error.captureStackTrace(this, new.target);
7
+ }
8
+ }
9
+ }
10
+ export class UntrustedIdentityKeyError extends SignalError {
11
+ addr;
12
+ identityKey;
13
+ constructor(addr, identityKey, options) {
14
+ super(`Untrusted identity key for ${addr}`, options);
15
+ this.addr = addr;
16
+ this.identityKey = identityKey;
17
+ }
18
+ }
19
+ export class SessionError extends SignalError {
20
+ }
21
+ export class MessageCounterError extends SessionError {
22
+ }
23
+ export class PreKeyError extends SessionError {
24
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/teste.js ADDED
@@ -0,0 +1,18 @@
1
+ import * as KeyHelper from "./key-helper.js";
2
+ const preKeys = [];
3
+ const identityKeyPairs = [];
4
+ const signedPreKeys = [];
5
+ for (let i = 0; i < 100; i++) {
6
+ console.time("identityKeyPair");
7
+ const identityKeyPair = await KeyHelper.generateIdentityKeyPair();
8
+ console.timeEnd("identityKeyPair");
9
+ console.time("signedPreKey");
10
+ const signedPreKey = await KeyHelper.generateSignedPreKey(identityKeyPair, i);
11
+ console.timeEnd("signedPreKey");
12
+ preKeys.push(await KeyHelper.generatePreKey(i));
13
+ identityKeyPairs.push(identityKeyPair);
14
+ signedPreKeys.push(signedPreKey);
15
+ }
16
+ console.log(preKeys);
17
+ console.log(identityKeyPairs);
18
+ console.log(signedPreKeys);
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@unknownncat/swt-libsignal",
3
+ "version": "1.0.4",
4
+ "description": "Libsignal reimplementation using libsodium",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "publishConfig": {
9
+ "access": "public"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc -p tsconfig.json",
22
+ "dev": "tsx src/index.ts",
23
+ "clean": "rimraf dist",
24
+ "prepublishOnly": "npm run clean && npm run build"
25
+ },
26
+ "engines": {
27
+ "node": ">=20"
28
+ },
29
+ "dependencies": {
30
+ "@protobuf-ts/runtime": "^2.11.1",
31
+ "libsodium-wrappers": "^0.8.2"
32
+ },
33
+ "devDependencies": {
34
+ "@protobuf-ts/plugin": "^2.11.1",
35
+ "@types/node": "^20.19.33",
36
+ "rimraf": "^5.0.0",
37
+ "tsx": "^4.7.0",
38
+ "typescript": "^5.4.0"
39
+ }
40
+ }