agentchannel 0.7.0 → 0.7.1

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/crypto.d.ts CHANGED
@@ -18,7 +18,7 @@ export declare function deriveKey(channelKey: string): Buffer;
18
18
  export declare function deriveSubKey(channelKey: string, subName: string): Buffer;
19
19
  /**
20
20
  * Derive channel topic ID (32 hex chars, 128 bits).
21
- * Derived from PRK — not computable without the channel key.
21
+ * Not computable without the channel key.
22
22
  */
23
23
  export declare function hashRoom(channelKey: string): string;
24
24
  /**
package/dist/crypto.js CHANGED
@@ -17,51 +17,38 @@ export function validateSubchannelName(name) {
17
17
  return SUBCHANNEL_RE.test(name);
18
18
  }
19
19
  /**
20
- * Extract PRK from channel key using HKDF-Extract.
21
- * This is the root of all key derivation for a channel.
20
+ * Single HKDF call: Extract + Expand in one step.
21
+ * hkdfSync(digest, ikm, salt, info, keylen)
22
22
  */
23
- function extractPRK(channelKey) {
24
- // For now, all keys are treated as passphrases (string input).
25
- // Future: detect 32-byte base64url keys and skip Argon2id.
26
- // HKDF-Extract: PRK = HMAC-SHA256(salt, IKM)
27
- return Buffer.from(hkdfSync("sha256", channelKey, EXTRACT_SALT, "", KEY_LENGTH));
28
- }
29
- /**
30
- * Derive a key using HKDF-Expand from PRK.
31
- */
32
- function expand(prk, info, length = KEY_LENGTH) {
33
- return Buffer.from(hkdfSync("sha256", prk, "", info, length));
23
+ function hkdf(ikm, info, length = KEY_LENGTH) {
24
+ return Buffer.from(hkdfSync("sha256", ikm, EXTRACT_SALT, info, length));
34
25
  }
35
26
  // ── Channel key derivation ─────────────────────────────
36
27
  /**
37
28
  * Derive channel encryption key (epoch 0).
38
29
  */
39
30
  export function deriveKey(channelKey) {
40
- const prk = extractPRK(channelKey);
41
- return expand(prk, "acp1:enc:channel:epoch:0");
31
+ return hkdf(channelKey, "acp1:enc:channel:epoch:0");
42
32
  }
43
33
  /**
44
34
  * Derive subchannel encryption key (epoch 0).
45
35
  */
46
36
  export function deriveSubKey(channelKey, subName) {
47
- const prk = extractPRK(channelKey);
48
- return expand(prk, `acp1:enc:sub:${subName}:epoch:0`);
37
+ return hkdf(channelKey, `acp1:enc:sub:${subName}:epoch:0`);
49
38
  }
50
- // ── Topic ID derivation (128-bit, from PRK) ────────────
39
+ // ── Topic ID derivation (128-bit, from HKDF) ──────────
51
40
  /**
52
41
  * Derive channel topic ID (32 hex chars, 128 bits).
53
- * Derived from PRK — not computable without the channel key.
42
+ * Not computable without the channel key.
54
43
  */
55
44
  export function hashRoom(channelKey) {
56
- const prk = extractPRK(channelKey);
57
- return expand(prk, "acp1:topic:channel", TOPIC_LENGTH).toString("hex");
45
+ return hkdf(channelKey, "acp1:topic:channel", TOPIC_LENGTH).toString("hex");
58
46
  }
59
47
  /**
60
48
  * Derive subchannel topic ID (32 hex chars, 128 bits).
61
49
  */
62
50
  export function hashSub(channelKey, subName) {
63
- const prk = extractPRK(channelKey);
64
- return expand(prk, `acp1:topic:sub:${subName}`, TOPIC_LENGTH).toString("hex");
51
+ return hkdf(channelKey, `acp1:topic:sub:${subName}`, TOPIC_LENGTH).toString("hex");
65
52
  }
66
53
  // ── AES-256-GCM encryption ────────────────────────────
67
54
  export function encrypt(plaintext, key) {
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentchannel",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Encrypted cross-network messaging for AI coding agents via MCP",
5
5
  "type": "module",
6
6
  "main": "dist/server.js",