@stvor/sdk 2.4.0 → 3.0.0
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/dist/facade/app.cjs +29 -0
- package/dist/facade/app.d.ts +83 -76
- package/dist/facade/app.js +330 -195
- package/dist/facade/crypto-session.cjs +29 -0
- package/dist/facade/crypto-session.d.ts +49 -54
- package/dist/facade/crypto-session.js +117 -140
- package/dist/facade/errors.cjs +29 -0
- package/dist/facade/errors.d.ts +29 -12
- package/dist/facade/errors.js +49 -8
- package/dist/facade/index.cjs +29 -0
- package/dist/facade/index.d.ts +27 -8
- package/dist/facade/index.js +23 -3
- package/dist/facade/local-storage-identity-store.cjs +29 -0
- package/dist/facade/local-storage-identity-store.d.ts +50 -0
- package/dist/facade/local-storage-identity-store.js +100 -0
- package/dist/facade/metrics-attestation.cjs +29 -0
- package/dist/facade/metrics-attestation.d.ts +209 -0
- package/dist/facade/metrics-attestation.js +333 -0
- package/dist/facade/metrics-engine.cjs +29 -0
- package/dist/facade/metrics-engine.d.ts +91 -0
- package/dist/facade/metrics-engine.js +170 -0
- package/dist/facade/redis-replay-cache.cjs +29 -0
- package/dist/facade/redis-replay-cache.d.ts +88 -0
- package/dist/facade/redis-replay-cache.js +60 -0
- package/dist/facade/relay-client.cjs +29 -0
- package/dist/facade/relay-client.d.ts +22 -23
- package/dist/facade/relay-client.js +107 -128
- package/dist/facade/replay-manager.cjs +29 -0
- package/dist/facade/replay-manager.d.ts +28 -35
- package/dist/facade/replay-manager.js +102 -69
- package/dist/facade/sodium-singleton.cjs +29 -0
- package/dist/facade/tofu-manager.cjs +29 -0
- package/dist/facade/tofu-manager.d.ts +38 -36
- package/dist/facade/tofu-manager.js +109 -77
- package/dist/facade/types.cjs +29 -0
- package/dist/facade/types.d.ts +2 -0
- package/dist/index.cjs +29 -0
- package/dist/index.d.cts +6 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +7 -0
- package/dist/legacy.cjs +29 -0
- package/dist/legacy.d.ts +31 -1
- package/dist/legacy.js +90 -2
- package/dist/ratchet/core-production.cjs +29 -0
- package/dist/ratchet/core-production.d.ts +95 -0
- package/dist/ratchet/core-production.js +286 -0
- package/dist/ratchet/index.cjs +29 -0
- package/dist/ratchet/index.d.ts +49 -78
- package/dist/ratchet/index.js +313 -288
- package/dist/ratchet/key-recovery.cjs +29 -0
- package/dist/ratchet/replay-protection.cjs +29 -0
- package/dist/ratchet/tofu.cjs +29 -0
- package/dist/src/facade/app.cjs +29 -0
- package/dist/src/facade/app.d.ts +105 -0
- package/dist/src/facade/app.js +245 -0
- package/dist/src/facade/crypto.cjs +29 -0
- package/dist/src/facade/errors.cjs +29 -0
- package/dist/src/facade/errors.d.ts +19 -0
- package/dist/src/facade/errors.js +21 -0
- package/dist/src/facade/index.cjs +29 -0
- package/dist/src/facade/index.d.ts +8 -0
- package/dist/src/facade/index.js +5 -0
- package/dist/src/facade/relay-client.cjs +29 -0
- package/dist/src/facade/relay-client.d.ts +36 -0
- package/dist/src/facade/relay-client.js +154 -0
- package/dist/src/facade/types.cjs +29 -0
- package/dist/src/facade/types.d.ts +50 -0
- package/dist/src/facade/types.js +4 -0
- package/dist/src/index.cjs +29 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/legacy.cjs +29 -0
- package/dist/src/legacy.d.ts +0 -0
- package/dist/src/legacy.js +1 -0
- package/dist/src/mock-relay-server.cjs +29 -0
- package/dist/src/mock-relay-server.d.ts +30 -0
- package/dist/src/mock-relay-server.js +236 -0
- package/package.json +37 -11
- package/dist/ratchet/tests/ratchet.test.d.ts +0 -1
- package/dist/ratchet/tests/ratchet.test.js +0 -160
- /package/dist/{facade → src/facade}/crypto.d.ts +0 -0
- /package/dist/{facade → src/facade}/crypto.js +0 -0
package/dist/ratchet/index.d.ts
CHANGED
|
@@ -1,88 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* X3DH + Double Ratchet Implementation
|
|
3
|
-
*
|
|
3
|
+
* Uses ONLY Node.js built-in crypto module — zero external dependencies
|
|
4
|
+
*
|
|
5
|
+
* Implements the Signal Protocol Double Ratchet with deferred initialization:
|
|
6
|
+
* - First send → "initiator" DH ratchet (DH with peer's SPK)
|
|
7
|
+
* - First receive → "responder" DH ratchet (use own SPK, then fresh key)
|
|
8
|
+
* This allows either side to send first after symmetric X3DH key agreement.
|
|
9
|
+
*
|
|
10
|
+
* Provides:
|
|
11
|
+
* - X3DH key agreement (symmetric variant, both sides derive same SK)
|
|
12
|
+
* - Double Ratchet with DH ratchet + symmetric-key ratchet
|
|
13
|
+
* - AES-256-GCM AEAD encryption with header as AAD
|
|
14
|
+
* - ECDSA P-256 signing / verification
|
|
15
|
+
* - HKDF-SHA256 key derivation
|
|
16
|
+
* - HMAC-based chain-key ratchet (Signal-style)
|
|
4
17
|
*/
|
|
18
|
+
export interface KeyPair {
|
|
19
|
+
publicKey: Buffer;
|
|
20
|
+
privateKey: Buffer;
|
|
21
|
+
}
|
|
5
22
|
export interface SessionState {
|
|
23
|
+
myIdentityPublicKey: Buffer;
|
|
24
|
+
peerIdentityPublicKey: Buffer;
|
|
25
|
+
rootKey: Buffer;
|
|
26
|
+
sendingChainKey: Buffer;
|
|
27
|
+
receivingChainKey: Buffer;
|
|
28
|
+
myRatchetKeyPair: KeyPair;
|
|
29
|
+
theirRatchetPublicKey: Buffer | null;
|
|
30
|
+
sendCount: number;
|
|
31
|
+
recvCount: number;
|
|
32
|
+
prevSendCount: number;
|
|
33
|
+
skippedKeys: Map<string, Buffer>;
|
|
34
|
+
isPostCompromise: boolean;
|
|
35
|
+
peerSPK: Buffer | null;
|
|
36
|
+
mySPKPair: KeyPair | null;
|
|
6
37
|
identityKey: Uint8Array;
|
|
7
38
|
signedPreKey: Uint8Array;
|
|
8
39
|
oneTimePreKey: Uint8Array;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
skippedMessageKeys: Map<string, Uint8Array>;
|
|
13
|
-
isPostCompromise: boolean;
|
|
40
|
+
sendingChainMessageNumber: number;
|
|
41
|
+
receivingChainMessageNumber: number;
|
|
42
|
+
previousSendingChainLength: number;
|
|
14
43
|
}
|
|
15
44
|
export declare function initializeCrypto(): Promise<void>;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* @param cipherSuite - The cipher suite
|
|
27
|
-
* @returns SessionState
|
|
28
|
-
*/
|
|
29
|
-
export declare function establishSession(identityKeyPair: {
|
|
30
|
-
publicKey: Uint8Array;
|
|
31
|
-
privateKey: Uint8Array;
|
|
32
|
-
}, signedPreKeyPair: {
|
|
33
|
-
publicKey: Uint8Array;
|
|
34
|
-
privateKey: Uint8Array;
|
|
35
|
-
}, oneTimePreKey: Uint8Array, recipientIdentityKey: Uint8Array, recipientSignedPreKey: Uint8Array, recipientOneTimePreKey: Uint8Array, recipientSPKSignature: Uint8Array, protocolVersion: string, cipherSuite: string): SessionState;
|
|
36
|
-
/**
|
|
37
|
-
* Double Ratchet Encryption
|
|
38
|
-
* @param plaintext - The message to encrypt
|
|
39
|
-
* @param session - The current session state
|
|
40
|
-
* @returns { ciphertext: Uint8Array; header: { publicKey: Uint8Array; nonce: Uint8Array } }
|
|
41
|
-
*/
|
|
42
|
-
export declare function encryptMessage(plaintext: string, session: SessionState): {
|
|
43
|
-
ciphertext: any;
|
|
44
|
-
header: {
|
|
45
|
-
publicKey: any;
|
|
46
|
-
nonce: any;
|
|
47
|
-
};
|
|
45
|
+
export declare function generateKeyPair(): KeyPair;
|
|
46
|
+
/** ECDSA-P256-SHA256 sign */
|
|
47
|
+
export declare function ecSign(data: Buffer, kp: KeyPair): Buffer;
|
|
48
|
+
/** ECDSA-P256-SHA256 verify */
|
|
49
|
+
export declare function ecVerify(data: Buffer, sig: Buffer, pub: Buffer): boolean;
|
|
50
|
+
export declare function x3dhSymmetric(myIK: KeyPair, mySPK: KeyPair, peerIK: Buffer, peerSPK: Buffer): Buffer;
|
|
51
|
+
export declare function establishSession(myIK: KeyPair, mySPK: KeyPair, peerIK: Buffer, peerSPK: Buffer): SessionState;
|
|
52
|
+
export declare function encryptMessage(session: SessionState, plaintext: Buffer): {
|
|
53
|
+
ciphertext: Buffer;
|
|
54
|
+
header: Buffer;
|
|
48
55
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* @param session - The current session state
|
|
54
|
-
* @returns The decrypted plaintext
|
|
55
|
-
*/
|
|
56
|
-
export declare function decryptMessage(ciphertext: Uint8Array, header: {
|
|
57
|
-
publicKey: Uint8Array;
|
|
58
|
-
nonce: Uint8Array;
|
|
59
|
-
}, session: SessionState): string;
|
|
60
|
-
export declare function addSkippedKey(session: SessionState, header: {
|
|
61
|
-
publicKey: Uint8Array;
|
|
62
|
-
nonce: Uint8Array;
|
|
63
|
-
}, messageKey: Uint8Array): void;
|
|
64
|
-
export declare function removeSkippedKey(session: SessionState, header: {
|
|
65
|
-
publicKey: Uint8Array;
|
|
66
|
-
nonce: Uint8Array;
|
|
67
|
-
}): void;
|
|
68
|
-
export declare function processSkippedKeys(session: SessionState): void;
|
|
69
|
-
export declare function handleSimultaneousSend(session: SessionState, isInitiator: boolean): void;
|
|
70
|
-
export declare function generateOPKPool(): void;
|
|
71
|
-
export declare function consumeOPKAtomically(userId: string): Uint8Array;
|
|
72
|
-
export declare function enforceDHRatchetPolicy(session: SessionState, remotePublicKey: Uint8Array, suspectedCompromise?: boolean): void;
|
|
73
|
-
/**
|
|
74
|
-
* Increment message counter and enforce policy.
|
|
75
|
-
*/
|
|
76
|
-
export declare function incrementMessageCounter(session: SessionState, remotePublicKey: Uint8Array): void;
|
|
77
|
-
/**
|
|
78
|
-
* Force a DH ratchet step to enable PCS.
|
|
79
|
-
* @param session - The current session state.
|
|
80
|
-
* @param remotePublicKey - The remote party's ephemeral public key.
|
|
81
|
-
*/
|
|
82
|
-
export declare function forceDHRatchet(session: SessionState, remotePublicKey: Uint8Array): void;
|
|
83
|
-
/**
|
|
84
|
-
* Trigger PCS recovery only after receiving a new DH public key.
|
|
85
|
-
* @param session - The current session state.
|
|
86
|
-
* @param remotePublicKey - The new DH public key from the remote party.
|
|
87
|
-
*/
|
|
88
|
-
export declare function receiveNewDHPublicKey(session: SessionState, remotePublicKey: Uint8Array): void;
|
|
56
|
+
export declare function decryptMessage(session: SessionState, ciphertext: Buffer, header: Buffer): Buffer;
|
|
57
|
+
export declare function forceRatchet(session: SessionState): void;
|
|
58
|
+
export declare function serializeSession(s: SessionState): Buffer;
|
|
59
|
+
export declare function deserializeSession(data: Buffer): SessionState;
|