@agentvault/secure-channel 0.1.1 → 0.1.2
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/cli.d.ts +0 -1
- package/dist/cli.js +45444 -104
- package/dist/cli.js.map +7 -1
- package/dist/index.js +45349 -3
- package/dist/index.js.map +7 -1
- package/package.json +14 -7
- package/dist/__tests__/crypto-helpers.test.js +0 -73
- package/dist/__tests__/crypto-helpers.test.js.map +0 -1
- package/dist/__tests__/state.test.js +0 -58
- package/dist/__tests__/state.test.js.map +0 -1
- package/dist/__tests__/transport.test.js +0 -101
- package/dist/__tests__/transport.test.js.map +0 -1
- package/dist/channel.js +0 -325
- package/dist/channel.js.map +0 -1
- package/dist/crypto-helpers.js +0 -44
- package/dist/crypto-helpers.js.map +0 -1
- package/dist/state.js +0 -28
- package/dist/state.js.map +0 -1
- package/dist/transport.js +0 -39
- package/dist/transport.js.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/crypto-helpers.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import sodium from "libsodium-wrappers-sumo";
|
|
2
|
-
// --- Encoding helpers ---
|
|
3
|
-
export function hexToBytes(hex) {
|
|
4
|
-
return sodium.from_hex(hex);
|
|
5
|
-
}
|
|
6
|
-
export function bytesToHex(bytes) {
|
|
7
|
-
return sodium.to_hex(bytes);
|
|
8
|
-
}
|
|
9
|
-
export function base64ToBytes(b64) {
|
|
10
|
-
return sodium.from_base64(b64, sodium.base64_variants.ORIGINAL);
|
|
11
|
-
}
|
|
12
|
-
export function bytesToBase64(bytes) {
|
|
13
|
-
return sodium.to_base64(bytes, sodium.base64_variants.ORIGINAL);
|
|
14
|
-
}
|
|
15
|
-
export function encryptedMessageToTransport(msg) {
|
|
16
|
-
const headerObj = {
|
|
17
|
-
dhPublicKey: bytesToBase64(msg.header.dhPublicKey),
|
|
18
|
-
previousChainLength: msg.header.previousChainLength,
|
|
19
|
-
messageNumber: msg.header.messageNumber,
|
|
20
|
-
headerSignature: bytesToBase64(msg.headerSignature),
|
|
21
|
-
nonce: bytesToBase64(msg.nonce),
|
|
22
|
-
};
|
|
23
|
-
const headerJson = JSON.stringify(headerObj);
|
|
24
|
-
const headerBlob = bytesToBase64(new TextEncoder().encode(headerJson));
|
|
25
|
-
return {
|
|
26
|
-
header_blob: headerBlob,
|
|
27
|
-
ciphertext: bytesToBase64(msg.ciphertext),
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
export function transportToEncryptedMessage(transport) {
|
|
31
|
-
const headerJson = new TextDecoder().decode(base64ToBytes(transport.header_blob));
|
|
32
|
-
const headerObj = JSON.parse(headerJson);
|
|
33
|
-
return {
|
|
34
|
-
header: {
|
|
35
|
-
dhPublicKey: base64ToBytes(headerObj.dhPublicKey),
|
|
36
|
-
previousChainLength: headerObj.previousChainLength,
|
|
37
|
-
messageNumber: headerObj.messageNumber,
|
|
38
|
-
},
|
|
39
|
-
headerSignature: base64ToBytes(headerObj.headerSignature),
|
|
40
|
-
nonce: base64ToBytes(headerObj.nonce),
|
|
41
|
-
ciphertext: base64ToBytes(transport.ciphertext),
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=crypto-helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crypto-helpers.js","sourceRoot":"","sources":["../src/crypto-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,yBAAyB,CAAC;AAG7C,2BAA2B;AAE3B,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClE,CAAC;AAUD,MAAM,UAAU,2BAA2B,CACzC,GAAqB;IAErB,MAAM,SAAS,GAAG;QAChB,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;QAClD,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,mBAAmB;QACnD,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;QACvC,eAAe,EAAE,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC;QACnD,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;KAChC,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,aAAa,CAC9B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CACrC,CAAC;IACF,OAAO;QACL,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,SAA2B;IAE3B,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACzC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CACrC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO;QACL,MAAM,EAAE;YACN,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC;YACjD,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;YAClD,aAAa,EAAE,SAAS,CAAC,aAAa;SACvC;QACD,eAAe,EAAE,aAAa,CAAC,SAAS,CAAC,eAAe,CAAC;QACzD,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;QACrC,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC;KAChD,CAAC;AACJ,CAAC"}
|
package/dist/state.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
const STATE_FILE = "secure-channel.json";
|
|
4
|
-
export async function saveState(dataDir, state) {
|
|
5
|
-
await mkdir(dataDir, { recursive: true });
|
|
6
|
-
const filePath = join(dataDir, STATE_FILE);
|
|
7
|
-
await writeFile(filePath, JSON.stringify(state, null, 2), "utf-8");
|
|
8
|
-
}
|
|
9
|
-
export async function loadState(dataDir) {
|
|
10
|
-
const filePath = join(dataDir, STATE_FILE);
|
|
11
|
-
try {
|
|
12
|
-
const raw = await readFile(filePath, "utf-8");
|
|
13
|
-
return JSON.parse(raw);
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export async function clearState(dataDir) {
|
|
20
|
-
const filePath = join(dataDir, STATE_FILE);
|
|
21
|
-
try {
|
|
22
|
-
await rm(filePath);
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
// File doesn't exist — nothing to clear
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=state.js.map
|
package/dist/state.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,KAAqB;IAErB,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3C,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAe;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;IAC1C,CAAC;AACH,CAAC"}
|
package/dist/transport.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export async function enrollDevice(apiUrl, inviteToken, identityPkHex, ephemeralPkHex, proofHex, platform) {
|
|
2
|
-
const res = await fetch(`${apiUrl}/api/v1/enroll`, {
|
|
3
|
-
method: "POST",
|
|
4
|
-
headers: { "Content-Type": "application/json" },
|
|
5
|
-
body: JSON.stringify({
|
|
6
|
-
invite_token: inviteToken,
|
|
7
|
-
identity_public_key: identityPkHex,
|
|
8
|
-
ephemeral_public_key: ephemeralPkHex,
|
|
9
|
-
proof_of_possession: proofHex,
|
|
10
|
-
platform: platform ?? "node",
|
|
11
|
-
}),
|
|
12
|
-
});
|
|
13
|
-
if (!res.ok) {
|
|
14
|
-
const detail = await res.text();
|
|
15
|
-
throw new Error(`Enrollment failed (${res.status}): ${detail}`);
|
|
16
|
-
}
|
|
17
|
-
return res.json();
|
|
18
|
-
}
|
|
19
|
-
export async function pollDeviceStatus(apiUrl, deviceId) {
|
|
20
|
-
const res = await fetch(`${apiUrl}/api/v1/devices/${deviceId}/status`);
|
|
21
|
-
if (!res.ok) {
|
|
22
|
-
const detail = await res.text();
|
|
23
|
-
throw new Error(`Status poll failed (${res.status}): ${detail}`);
|
|
24
|
-
}
|
|
25
|
-
return res.json();
|
|
26
|
-
}
|
|
27
|
-
export async function activateDevice(apiUrl, deviceId) {
|
|
28
|
-
const res = await fetch(`${apiUrl}/api/v1/devices/${deviceId}/activate`, {
|
|
29
|
-
method: "POST",
|
|
30
|
-
headers: { "Content-Type": "application/json" },
|
|
31
|
-
body: JSON.stringify({}),
|
|
32
|
-
});
|
|
33
|
-
if (!res.ok) {
|
|
34
|
-
const detail = await res.text();
|
|
35
|
-
throw new Error(`Activation failed (${res.status}): ${detail}`);
|
|
36
|
-
}
|
|
37
|
-
return res.json();
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=transport.js.map
|
package/dist/transport.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,WAAmB,EACnB,aAAqB,EACrB,cAAsB,EACtB,QAAgB,EAChB,QAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,gBAAgB,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,YAAY,EAAE,WAAW;YACzB,mBAAmB,EAAE,aAAa;YAClC,oBAAoB,EAAE,cAAc;YACpC,mBAAmB,EAAE,QAAQ;YAC7B,QAAQ,EAAE,QAAQ,IAAI,MAAM;SAC7B,CAAC;KACH,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,mBAAmB,QAAQ,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,QAAgB;IAEhB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,mBAAmB,QAAQ,WAAW,EAAE;QACvE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|