@agentunion/fastaun 0.4.4 → 0.4.5

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 (41) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/_packed_docs/CHANGELOG.md +15 -0
  3. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +1 -1
  4. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
  5. package/dist/aid-store.d.ts +1 -0
  6. package/dist/aid-store.js +26 -3
  7. package/dist/aid-store.js.map +1 -1
  8. package/dist/auth.d.ts +17 -32
  9. package/dist/auth.js +42 -295
  10. package/dist/auth.js.map +1 -1
  11. package/dist/client.d.ts +4 -3
  12. package/dist/client.js +77 -92
  13. package/dist/client.js.map +1 -1
  14. package/dist/index.d.ts +1 -0
  15. package/dist/index.js +1 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/keystore/aid-db.d.ts +0 -4
  18. package/dist/keystore/aid-db.js +4 -95
  19. package/dist/keystore/aid-db.js.map +1 -1
  20. package/dist/keystore/file.d.ts +8 -3
  21. package/dist/keystore/file.js +103 -24
  22. package/dist/keystore/file.js.map +1 -1
  23. package/dist/keystore/index.d.ts +39 -36
  24. package/dist/keystore/index.js +3 -2
  25. package/dist/keystore/index.js.map +1 -1
  26. package/dist/register-flow.d.ts +49 -0
  27. package/dist/register-flow.js +366 -0
  28. package/dist/register-flow.js.map +1 -0
  29. package/dist/secret-store/file-store.js +6 -1
  30. package/dist/secret-store/file-store.js.map +1 -1
  31. package/dist/v2/session/keystore.d.ts +5 -0
  32. package/dist/v2/session/keystore.js +21 -3
  33. package/dist/v2/session/keystore.js.map +1 -1
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/package.json +1 -1
  37. package/_packed_docs/0.4.0_/345/267/256/345/274/202/346/240/270/345/256/236/345/206/263/347/255/226/350/256/260/345/275/225.md +0 -302
  38. package/_packed_docs/AUN_SDK_0.4.0_/350/256/276/350/256/241/345/257/271/346/257/224/345/210/206/346/236/220.md +0 -194
  39. package/_packed_docs/AUN_SDK_/351/207/215/346/236/204/345/256/236/346/226/275/350/256/241/345/210/222.md +0 -596
  40. package/_packed_docs/AUN_SDK_/351/207/215/346/236/204/350/256/276/350/256/241/346/226/271/346/241/210_v3.md +0 -1698
  41. package/_packed_docs/python-sdk-v2-only-changelog.md +0 -189
@@ -1,40 +1,18 @@
1
1
  /**
2
- * KeyStore 接口定义
2
+ * KeyStore / TokenStore 接口定义
3
3
  *
4
- * Python SDK KeyStore Protocol 完全对齐。
4
+ * TokenStore 不含私钥操作,AuthFlow / AUNClient 持有此类型。
5
+ * KeyStore — 仅包含私钥/完整身份操作,AIDStore / RegisterFlow 持有。
5
6
  */
6
7
  import type { IdentityRecord, KeyPairRecord, MetadataRecord } from '../types.js';
7
- export interface AgentMdCacheRecord {
8
- aid: string;
9
- content: string;
10
- local_etag: string;
11
- remote_etag: string;
12
- last_modified: string;
13
- fetched_at: number;
14
- observed_at: number;
15
- checked_at: number;
16
- remote_status: string;
17
- verify_status: string;
18
- verify_error: string;
19
- last_error: string;
20
- updated_at: number;
21
- }
22
- export type AgentMdCacheUpsert = Partial<Omit<AgentMdCacheRecord, 'aid' | 'updated_at'>>;
23
- export interface KeyStore {
24
- /** 加载密钥对 */
25
- loadKeyPair(aid: string): KeyPairRecord | null;
26
- /** 保存密钥对 */
27
- saveKeyPair(aid: string, keyPair: KeyPairRecord): void;
8
+ /** 不含私钥操作的存储接口,AuthFlow / AUNClient 持有此类型。 */
9
+ export interface TokenStore {
28
10
  /** 加载证书 */
29
11
  loadCert(aid: string, certFingerprint?: string): string | null;
30
12
  /** 保存证书 */
31
13
  saveCert(aid: string, certPem: string, certFingerprint?: string, opts?: {
32
14
  makeActive?: boolean;
33
15
  }): void;
34
- /** 加载完整身份信息 */
35
- loadIdentity(aid: string): IdentityRecord | null;
36
- /** 保存完整身份信息 */
37
- saveIdentity(aid: string, identity: IdentityRecord): void;
38
16
  /** 加载实例级状态 */
39
17
  loadInstanceState?(aid: string, deviceId: string, slotId?: string): MetadataRecord | null;
40
18
  /** 保存实例级状态 */
@@ -49,20 +27,14 @@ export interface KeyStore {
49
27
  loadAllSeqs?(aid: string, deviceId: string, slotId: string): Record<string, number>;
50
28
  /** 删除单个 namespace 的 contiguous_seq 行 */
51
29
  deleteSeq?(aid: string, deviceId: string, slotId: string, namespace: string): void;
52
- /** 读取最近 ack seq,供 SeqTracker 作 baseline 使用 */
30
+ /** 读取最近 ack seq */
53
31
  getLastAckSeq?(aid: string, deviceId: string, slotId: string, namespace: string): number;
54
32
  /** 写入最近 ack seq */
55
33
  setLastAckSeq?(aid: string, deviceId: string, slotId: string, namespace: string, seq: number): void;
56
- /** 列出所有已存储的 AID(对齐 Python list_identities) */
57
- listIdentities?(): string[];
58
- /** 加载指定 AID 的元数据(对齐 Python load_metadata) */
34
+ /** 加载指定 AID 的元数据 */
59
35
  loadMetadata?(aid: string): Record<string, unknown> | null;
60
- /** 保存指定 AID 的元数据(对齐 Python save_metadata,增量覆盖字段) */
36
+ /** 保存指定 AID 的元数据 */
61
37
  saveMetadata?(aid: string, metadata: Record<string, unknown>): void;
62
- /** 加载本地持久化的某个远端/自身 agent.md 缓存记录 */
63
- loadAgentMdCache?(ownerAid: string, targetAid: string): AgentMdCacheRecord | null;
64
- /** 更新本地持久化的某个远端/自身 agent.md 缓存记录 */
65
- upsertAgentMdCache?(ownerAid: string, targetAid: string, fields: AgentMdCacheUpsert): AgentMdCacheRecord;
66
38
  /** 保存群组状态(state_hash 链) */
67
39
  saveGroupState?(groupId: string, stateVersion: number, stateHash: string, keyEpoch: number, membershipJson: string, policyJson: string): void;
68
40
  /** 加载群组状态 */
@@ -88,3 +60,34 @@ export interface KeyStore {
88
60
  /** 保存 issuer 根证书并合并到 bundle,返回 [证书路径, bundle 路径] */
89
61
  saveIssuerRootCert?(issuer: string, certPem: string, fingerprintSha256?: string): [string, string];
90
62
  }
63
+ /** 私钥/完整身份存储接口,仅 AIDStore / RegisterFlow 持有。 */
64
+ export interface KeyStore {
65
+ /** 加载密钥对 */
66
+ loadKeyPair(aid: string): KeyPairRecord | null;
67
+ /** 保存密钥对 */
68
+ saveKeyPair(aid: string, keyPair: KeyPairRecord): void;
69
+ /** 创建注册 pending 身份记录 */
70
+ pendingIdentityDir?(aid: string): string;
71
+ /** 列出指定 AID 的 pending 身份记录 */
72
+ listPendingIdentityDirs?(aid: string): string[];
73
+ /** 保存 pending 密钥对 */
74
+ savePendingKeyPair?(handle: string, aid: string, keyPair: KeyPairRecord): void;
75
+ /** 加载 pending 密钥对 */
76
+ loadPendingKeyPair?(handle: string, aid: string): KeyPairRecord | null;
77
+ /** 保存 pending 证书 */
78
+ savePendingCert?(handle: string, certPem: string): void;
79
+ /** 将 pending 身份转正 */
80
+ promotePendingIdentity?(handle: string, aid: string): string;
81
+ /** 删除指定 pending 身份 */
82
+ discardPendingIdentity?(handle: string): void;
83
+ /** 清理超龄 pending 身份 */
84
+ cleanupPendingDirs?(maxAgeMs?: number): number;
85
+ /** 加载完整身份信息(含私钥) */
86
+ loadIdentity(aid: string): IdentityRecord | null;
87
+ /** 保存完整身份信息(允许写入私钥字段) */
88
+ saveIdentity(aid: string, identity: IdentityRecord): void;
89
+ /** 列出所有已存储的 AID */
90
+ listIdentities?(): string[];
91
+ }
92
+ /** 物理实现通常同时实现 TokenStore 与 KeyStore;注册流程显式要求组合类型。 */
93
+ export type FullKeyStore = TokenStore & KeyStore;
@@ -1,7 +1,8 @@
1
1
  /**
2
- * KeyStore 接口定义
2
+ * KeyStore / TokenStore 接口定义
3
3
  *
4
- * Python SDK KeyStore Protocol 完全对齐。
4
+ * TokenStore 不含私钥操作,AuthFlow / AUNClient 持有此类型。
5
+ * KeyStore — 仅包含私钥/完整身份操作,AIDStore / RegisterFlow 持有。
5
6
  */
6
7
  export {};
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keystore/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/keystore/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * RegisterFlow — AID 注册流程(独立类,不继承 AuthFlow)
3
+ * 与 Python SDK register_aid 对齐。
4
+ */
5
+ import type { FullKeyStore } from './keystore/index.js';
6
+ import { type KeyPairRecord } from './types.js';
7
+ import type { CryptoProvider } from './crypto.js';
8
+ import type { ModuleLogger } from './logger.js';
9
+ import type { DnsResilientNet } from './net.js';
10
+ type PendingKeyStore = FullKeyStore & {
11
+ pendingIdentityDir(aid: string): string;
12
+ listPendingIdentityDirs(aid: string): string[];
13
+ savePendingKeyPair(handle: string, aid: string, keyPair: KeyPairRecord): void;
14
+ loadPendingKeyPair(handle: string, aid: string): KeyPairRecord | null;
15
+ savePendingCert(handle: string, certPem: string): void;
16
+ promotePendingIdentity(handle: string, aid: string): string;
17
+ discardPendingIdentity?(handle: string): void;
18
+ };
19
+ export interface RegisterResult {
20
+ aid: string;
21
+ cert: string;
22
+ private_key_pem: string;
23
+ public_key_der_b64: string;
24
+ curve: string;
25
+ }
26
+ export declare class RegisterFlow {
27
+ private _keystore;
28
+ private _crypto;
29
+ private _verifySsl;
30
+ private _logger;
31
+ private _net;
32
+ constructor(opts: {
33
+ keystore: PendingKeyStore;
34
+ crypto: CryptoProvider;
35
+ verifySsl?: boolean;
36
+ logger?: ModuleLogger;
37
+ net?: DnsResilientNet | null;
38
+ });
39
+ registerAid(gatewayUrl: string, aid: string): Promise<RegisterResult>;
40
+ private _tryRecoverPendingRegistration;
41
+ private _pendingStore;
42
+ private _downloadRegisteredCert;
43
+ private _createAid;
44
+ private _shortRpc;
45
+ private _wsRecv;
46
+ private _assertCertMatchesLocalKeypair;
47
+ private _persistIdentity;
48
+ }
49
+ export {};
@@ -0,0 +1,366 @@
1
+ /**
2
+ * RegisterFlow — AID 注册流程(独立类,不继承 AuthFlow)
3
+ * 与 Python SDK register_aid 对齐。
4
+ */
5
+ import * as crypto from 'node:crypto';
6
+ import * as http from 'node:http';
7
+ import * as https from 'node:https';
8
+ import WebSocket from 'ws';
9
+ import { AuthFlow } from './auth.js';
10
+ import { AuthError, IdentityConflictError, ValidationError, mapRemoteError } from './errors.js';
11
+ import { isJsonObject } from './types.js';
12
+ const _noopLogger = { error: () => { }, warn: () => { }, info: () => { }, debug: () => { } };
13
+ function _loadX509(pem) {
14
+ return new crypto.X509Certificate(pem);
15
+ }
16
+ function _extractPublicKey(cert) {
17
+ const pk = cert.publicKey;
18
+ if (pk && typeof pk === 'object' && 'type' in pk)
19
+ return pk;
20
+ return crypto.createPublicKey(cert.toString());
21
+ }
22
+ function _gatewayHttpUrl(gatewayUrl, urlPath) {
23
+ const parsed = new URL(gatewayUrl);
24
+ const scheme = parsed.protocol === 'wss:' ? 'https:' : 'http:';
25
+ return `${scheme}//${parsed.host}${urlPath}`;
26
+ }
27
+ function _httpGet(url, verifySsl) {
28
+ return new Promise((resolve, reject) => {
29
+ const parsed = new URL(url);
30
+ const mod = parsed.protocol === 'https:' ? https : http;
31
+ const opts = { timeout: 5000 };
32
+ if (!verifySsl)
33
+ opts.rejectUnauthorized = false;
34
+ const req = mod.get(url, opts, (res) => {
35
+ if (res.statusCode && (res.statusCode < 200 || res.statusCode >= 300)) {
36
+ reject(new Error(`HTTP ${res.statusCode} from ${url}`));
37
+ res.resume();
38
+ return;
39
+ }
40
+ const chunks = [];
41
+ res.on('data', (c) => chunks.push(c));
42
+ res.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
43
+ res.on('error', reject);
44
+ });
45
+ req.on('error', reject);
46
+ req.on('timeout', () => { req.destroy(); reject(new Error(`timeout GET ${url}`)); });
47
+ });
48
+ }
49
+ function _defaultConnectionFactory(url) {
50
+ return new Promise((resolve, reject) => {
51
+ const ws = new WebSocket(url, { handshakeTimeout: 5000, rejectUnauthorized: false });
52
+ ws.on('open', () => resolve(ws));
53
+ ws.on('error', (err) => reject(new AuthError(`websocket connect failed: ${err.message}`)));
54
+ });
55
+ }
56
+ export class RegisterFlow {
57
+ _keystore;
58
+ _crypto;
59
+ _verifySsl;
60
+ _logger;
61
+ _net;
62
+ constructor(opts) {
63
+ this._keystore = opts.keystore;
64
+ this._crypto = opts.crypto;
65
+ this._verifySsl = opts.verifySsl ?? false;
66
+ this._logger = opts.logger ?? _noopLogger;
67
+ this._net = opts.net ?? null;
68
+ }
69
+ async registerAid(gatewayUrl, aid) {
70
+ const tStart = Date.now();
71
+ AuthFlow._validateAidName(aid);
72
+ this._logger.debug(`registerAid enter: aid=${aid}, gateway=${gatewayUrl}`);
73
+ try {
74
+ const pendingStore = this._pendingStore();
75
+ // Step 1: 本地完整身份的幂等处理
76
+ const existing = this._keystore.loadIdentity(aid);
77
+ if (existing !== null && existing.public_key_der_b64) {
78
+ this._logger.debug(`registerAid: local keypair exists, checking server for idempotency: aid=${aid}`);
79
+ const localPubB64 = String(existing.public_key_der_b64);
80
+ const serverCertPem = await this._downloadRegisteredCert(gatewayUrl, aid);
81
+ if (!serverCertPem) {
82
+ // 服务端无记录 → 用现有 keypair 发起注册
83
+ this._logger.debug(`registerAid: server has no record, registering with existing keypair: aid=${aid}`);
84
+ let created;
85
+ try {
86
+ created = await this._createAid(gatewayUrl, existing);
87
+ }
88
+ catch (e) {
89
+ this._logger.warn(`registerAid RPC failed (existing keypair): aid=${aid}, error=${e instanceof Error ? e.message : String(e)}`);
90
+ throw e;
91
+ }
92
+ const certPem = String(created.cert ?? '');
93
+ if (!certPem)
94
+ throw new AuthError(`registerAid: server response missing cert for ${aid}`);
95
+ existing.cert = certPem;
96
+ this._assertCertMatchesLocalKeypair(existing);
97
+ this._persistIdentity(existing);
98
+ this._logger.debug(`registerAid exit (recovered): elapsed=${Date.now() - tStart}ms aid=${aid}`);
99
+ return {
100
+ aid,
101
+ cert: certPem,
102
+ private_key_pem: String(existing.private_key_pem ?? ''),
103
+ public_key_der_b64: localPubB64,
104
+ curve: String(existing.curve ?? 'P-256'),
105
+ };
106
+ }
107
+ // 比对公钥
108
+ const cert = _loadX509(serverCertPem);
109
+ const serverPubDer = _extractPublicKey(cert).export({ type: 'spki', format: 'der' });
110
+ const localPubDer = Buffer.from(localPubB64, 'base64');
111
+ if (!serverPubDer.equals(localPubDer)) {
112
+ throw new IdentityConflictError(`AID '${aid}' is registered by another party on server (public key mismatch). Choose a different name.`);
113
+ }
114
+ // 公钥匹配 → 幂等返回
115
+ this._logger.info(`registerAid: idempotent return for already-registered AID: aid=${aid}`);
116
+ if (!existing.cert) {
117
+ existing.cert = serverCertPem;
118
+ this._persistIdentity(existing);
119
+ }
120
+ return {
121
+ aid,
122
+ cert: serverCertPem,
123
+ private_key_pem: String(existing.private_key_pem ?? ''),
124
+ public_key_der_b64: localPubB64,
125
+ curve: String(existing.curve ?? 'P-256'),
126
+ };
127
+ }
128
+ // Step 2: 检查 _pending/ 残留临时目录(崩溃恢复)
129
+ const recovered = await this._tryRecoverPendingRegistration(gatewayUrl, aid);
130
+ if (recovered !== null) {
131
+ this._logger.info(`registerAid recovered from pending: aid=${aid}`);
132
+ return recovered;
133
+ }
134
+ // Step 3: 服务端查重
135
+ const existingCert = await this._downloadRegisteredCert(gatewayUrl, aid);
136
+ if (existingCert) {
137
+ this._logger.warn(`registerAid aborted: AID already registered on server: aid=${aid}`);
138
+ throw new IdentityConflictError(`AID '${aid}' is already registered on server. Choose a different name, or if you own the keypair use a recovery flow.`);
139
+ }
140
+ // Step 4: 创建临时目录 + 生成 keypair + 写 priv
141
+ const identity = this._crypto.generateIdentity();
142
+ identity.aid = aid;
143
+ const pendingDir = await pendingStore.pendingIdentityDir(aid);
144
+ await pendingStore.savePendingKeyPair(pendingDir, aid, identity);
145
+ // Step 5: 服务端注册拿 cert
146
+ let created;
147
+ try {
148
+ created = await this._createAid(gatewayUrl, identity);
149
+ }
150
+ catch (e) {
151
+ this._logger.warn(`registerAid RPC failed (pending kept for recovery): aid=${aid}, pending=${pendingDir}, error=${e instanceof Error ? e.message : String(e)}`);
152
+ throw e;
153
+ }
154
+ const certPem = String(created.cert ?? '');
155
+ if (!certPem)
156
+ throw new AuthError(`registerAid: server response missing cert for ${aid}`);
157
+ identity.cert = certPem;
158
+ // Step 6: 校验 cert 公钥 == 本地公钥
159
+ this._assertCertMatchesLocalKeypair(identity);
160
+ // Step 7: 写 cert.pem 到临时目录
161
+ await pendingStore.savePendingCert(pendingDir, certPem);
162
+ // Step 8: 原子 rename
163
+ try {
164
+ await pendingStore.promotePendingIdentity(pendingDir, aid);
165
+ }
166
+ catch (e) {
167
+ this._logger.warn(`registerAid promote failed: aid=${aid}, error=${e instanceof Error ? e.message : String(e)}`);
168
+ throw new IdentityConflictError(`AID '${aid}' was created by another process during registration; pending dir kept for cleanup.`);
169
+ }
170
+ // Step 9: 持久化(仅 cert,私钥由调用方写入)
171
+ this._persistIdentity(identity);
172
+ this._logger.debug(`registerAid exit: elapsed=${Date.now() - tStart}ms aid=${aid}`);
173
+ return {
174
+ aid: String(identity.aid),
175
+ cert: certPem,
176
+ private_key_pem: String(identity.private_key_pem ?? ''),
177
+ public_key_der_b64: String(identity.public_key_der_b64 ?? ''),
178
+ curve: String(identity.curve ?? 'P-256'),
179
+ };
180
+ }
181
+ catch (err) {
182
+ this._logger.debug(`registerAid exit (error): elapsed=${Date.now() - tStart}ms err=${err instanceof Error ? err.message : String(err)}`);
183
+ throw err;
184
+ }
185
+ }
186
+ async _tryRecoverPendingRegistration(gatewayUrl, aid) {
187
+ const pendingStore = this._pendingStore();
188
+ const candidates = await pendingStore.listPendingIdentityDirs(aid);
189
+ if (candidates.length === 0)
190
+ return null;
191
+ for (const pendingDir of candidates) {
192
+ let privData;
193
+ try {
194
+ privData = await pendingStore.loadPendingKeyPair(pendingDir, aid);
195
+ }
196
+ catch (exc) {
197
+ this._logger.warn(`pending identity keypair load failed; keeping pending for retry: aid=${aid}, pending=${pendingDir}, error=${exc instanceof Error ? exc.message : String(exc)}`);
198
+ throw exc;
199
+ }
200
+ const localPriv = String(privData?.private_key_pem ?? '');
201
+ const localPubB64 = String(privData?.public_key_der_b64 ?? '');
202
+ if (!localPriv || !localPubB64) {
203
+ await pendingStore.discardPendingIdentity?.(pendingDir);
204
+ continue;
205
+ }
206
+ const serverCert = await this._downloadRegisteredCert(gatewayUrl, aid);
207
+ if (!serverCert) {
208
+ this._logger.info(`pending dir found but server has no registration; cleaning up: ${pendingDir}`);
209
+ await pendingStore.discardPendingIdentity?.(pendingDir);
210
+ return null;
211
+ }
212
+ const cert = _loadX509(serverCert);
213
+ const certPubDer = _extractPublicKey(cert).export({ type: 'spki', format: 'der' });
214
+ const localPubDer = Buffer.from(localPubB64, 'base64');
215
+ if (!certPubDer.equals(localPubDer)) {
216
+ this._logger.warn(`pending dir public key does not match server cert; AID '${aid}' was taken`);
217
+ await pendingStore.discardPendingIdentity?.(pendingDir);
218
+ throw new IdentityConflictError(`AID '${aid}' has been registered by another party while local pending registration was incomplete; local pending key discarded.`);
219
+ }
220
+ this._logger.info(`pending recovery: cert public key matches; finalizing registration: aid=${aid}`);
221
+ pendingStore.savePendingCert(pendingDir, serverCert);
222
+ const identity = {
223
+ aid,
224
+ private_key_pem: localPriv,
225
+ public_key_der_b64: localPubB64,
226
+ curve: String(privData?.curve ?? 'P-256'),
227
+ cert: serverCert,
228
+ };
229
+ await pendingStore.savePendingKeyPair(pendingDir, aid, identity);
230
+ try {
231
+ await pendingStore.promotePendingIdentity(pendingDir, aid);
232
+ }
233
+ catch (e) {
234
+ throw new IdentityConflictError(`AID '${aid}' was created by another process during recovery; pending dir kept for cleanup.`);
235
+ }
236
+ this._persistIdentity(identity);
237
+ return { aid, cert: serverCert, private_key_pem: localPriv, public_key_der_b64: localPubB64, curve: String(privData?.curve ?? 'P-256') };
238
+ }
239
+ return null;
240
+ }
241
+ _pendingStore() {
242
+ const store = this._keystore;
243
+ for (const name of [
244
+ 'pendingIdentityDir',
245
+ 'listPendingIdentityDirs',
246
+ 'savePendingKeyPair',
247
+ 'loadPendingKeyPair',
248
+ 'savePendingCert',
249
+ 'promotePendingIdentity',
250
+ ]) {
251
+ if (typeof store[name] !== 'function') {
252
+ throw new AuthError(`keystore does not support pending registration: ${name}`);
253
+ }
254
+ }
255
+ return this._keystore;
256
+ }
257
+ async _downloadRegisteredCert(gatewayUrl, aid) {
258
+ const certUrl = _gatewayHttpUrl(gatewayUrl, `/pki/cert/${aid}`);
259
+ try {
260
+ let certPem;
261
+ if (this._net) {
262
+ certPem = await this._net.httpGetText(certUrl, 5000);
263
+ }
264
+ else {
265
+ certPem = await _httpGet(certUrl, this._verifySsl);
266
+ }
267
+ if (!certPem || !certPem.includes('BEGIN CERTIFICATE'))
268
+ return null;
269
+ return certPem;
270
+ }
271
+ catch (e) {
272
+ const msg = e instanceof Error ? e.message : String(e);
273
+ if (msg.includes('404') || msg.toLowerCase().includes('not found'))
274
+ return null;
275
+ throw new AuthError(`failed to fetch ${certUrl}: ${msg}`);
276
+ }
277
+ }
278
+ async _createAid(gatewayUrl, identity) {
279
+ const response = await this._shortRpc(gatewayUrl, 'auth.create_aid', {
280
+ aid: identity.aid,
281
+ public_key: identity.public_key_der_b64,
282
+ curve: identity.curve || 'P-256',
283
+ });
284
+ return { cert: response.cert };
285
+ }
286
+ async _shortRpc(gatewayUrl, method, params) {
287
+ this._logger.debug(`_shortRpc enter: method=${method}, gateway=${gatewayUrl}`);
288
+ const ws = await _defaultConnectionFactory(gatewayUrl);
289
+ try {
290
+ await this._wsRecv(ws);
291
+ const payload = JSON.stringify({ jsonrpc: '2.0', id: `pre-${method}`, method, params });
292
+ this._logger.debug(`short RPC request full: ${payload}`);
293
+ ws.send(payload);
294
+ const raw = await this._wsRecv(ws);
295
+ const message = typeof raw === 'string' ? JSON.parse(raw) : raw;
296
+ this._logger.debug(`short RPC response full: method=${method} ${JSON.stringify(message)}`);
297
+ if (message.error)
298
+ throw mapRemoteError(message.error);
299
+ const result = isJsonObject(message.result) ? message.result : null;
300
+ if (result === null)
301
+ throw new ValidationError(`invalid pre-auth response for ${method}`);
302
+ if (result.success === false)
303
+ throw new AuthError(String(result.error || `${method} failed`));
304
+ return result;
305
+ }
306
+ finally {
307
+ try {
308
+ ws.close();
309
+ }
310
+ catch { /* ignore */ }
311
+ }
312
+ }
313
+ _wsRecv(ws) {
314
+ return new Promise((resolve, reject) => {
315
+ const timer = setTimeout(() => reject(new AuthError('websocket recv timeout')), 10000);
316
+ const handler = (data) => {
317
+ clearTimeout(timer);
318
+ ws.off('message', handler);
319
+ ws.off('error', errHandler);
320
+ if (Buffer.isBuffer(data))
321
+ resolve(data.toString('utf-8'));
322
+ else if (data instanceof ArrayBuffer)
323
+ resolve(Buffer.from(data).toString('utf-8'));
324
+ else
325
+ resolve(String(data));
326
+ };
327
+ const errHandler = (err) => {
328
+ clearTimeout(timer);
329
+ ws.off('message', handler);
330
+ reject(new AuthError(`websocket error: ${err.message}`));
331
+ };
332
+ ws.on('message', handler);
333
+ ws.on('error', errHandler);
334
+ });
335
+ }
336
+ _assertCertMatchesLocalKeypair(identity) {
337
+ const aid = identity.aid ?? '?';
338
+ const certPem = identity.cert;
339
+ const localPubB64 = identity.public_key_der_b64;
340
+ if (!certPem || !localPubB64) {
341
+ throw new AuthError(`identity for aid ${aid} missing cert or public key`);
342
+ }
343
+ let certPubDer;
344
+ let localPubDer;
345
+ try {
346
+ const cert = _loadX509(certPem);
347
+ certPubDer = _extractPublicKey(cert).export({ type: 'spki', format: 'der' });
348
+ localPubDer = Buffer.from(localPubB64, 'base64');
349
+ }
350
+ catch (e) {
351
+ throw new AuthError(`failed to parse local cert/keypair for aid ${aid}: ${e instanceof Error ? e.message : String(e)}`);
352
+ }
353
+ if (!certPubDer.equals(localPubDer)) {
354
+ throw new AuthError(`local certificate public key does not match local keypair for aid ${aid}`);
355
+ }
356
+ }
357
+ _persistIdentity(identity) {
358
+ const aid = String(identity.aid ?? '');
359
+ if (!aid)
360
+ return;
361
+ const certPem = String(identity.cert ?? '');
362
+ if (certPem)
363
+ this._keystore.saveCert(aid, certPem);
364
+ }
365
+ }
366
+ //# sourceMappingURL=register-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-flow.js","sourceRoot":"","sources":["../src/register-flow.ts"],"names":[],"mappings":"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"}
@@ -90,8 +90,12 @@ function verifyPrivateKeys(root, oldMasterKey) {
90
90
  throw new SeedMigrationError(`seed migration refused: invalid key.json for ${aid}: ${exc instanceof Error ? exc.message : String(exc)}`);
91
91
  }
92
92
  const protection = data?.private_key_protection;
93
- if (!protection)
93
+ if (!protection) {
94
+ if (typeof data?.private_key_pem === 'string' && data.private_key_pem) {
95
+ migrations.push({ aid, path: keyPath, plaintext: Buffer.from(data.private_key_pem, 'utf-8') });
96
+ }
94
97
  continue;
98
+ }
95
99
  if (protection.scheme !== 'file_aes')
96
100
  continue;
97
101
  const name = 'identity/private_key';
@@ -136,6 +140,7 @@ function changeSeedBytes(root, oldSeedBytes, newSeedBytes, renameSeedPath, logge
136
140
  }
137
141
  const data = JSON.parse(readFileSync(item.path, 'utf-8'));
138
142
  data.private_key_protection = record;
143
+ delete data.private_key_pem;
139
144
  writeFileSync(item.path, JSON.stringify(data, null, 2), 'utf-8');
140
145
  result.migrated += 1;
141
146
  result.privateKeysMigrated += 1;
@@ -1 +1 @@
1
- {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../src/secret-store/file-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-store.js","sourceRoot":"","sources":["../../src/secret-store/file-store.ts"],"names":[],"mappings":"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"}