@agentunion/fastaun-browser 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.
- package/CHANGELOG.md +13 -0
- package/_packed_docs/CHANGELOG.md +13 -0
- package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +1 -1
- package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
- package/dist/aid-store.d.ts +1 -0
- package/dist/aid-store.d.ts.map +1 -1
- package/dist/aid-store.js +26 -9
- package/dist/aid-store.js.map +1 -1
- package/dist/auth.d.ts +8 -13
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +37 -130
- package/dist/auth.js.map +1 -1
- package/dist/bundle.js +644 -210
- package/dist/client.d.ts +5 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +64 -66
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/keystore/index.d.ts +45 -22
- package/dist/keystore/index.d.ts.map +1 -1
- package/dist/keystore/index.js +6 -1
- package/dist/keystore/index.js.map +1 -1
- package/dist/keystore/indexeddb.d.ts +11 -1
- package/dist/keystore/indexeddb.d.ts.map +1 -1
- package/dist/keystore/indexeddb.js +167 -18
- package/dist/keystore/indexeddb.js.map +1 -1
- package/dist/register-flow.d.ts +34 -0
- package/dist/register-flow.d.ts.map +1 -0
- package/dist/register-flow.js +355 -0
- package/dist/register-flow.js.map +1 -0
- package/dist/v2/session/keystore.d.ts +5 -0
- package/dist/v2/session/keystore.d.ts.map +1 -1
- package/dist/v2/session/keystore.js +29 -0
- package/dist/v2/session/keystore.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- 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
- 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
- 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
- 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
- package/_packed_docs/python-sdk-v2-only-changelog.md +0 -189
package/dist/client.d.ts
CHANGED
|
@@ -50,7 +50,7 @@ export declare class AUNClient {
|
|
|
50
50
|
private _sessionOptions;
|
|
51
51
|
private _dispatcher;
|
|
52
52
|
private _discovery;
|
|
53
|
-
private
|
|
53
|
+
private _tokenStore;
|
|
54
54
|
private _auth;
|
|
55
55
|
private _transport;
|
|
56
56
|
private _certCache;
|
|
@@ -130,7 +130,7 @@ export declare class AUNClient {
|
|
|
130
130
|
private _clientLog;
|
|
131
131
|
private _logAuth;
|
|
132
132
|
private _logTransport;
|
|
133
|
-
private
|
|
133
|
+
private _tokenStoreLog;
|
|
134
134
|
private _logDiscovery;
|
|
135
135
|
private _logEvents;
|
|
136
136
|
constructor(aid?: AID);
|
|
@@ -371,8 +371,7 @@ export declare class AUNClient {
|
|
|
371
371
|
/** 指数退避 + 固定上限抖动重连循环(默认无限重试,仅在不可重试错误或 close() 或 max_attempts 耗尽时终止) */
|
|
372
372
|
private _reconnectLoop;
|
|
373
373
|
/**
|
|
374
|
-
*
|
|
375
|
-
* 服务端签发群 AID 证书,返回后将证书和私钥存入 keystore。
|
|
374
|
+
* 创建命名群:群/P2P 私钥由 V2 数据库存储,不写入 AID 身份私钥存储。
|
|
376
375
|
*/
|
|
377
376
|
private createNamedGroup;
|
|
378
377
|
/**
|
|
@@ -403,6 +402,8 @@ export declare class AUNClient {
|
|
|
403
402
|
* connect 成功后自动调用,可幂等手动调用。
|
|
404
403
|
*/
|
|
405
404
|
private _initV2Session;
|
|
405
|
+
private _v2StoreDeviceId;
|
|
406
|
+
private _saveGroupIdentityToV2;
|
|
406
407
|
private _v2TrustedIKPubDer;
|
|
407
408
|
private _v2SPKTimestampText;
|
|
408
409
|
private _v2VerifySPKDevice;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqF,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAChI,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAqClD,OAAO,EAEL,eAAe,EAGf,KAAK,UAAU,EAGf,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAoL/B,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAqiBD;;;;;;;;;;;GAWG;AACH,qBAAa,SAAS;IACpB,eAAe;IACf,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;IAChC,aAAa;IACb,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAE3B,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,yBAAyB,CAAuC;IACxE,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,2BAA2B,CAAa;IAChD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,eAAe,CAAkD;IAEzE,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -664,7 +664,7 @@ export class AUNClient {
|
|
|
664
664
|
_sessionOptions = { ...DEFAULT_SESSION_OPTIONS };
|
|
665
665
|
_dispatcher;
|
|
666
666
|
_discovery;
|
|
667
|
-
|
|
667
|
+
_tokenStore;
|
|
668
668
|
_auth;
|
|
669
669
|
_transport;
|
|
670
670
|
// E2EE 编排状态(内存缓存)
|
|
@@ -751,7 +751,7 @@ export class AUNClient {
|
|
|
751
751
|
_clientLog;
|
|
752
752
|
_logAuth;
|
|
753
753
|
_logTransport;
|
|
754
|
-
|
|
754
|
+
_tokenStoreLog;
|
|
755
755
|
_logDiscovery;
|
|
756
756
|
_logEvents;
|
|
757
757
|
constructor(aid) {
|
|
@@ -778,18 +778,18 @@ export class AUNClient {
|
|
|
778
778
|
this._clientLog = this._logger.for('aun_core.client');
|
|
779
779
|
this._logAuth = this._logger.for('aun_core.auth');
|
|
780
780
|
this._logTransport = this._logger.for('aun_core.transport');
|
|
781
|
-
this.
|
|
781
|
+
this._tokenStoreLog = this._logger.for('aun_core.keystore');
|
|
782
782
|
this._logDiscovery = this._logger.for('aun_core.discovery');
|
|
783
783
|
this._logEvents = this._logger.for('aun_core.events');
|
|
784
784
|
this._clientLog.info(`AUNClient initialized: debug=${_debug} aunPath=${this.configModel.aunPath} aid=${initAid ?? '-'}`);
|
|
785
785
|
this._dispatcher = new EventDispatcher();
|
|
786
786
|
this._discovery = new GatewayDiscovery();
|
|
787
|
-
this.
|
|
787
|
+
this._tokenStore = new IndexedDBKeyStore({});
|
|
788
788
|
this._slotId = inputAid?.slotId || 'default';
|
|
789
789
|
this._connectDeliveryMode = normalizeDeliveryModeConfig({ mode: 'fanout' });
|
|
790
790
|
this._defaultConnectDeliveryMode = { ...this._connectDeliveryMode };
|
|
791
791
|
this._auth = new AuthFlow({
|
|
792
|
-
|
|
792
|
+
tokenStore: this._tokenStore,
|
|
793
793
|
crypto: new CryptoProvider(),
|
|
794
794
|
aid: initAid,
|
|
795
795
|
deviceId: this._deviceId,
|
|
@@ -817,6 +817,7 @@ export class AUNClient {
|
|
|
817
817
|
public_key_der_b64: inputAid.publicKey,
|
|
818
818
|
cert: inputAid.certPem,
|
|
819
819
|
};
|
|
820
|
+
this._auth.setIdentity(this._identity);
|
|
820
821
|
this._state = 'disconnected';
|
|
821
822
|
}
|
|
822
823
|
}
|
|
@@ -827,8 +828,8 @@ export class AUNClient {
|
|
|
827
828
|
if (typeof this._discovery.setLogger === 'function') {
|
|
828
829
|
this._discovery.setLogger(this._logger.for('aun_core.discovery'));
|
|
829
830
|
}
|
|
830
|
-
if (typeof this.
|
|
831
|
-
this.
|
|
831
|
+
if (typeof this._tokenStore.setLogger === 'function') {
|
|
832
|
+
this._tokenStore.setLogger(this._tokenStoreLog);
|
|
832
833
|
}
|
|
833
834
|
// 内部订阅:推送消息 re-publish 给用户(V2 加密消息走 _raw.peer.v2.message_received)
|
|
834
835
|
this._dispatcher.subscribe('_raw.message.received', (data) => {
|
|
@@ -1037,7 +1038,7 @@ export class AUNClient {
|
|
|
1037
1038
|
throw new ValidationError('verifyAgentMd requires non-empty aid');
|
|
1038
1039
|
let peer = target === this._currentAid?.aid ? this._currentAid : null;
|
|
1039
1040
|
if (!peer) {
|
|
1040
|
-
let certPem = String(await this.
|
|
1041
|
+
let certPem = String(await this._tokenStore.loadCert(target) ?? '').trim();
|
|
1041
1042
|
if (!certPem) {
|
|
1042
1043
|
certPem = String(await this._fetchPeerCert(target) ?? '').trim();
|
|
1043
1044
|
}
|
|
@@ -1189,11 +1190,11 @@ export class AUNClient {
|
|
|
1189
1190
|
const key = String(logicalKey ?? '').trim();
|
|
1190
1191
|
if (!key)
|
|
1191
1192
|
return null;
|
|
1192
|
-
const load = this.
|
|
1193
|
+
const load = this._tokenStore.loadAgentMdCache;
|
|
1193
1194
|
if (typeof load !== 'function') {
|
|
1194
1195
|
throw new Error('IndexedDB agent.md storage unavailable');
|
|
1195
1196
|
}
|
|
1196
|
-
const record = await load.call(this.
|
|
1197
|
+
const record = await load.call(this._tokenStore, this._agentMdRoot(), key);
|
|
1197
1198
|
if (record && Object.prototype.hasOwnProperty.call(record, 'content')) {
|
|
1198
1199
|
return String(record.content ?? '');
|
|
1199
1200
|
}
|
|
@@ -1203,12 +1204,12 @@ export class AUNClient {
|
|
|
1203
1204
|
const key = String(logicalKey ?? '').trim();
|
|
1204
1205
|
if (!key)
|
|
1205
1206
|
return;
|
|
1206
|
-
const save = this.
|
|
1207
|
+
const save = this._tokenStore.upsertAgentMdCache;
|
|
1207
1208
|
if (typeof save !== 'function') {
|
|
1208
1209
|
throw new Error('IndexedDB agent.md storage unavailable');
|
|
1209
1210
|
}
|
|
1210
1211
|
const text = String(content ?? '');
|
|
1211
|
-
await save.call(this.
|
|
1212
|
+
await save.call(this._tokenStore, this._agentMdRoot(), key, {
|
|
1212
1213
|
content: text,
|
|
1213
1214
|
local_etag: await this._agentMdContentEtag(text),
|
|
1214
1215
|
fetched_at: Date.now(),
|
|
@@ -1610,13 +1611,13 @@ export class AUNClient {
|
|
|
1610
1611
|
this._clientLog = this._logger.for('aun_core.client');
|
|
1611
1612
|
this._logAuth = this._logger.for('aun_core.auth');
|
|
1612
1613
|
this._logTransport = this._logger.for('aun_core.transport');
|
|
1613
|
-
this.
|
|
1614
|
+
this._tokenStoreLog = this._logger.for('aun_core.keystore');
|
|
1614
1615
|
this._logDiscovery = this._logger.for('aun_core.discovery');
|
|
1615
1616
|
this._logEvents = this._logger.for('aun_core.events');
|
|
1616
1617
|
this._discovery = new GatewayDiscovery();
|
|
1617
|
-
this.
|
|
1618
|
+
this._tokenStore = new IndexedDBKeyStore({});
|
|
1618
1619
|
this._auth = new AuthFlow({
|
|
1619
|
-
|
|
1620
|
+
tokenStore: this._tokenStore,
|
|
1620
1621
|
crypto: new CryptoProvider(),
|
|
1621
1622
|
aid: aid.aid,
|
|
1622
1623
|
deviceId: this._deviceId,
|
|
@@ -1640,8 +1641,8 @@ export class AUNClient {
|
|
|
1640
1641
|
if (typeof this._discovery.setLogger === 'function') {
|
|
1641
1642
|
this._discovery.setLogger(this._logDiscovery);
|
|
1642
1643
|
}
|
|
1643
|
-
if (typeof this.
|
|
1644
|
-
this.
|
|
1644
|
+
if (typeof this._tokenStore.setLogger === 'function') {
|
|
1645
|
+
this._tokenStore.setLogger(this._tokenStoreLog);
|
|
1645
1646
|
}
|
|
1646
1647
|
}
|
|
1647
1648
|
loadIdentity(aid) {
|
|
@@ -1660,6 +1661,8 @@ export class AUNClient {
|
|
|
1660
1661
|
public_key_der_b64: aid.publicKey,
|
|
1661
1662
|
cert: aid.certPem,
|
|
1662
1663
|
};
|
|
1664
|
+
// 注入内存私钥到 AuthFlow,禁止 AuthFlow 内部再走 keystore 解密
|
|
1665
|
+
this._auth.setIdentity(this._identity);
|
|
1663
1666
|
this._state = 'disconnected';
|
|
1664
1667
|
this._closing = false;
|
|
1665
1668
|
}
|
|
@@ -3048,9 +3051,9 @@ export class AUNClient {
|
|
|
3048
3051
|
const membershipSnapshot = String(d.membership_snapshot ?? '').trim();
|
|
3049
3052
|
const policySnapshot = String(d.policy_snapshot ?? '').trim();
|
|
3050
3053
|
// 1. 验证 prev_state_hash 连续性
|
|
3051
|
-
const loadFn = this.
|
|
3054
|
+
const loadFn = this._tokenStore.loadGroupState;
|
|
3052
3055
|
const localState = loadFn
|
|
3053
|
-
? await loadFn.call(this.
|
|
3056
|
+
? await loadFn.call(this._tokenStore, groupId)
|
|
3054
3057
|
: null;
|
|
3055
3058
|
if (localState && localState.state_hash && localState.state_hash !== prevStateHash) {
|
|
3056
3059
|
this._clientLog.warn('[aun_core] state_hash 链不连续 group=%s local_sv=%d event_sv=%d', groupId, localState.state_version, stateVersion);
|
|
@@ -3077,9 +3080,9 @@ export class AUNClient {
|
|
|
3077
3080
|
return;
|
|
3078
3081
|
}
|
|
3079
3082
|
}
|
|
3080
|
-
const saveFn = this.
|
|
3083
|
+
const saveFn = this._tokenStore.saveGroupState;
|
|
3081
3084
|
if (saveFn) {
|
|
3082
|
-
await saveFn.call(this.
|
|
3085
|
+
await saveFn.call(this._tokenStore, groupId, {
|
|
3083
3086
|
group_id: groupId,
|
|
3084
3087
|
state_version: sv,
|
|
3085
3088
|
state_hash: sHash,
|
|
@@ -3108,9 +3111,9 @@ export class AUNClient {
|
|
|
3108
3111
|
return;
|
|
3109
3112
|
}
|
|
3110
3113
|
// 3. 更新本地存储
|
|
3111
|
-
const saveFn = this.
|
|
3114
|
+
const saveFn = this._tokenStore.saveGroupState;
|
|
3112
3115
|
if (saveFn) {
|
|
3113
|
-
await saveFn.call(this.
|
|
3116
|
+
await saveFn.call(this._tokenStore, groupId, {
|
|
3114
3117
|
group_id: groupId,
|
|
3115
3118
|
state_version: stateVersion,
|
|
3116
3119
|
state_hash: stateHash,
|
|
@@ -3543,7 +3546,7 @@ export class AUNClient {
|
|
|
3543
3546
|
});
|
|
3544
3547
|
try {
|
|
3545
3548
|
// peer 证书只存版本目录,不覆盖 cert.pem
|
|
3546
|
-
await this.
|
|
3549
|
+
await this._tokenStore.saveCert(aid, certPem, certFingerprint, { makeActive: false });
|
|
3547
3550
|
}
|
|
3548
3551
|
catch (exc) {
|
|
3549
3552
|
this._clientLog.error(`write cert to keystore failed (aid=${aid}): ${String(exc)}`, exc instanceof Error ? exc : undefined);
|
|
@@ -3563,7 +3566,7 @@ export class AUNClient {
|
|
|
3563
3566
|
const now = Date.now() / 1000;
|
|
3564
3567
|
if (cached && now < cached.refreshAfter)
|
|
3565
3568
|
return true;
|
|
3566
|
-
const localCert = await this.
|
|
3569
|
+
const localCert = await this._tokenStore.loadCert(aid, certFingerprint);
|
|
3567
3570
|
if (localCert) {
|
|
3568
3571
|
if (certFingerprint) {
|
|
3569
3572
|
const actualFingerprint = await this._certFingerprint(localCert);
|
|
@@ -3588,7 +3591,7 @@ export class AUNClient {
|
|
|
3588
3591
|
try {
|
|
3589
3592
|
const certPem = await this._fetchPeerCert(aid, certFingerprint);
|
|
3590
3593
|
// peer 证书只存版本目录,不覆盖 cert.pem
|
|
3591
|
-
await this.
|
|
3594
|
+
await this._tokenStore.saveCert(aid, certPem, certFingerprint, { makeActive: false });
|
|
3592
3595
|
return true;
|
|
3593
3596
|
}
|
|
3594
3597
|
catch (exc) {
|
|
@@ -3786,9 +3789,9 @@ export class AUNClient {
|
|
|
3786
3789
|
if (this._gatewayUrl)
|
|
3787
3790
|
return this._gatewayUrl;
|
|
3788
3791
|
try {
|
|
3789
|
-
const getMetadata = this.
|
|
3792
|
+
const getMetadata = this._tokenStore.getMetadata;
|
|
3790
3793
|
const raw = typeof getMetadata === 'function'
|
|
3791
|
-
? String(await getMetadata.call(this.
|
|
3794
|
+
? String(await getMetadata.call(this._tokenStore, target, 'gateway_url') ?? '').trim()
|
|
3792
3795
|
: '';
|
|
3793
3796
|
if (raw) {
|
|
3794
3797
|
const gateway = raw.startsWith('"') && raw.endsWith('"') ? String(JSON.parse(raw)).trim() : raw;
|
|
@@ -3814,9 +3817,9 @@ export class AUNClient {
|
|
|
3814
3817
|
const gateway = await this._discovery.discover(url);
|
|
3815
3818
|
this._gatewayUrl = gateway;
|
|
3816
3819
|
try {
|
|
3817
|
-
const setMetadata = this.
|
|
3820
|
+
const setMetadata = this._tokenStore.setMetadata;
|
|
3818
3821
|
if (typeof setMetadata === 'function') {
|
|
3819
|
-
await setMetadata.call(this.
|
|
3822
|
+
await setMetadata.call(this._tokenStore, target, 'gateway_url', gateway);
|
|
3820
3823
|
}
|
|
3821
3824
|
}
|
|
3822
3825
|
catch {
|
|
@@ -3853,13 +3856,8 @@ export class AUNClient {
|
|
|
3853
3856
|
return [gateway];
|
|
3854
3857
|
}
|
|
3855
3858
|
async _syncIdentityAfterConnect(accessToken) {
|
|
3856
|
-
|
|
3857
|
-
try {
|
|
3858
|
-
identity = await this._auth.loadIdentityOrNone(this._aid ?? undefined);
|
|
3859
|
-
}
|
|
3860
|
-
catch { /* 忽略 */ }
|
|
3859
|
+
const identity = this._identity;
|
|
3861
3860
|
if (!identity) {
|
|
3862
|
-
this._identity = null;
|
|
3863
3861
|
return;
|
|
3864
3862
|
}
|
|
3865
3863
|
identity.access_token = accessToken;
|
|
@@ -3870,9 +3868,6 @@ export class AUNClient {
|
|
|
3870
3868
|
if (typeof persistIdentity === 'function') {
|
|
3871
3869
|
await persistIdentity.call(this._auth, identity);
|
|
3872
3870
|
}
|
|
3873
|
-
else {
|
|
3874
|
-
await this._keystore.saveIdentity(String(identity.aid), identity);
|
|
3875
|
-
}
|
|
3876
3871
|
}
|
|
3877
3872
|
}
|
|
3878
3873
|
// ── 内部:参数处理 ────────────────────────────────
|
|
@@ -4382,8 +4377,7 @@ export class AUNClient {
|
|
|
4382
4377
|
}
|
|
4383
4378
|
// ── Named Group(命名群)高层 API ────────────────────────────
|
|
4384
4379
|
/**
|
|
4385
|
-
*
|
|
4386
|
-
* 服务端签发群 AID 证书,返回后将证书和私钥存入 keystore。
|
|
4380
|
+
* 创建命名群:群/P2P 私钥由 V2 数据库存储,不写入 AID 身份私钥存储。
|
|
4387
4381
|
*/
|
|
4388
4382
|
async createNamedGroup(groupName, opts = {}) {
|
|
4389
4383
|
const tStart = Date.now();
|
|
@@ -4403,15 +4397,10 @@ export class AUNClient {
|
|
|
4403
4397
|
const aidCert = result?.aid_cert;
|
|
4404
4398
|
const groupAid = String(groupInfo?.group_aid ?? '');
|
|
4405
4399
|
if (groupAid && aidCert) {
|
|
4406
|
-
await this.
|
|
4407
|
-
private_key_pem: identity.private_key_pem,
|
|
4408
|
-
public_key: identity.public_key_der_b64,
|
|
4409
|
-
curve: 'P-256',
|
|
4410
|
-
type: 'group_identity',
|
|
4411
|
-
});
|
|
4400
|
+
await this._saveGroupIdentityToV2(groupAid, identity);
|
|
4412
4401
|
const certPem = String(aidCert.cert ?? '');
|
|
4413
4402
|
if (certPem) {
|
|
4414
|
-
await this.
|
|
4403
|
+
await this._tokenStore.saveCert(groupAid, certPem);
|
|
4415
4404
|
}
|
|
4416
4405
|
}
|
|
4417
4406
|
this._clientLog.debug(`createNamedGroup exit: elapsed=${Date.now() - tStart}ms group_aid=${groupAid}`);
|
|
@@ -4442,15 +4431,10 @@ export class AUNClient {
|
|
|
4442
4431
|
const aidCert = result?.aid_cert;
|
|
4443
4432
|
const groupAid = String(groupInfo?.group_aid ?? '');
|
|
4444
4433
|
if (groupAid && aidCert) {
|
|
4445
|
-
await this.
|
|
4446
|
-
private_key_pem: identity.private_key_pem,
|
|
4447
|
-
public_key: identity.public_key_der_b64,
|
|
4448
|
-
curve: 'P-256',
|
|
4449
|
-
type: 'group_identity',
|
|
4450
|
-
});
|
|
4434
|
+
await this._saveGroupIdentityToV2(groupAid, identity);
|
|
4451
4435
|
const certPem = String(aidCert.cert ?? '');
|
|
4452
4436
|
if (certPem) {
|
|
4453
|
-
await this.
|
|
4437
|
+
await this._tokenStore.saveCert(groupAid, certPem);
|
|
4454
4438
|
}
|
|
4455
4439
|
}
|
|
4456
4440
|
this._clientLog.debug(`bindGroupAid exit: elapsed=${Date.now() - tStart}ms group_aid=${groupAid}`);
|
|
@@ -4494,7 +4478,7 @@ export class AUNClient {
|
|
|
4494
4478
|
const slotId = this._slotId;
|
|
4495
4479
|
try {
|
|
4496
4480
|
// 优先从 seq_tracker 表按行读取
|
|
4497
|
-
const loadAll = this.
|
|
4481
|
+
const loadAll = this._tokenStore.loadAllSeqs?.bind(this._tokenStore);
|
|
4498
4482
|
if (typeof loadAll === 'function') {
|
|
4499
4483
|
let state = await loadAll(aid, deviceId, slotId);
|
|
4500
4484
|
if (this._seqTrackerContext !== context)
|
|
@@ -4506,7 +4490,7 @@ export class AUNClient {
|
|
|
4506
4490
|
return;
|
|
4507
4491
|
}
|
|
4508
4492
|
// fallback: 从旧 instance_state JSON blob 恢复
|
|
4509
|
-
const loader = this.
|
|
4493
|
+
const loader = this._tokenStore.loadInstanceState?.bind(this._tokenStore);
|
|
4510
4494
|
if (typeof loader !== 'function')
|
|
4511
4495
|
return;
|
|
4512
4496
|
const stateHolder = await loader(aid, deviceId, slotId);
|
|
@@ -4564,8 +4548,8 @@ export class AUNClient {
|
|
|
4564
4548
|
const aid = this._aid;
|
|
4565
4549
|
const deviceId = this._deviceId;
|
|
4566
4550
|
const slotId = this._slotId;
|
|
4567
|
-
const saver = this.
|
|
4568
|
-
const deleter = this.
|
|
4551
|
+
const saver = this._tokenStore.saveSeq?.bind(this._tokenStore);
|
|
4552
|
+
const deleter = this._tokenStore.deleteSeq?.bind(this._tokenStore);
|
|
4569
4553
|
if (typeof saver === 'function') {
|
|
4570
4554
|
for (const [oldNs, newNs] of Object.entries(renameMap)) {
|
|
4571
4555
|
if (typeof deleter === 'function') {
|
|
@@ -4629,7 +4613,7 @@ export class AUNClient {
|
|
|
4629
4613
|
return;
|
|
4630
4614
|
try {
|
|
4631
4615
|
// 优先按行写入 seq_tracker 表
|
|
4632
|
-
const saveFn = this.
|
|
4616
|
+
const saveFn = this._tokenStore.saveSeq?.bind(this._tokenStore);
|
|
4633
4617
|
if (typeof saveFn === 'function') {
|
|
4634
4618
|
for (const [ns, seq] of Object.entries(state)) {
|
|
4635
4619
|
saveFn(this._aid, this._deviceId, this._slotId, ns, seq).catch((exc) => {
|
|
@@ -4645,8 +4629,8 @@ export class AUNClient {
|
|
|
4645
4629
|
return;
|
|
4646
4630
|
}
|
|
4647
4631
|
// fallback: 旧版 updateInstanceState JSON blob
|
|
4648
|
-
if (typeof this.
|
|
4649
|
-
this.
|
|
4632
|
+
if (typeof this._tokenStore.updateInstanceState === 'function') {
|
|
4633
|
+
this._tokenStore.updateInstanceState(this._aid, this._deviceId, this._slotId, (current) => {
|
|
4650
4634
|
current.seq_tracker_state = state;
|
|
4651
4635
|
return current;
|
|
4652
4636
|
}).catch((exc) => {
|
|
@@ -4675,15 +4659,15 @@ export class AUNClient {
|
|
|
4675
4659
|
return;
|
|
4676
4660
|
const seq = this._seqTracker.getContiguousSeq(ns);
|
|
4677
4661
|
try {
|
|
4678
|
-
if (seq > 0 && typeof this.
|
|
4679
|
-
this.
|
|
4662
|
+
if (seq > 0 && typeof this._tokenStore.saveSeq === 'function') {
|
|
4663
|
+
this._tokenStore.saveSeq(this._aid, this._deviceId, this._slotId, ns, seq).catch((exc) => {
|
|
4680
4664
|
this._clientLog.debug(`persist repaired seq failed: ns=${ns} err=${formatCaughtError(exc)}`);
|
|
4681
4665
|
});
|
|
4682
4666
|
return;
|
|
4683
4667
|
}
|
|
4684
|
-
const deleteSeq = this.
|
|
4668
|
+
const deleteSeq = this._tokenStore.deleteSeq;
|
|
4685
4669
|
if (seq <= 0 && typeof deleteSeq === 'function') {
|
|
4686
|
-
deleteSeq.call(this.
|
|
4670
|
+
deleteSeq.call(this._tokenStore, this._aid, this._deviceId, this._slotId, ns).catch((exc) => {
|
|
4687
4671
|
this._clientLog.debug(`delete repaired seq failed: ns=${ns} err=${formatCaughtError(exc)}`);
|
|
4688
4672
|
});
|
|
4689
4673
|
return;
|
|
@@ -4776,6 +4760,20 @@ export class AUNClient {
|
|
|
4776
4760
|
// 上线时自动确认 pending state proposals
|
|
4777
4761
|
this._safeAsync(this._v2AutoConfirmPendingProposals());
|
|
4778
4762
|
}
|
|
4763
|
+
_v2StoreDeviceId() {
|
|
4764
|
+
return `aid:${encodeURIComponent(String(this._aid ?? ''))}|device:${encodeURIComponent(String(this._deviceId ?? ''))}`;
|
|
4765
|
+
}
|
|
4766
|
+
async _saveGroupIdentityToV2(groupAid, identity) {
|
|
4767
|
+
const privateKeyPem = String(identity.private_key_pem ?? '').trim();
|
|
4768
|
+
const publicKeyDerB64 = String(identity.public_key_der_b64 ?? '').trim();
|
|
4769
|
+
if (!groupAid || !privateKeyPem || !publicKeyDerB64) {
|
|
4770
|
+
throw new StateError('group identity is incomplete');
|
|
4771
|
+
}
|
|
4772
|
+
if (!this._v2KeyStore) {
|
|
4773
|
+
this._v2KeyStore = await V2KeyStore.open();
|
|
4774
|
+
}
|
|
4775
|
+
await this._v2KeyStore.saveGroupIdentity(this._v2StoreDeviceId(), groupAid, privateKeyPem, base64ToUint8(publicKeyDerB64));
|
|
4776
|
+
}
|
|
4779
4777
|
async _v2TrustedIKPubDer(aid) {
|
|
4780
4778
|
const normalizedAid = String(aid ?? '').trim();
|
|
4781
4779
|
if (!normalizedAid)
|