@diap/sdk 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.
Files changed (125) hide show
  1. package/dist/agent-auth.d.ts +96 -0
  2. package/dist/agent-auth.d.ts.map +1 -0
  3. package/dist/agent-auth.js +343 -0
  4. package/dist/agent-auth.js.map +1 -0
  5. package/dist/agent-verification.d.ts +158 -0
  6. package/dist/agent-verification.d.ts.map +1 -0
  7. package/dist/agent-verification.js +237 -0
  8. package/dist/agent-verification.js.map +1 -0
  9. package/dist/config-manager.d.ts +156 -0
  10. package/dist/config-manager.d.ts.map +1 -0
  11. package/dist/config-manager.js +241 -0
  12. package/dist/config-manager.js.map +1 -0
  13. package/dist/did-builder.d.ts +62 -0
  14. package/dist/did-builder.d.ts.map +1 -0
  15. package/dist/did-builder.js +314 -0
  16. package/dist/did-builder.js.map +1 -0
  17. package/dist/did-cache.d.ts +133 -0
  18. package/dist/did-cache.d.ts.map +1 -0
  19. package/dist/did-cache.js +273 -0
  20. package/dist/did-cache.js.map +1 -0
  21. package/dist/identity-manager.d.ts +87 -0
  22. package/dist/identity-manager.d.ts.map +1 -0
  23. package/dist/identity-manager.js +196 -0
  24. package/dist/identity-manager.js.map +1 -0
  25. package/dist/index.d.ts +43 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +52 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/ipfs-bidirectional-verification.d.ts +201 -0
  30. package/dist/ipfs-bidirectional-verification.d.ts.map +1 -0
  31. package/dist/ipfs-bidirectional-verification.js +298 -0
  32. package/dist/ipfs-bidirectional-verification.js.map +1 -0
  33. package/dist/ipfs-client.d.ts +151 -0
  34. package/dist/ipfs-client.d.ts.map +1 -0
  35. package/dist/ipfs-client.js +623 -0
  36. package/dist/ipfs-client.js.map +1 -0
  37. package/dist/ipfs-node-manager.d.ts +136 -0
  38. package/dist/ipfs-node-manager.d.ts.map +1 -0
  39. package/dist/ipfs-node-manager.js +232 -0
  40. package/dist/ipfs-node-manager.js.map +1 -0
  41. package/dist/ipns-manager.d.ts +182 -0
  42. package/dist/ipns-manager.d.ts.map +1 -0
  43. package/dist/ipns-manager.js +268 -0
  44. package/dist/ipns-manager.js.map +1 -0
  45. package/dist/key-manager.d.ts +48 -0
  46. package/dist/key-manager.d.ts.map +1 -0
  47. package/dist/key-manager.js +231 -0
  48. package/dist/key-manager.js.map +1 -0
  49. package/dist/kubo-installer.d.ts +115 -0
  50. package/dist/kubo-installer.d.ts.map +1 -0
  51. package/dist/kubo-installer.js +205 -0
  52. package/dist/kubo-installer.js.map +1 -0
  53. package/dist/libp2p/encrypted-peer-id.d.ts +24 -0
  54. package/dist/libp2p/encrypted-peer-id.d.ts.map +1 -0
  55. package/dist/libp2p/encrypted-peer-id.js +134 -0
  56. package/dist/libp2p/encrypted-peer-id.js.map +1 -0
  57. package/dist/nonce-manager.d.ts +176 -0
  58. package/dist/nonce-manager.d.ts.map +1 -0
  59. package/dist/nonce-manager.js +382 -0
  60. package/dist/nonce-manager.js.map +1 -0
  61. package/dist/p2p/hyperswarm-communicator.d.ts +252 -0
  62. package/dist/p2p/hyperswarm-communicator.d.ts.map +1 -0
  63. package/dist/p2p/hyperswarm-communicator.js +469 -0
  64. package/dist/p2p/hyperswarm-communicator.js.map +1 -0
  65. package/dist/p2p/iroh-communicator.d.ts +216 -0
  66. package/dist/p2p/iroh-communicator.d.ts.map +1 -0
  67. package/dist/p2p/iroh-communicator.js +408 -0
  68. package/dist/p2p/iroh-communicator.js.map +1 -0
  69. package/dist/pubsub-authenticator.d.ts +246 -0
  70. package/dist/pubsub-authenticator.d.ts.map +1 -0
  71. package/dist/pubsub-authenticator.js +384 -0
  72. package/dist/pubsub-authenticator.js.map +1 -0
  73. package/dist/real-name-auth.d.ts +238 -0
  74. package/dist/real-name-auth.d.ts.map +1 -0
  75. package/dist/real-name-auth.js +259 -0
  76. package/dist/real-name-auth.js.map +1 -0
  77. package/dist/types/did.d.ts +76 -0
  78. package/dist/types/did.d.ts.map +1 -0
  79. package/dist/types/did.js +5 -0
  80. package/dist/types/did.js.map +1 -0
  81. package/dist/types/errors.d.ts +42 -0
  82. package/dist/types/errors.d.ts.map +1 -0
  83. package/dist/types/errors.js +69 -0
  84. package/dist/types/errors.js.map +1 -0
  85. package/dist/types/index.d.ts +9 -0
  86. package/dist/types/index.d.ts.map +1 -0
  87. package/dist/types/index.js +9 -0
  88. package/dist/types/index.js.map +1 -0
  89. package/dist/types/key.d.ts +43 -0
  90. package/dist/types/key.d.ts.map +1 -0
  91. package/dist/types/key.js +5 -0
  92. package/dist/types/key.js.map +1 -0
  93. package/dist/types/zkp.d.ts +80 -0
  94. package/dist/types/zkp.d.ts.map +1 -0
  95. package/dist/types/zkp.js +16 -0
  96. package/dist/types/zkp.js.map +1 -0
  97. package/dist/utils/crypto.d.ts +24 -0
  98. package/dist/utils/crypto.d.ts.map +1 -0
  99. package/dist/utils/crypto.js +65 -0
  100. package/dist/utils/crypto.js.map +1 -0
  101. package/dist/utils/encoding.d.ts +36 -0
  102. package/dist/utils/encoding.d.ts.map +1 -0
  103. package/dist/utils/encoding.js +80 -0
  104. package/dist/utils/encoding.js.map +1 -0
  105. package/dist/utils/logger.d.ts +24 -0
  106. package/dist/utils/logger.d.ts.map +1 -0
  107. package/dist/utils/logger.js +37 -0
  108. package/dist/utils/logger.js.map +1 -0
  109. package/dist/zkp/key-generator.d.ts +56 -0
  110. package/dist/zkp/key-generator.d.ts.map +1 -0
  111. package/dist/zkp/key-generator.js +165 -0
  112. package/dist/zkp/key-generator.js.map +1 -0
  113. package/dist/zkp/simplified-backend.d.ts +23 -0
  114. package/dist/zkp/simplified-backend.d.ts.map +1 -0
  115. package/dist/zkp/simplified-backend.js +77 -0
  116. package/dist/zkp/simplified-backend.js.map +1 -0
  117. package/dist/zkp/snarkjs-backend.d.ts +150 -0
  118. package/dist/zkp/snarkjs-backend.d.ts.map +1 -0
  119. package/dist/zkp/snarkjs-backend.js +218 -0
  120. package/dist/zkp/snarkjs-backend.js.map +1 -0
  121. package/dist/zkp/universal-manager.d.ts +44 -0
  122. package/dist/zkp/universal-manager.d.ts.map +1 -0
  123. package/dist/zkp/universal-manager.js +181 -0
  124. package/dist/zkp/universal-manager.js.map +1 -0
  125. package/package.json +2 -2
@@ -0,0 +1,62 @@
1
+ /**
2
+ * DID 构建器
3
+ * 构建和发布符合 W3C DID 规范的 DID 文档
4
+ * 基于 Rust SDK 的实现逻辑
5
+ */
6
+ import type { DIDDocument, DIDPublishResult, EncryptedPeerID } from './types/did.js';
7
+ import type { KeyPair } from './types/key.js';
8
+ import type { IpfsClient } from './ipfs-client.js';
9
+ /**
10
+ * DID 构建器
11
+ */
12
+ export declare class DIDBuilder {
13
+ private ipfsClient;
14
+ private services;
15
+ constructor(ipfsClient: IpfsClient);
16
+ /**
17
+ * 添加服务端点
18
+ */
19
+ addService(serviceType: string, endpoint: any): this;
20
+ /**
21
+ * 添加 PubSub 服务
22
+ */
23
+ addPubsubService(serviceType: string, endpoint: any, topics: string[], addresses: string[]): this;
24
+ /**
25
+ * 构建 DID 文档
26
+ */
27
+ buildDIDDocument(keypair: KeyPair, encryptedPeerId: EncryptedPeerID): DIDDocument;
28
+ /**
29
+ * 构建包含 PubSub 信息的 DID 文档
30
+ */
31
+ buildDIDDocumentWithPubsub(keypair: KeyPair, encryptedPeerId: EncryptedPeerID, pubsubTopics: string[], networkAddresses: string[]): DIDDocument;
32
+ /**
33
+ * 派生 did:key 格式的 DID
34
+ */
35
+ private deriveDIDKey;
36
+ /**
37
+ * 创建并发布 DID 文档
38
+ */
39
+ createAndPublish(keypair: KeyPair, peerId: string): Promise<DIDPublishResult>;
40
+ /**
41
+ * 创建并发布包含 PubSub 信息的 DID 文档
42
+ */
43
+ createAndPublishWithPubsub(keypair: KeyPair, peerId: string, pubsubTopics: string[], networkAddresses: string[]): Promise<DIDPublishResult>;
44
+ /**
45
+ * 上传 DID 文档到 IPFS
46
+ */
47
+ private uploadDIDDocument;
48
+ }
49
+ /**
50
+ * 从 IPFS CID 获取 DID 文档
51
+ */
52
+ export declare function getDIDDocumentFromCID(ipfsClient: IpfsClient, cid: string): Promise<DIDDocument>;
53
+ /**
54
+ * 验证 DID 文档完整性
55
+ * 支持多种哈希算法:SHA-256, SHA-512, Blake2b-512, Blake2s-256
56
+ */
57
+ export declare function verifyDIDDocumentIntegrity(didDoc: DIDDocument, expectedCid: string): Promise<boolean>;
58
+ /**
59
+ * 验证 DID 文档完整性(同步版本,仅做结构验证)
60
+ */
61
+ export declare function verifyDIDDocumentIntegritySync(didDoc: DIDDocument): boolean;
62
+ //# sourceMappingURL=did-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-builder.d.ts","sourceRoot":"","sources":["../src/did-builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EAGX,gBAAgB,EAChB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQnD;;GAEG;AACH,qBAAa,UAAU;IAGT,OAAO,CAAC,UAAU;IAF9B,OAAO,CAAC,QAAQ,CAAiB;gBAEb,UAAU,EAAE,UAAU;IAE1C;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAUpD;;OAEG;IACH,gBAAgB,CACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,GAAG,EACb,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI;IAYP;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,GAAG,WAAW;IAsCjF;;OAEG;IACH,0BAA0B,CACxB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,EAAE,GACzB,WAAW;IA0Cd;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCnF;;OAEG;IACG,0BAA0B,CAC9B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,gBAAgB,EAAE,MAAM,EAAE,GACzB,OAAO,CAAC,gBAAgB,CAAC;IAoC5B;;OAEG;YACW,iBAAiB;CAKhC;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,WAAW,CAAC,CAStB;AAYD;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CA+DlB;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAY3E"}
@@ -0,0 +1,314 @@
1
+ /**
2
+ * DID 构建器
3
+ * 构建和发布符合 W3C DID 规范的 DID 文档
4
+ * 基于 Rust SDK 的实现逻辑
5
+ */
6
+ import { DIDError } from './types/errors.js';
7
+ import { encodeBase58, encodeBase64 } from './utils/encoding.js';
8
+ import { encryptPeerId } from './libp2p/encrypted-peer-id.js';
9
+ import { logger } from './utils/logger.js';
10
+ import { sha256, sha512 } from '@noble/hashes/sha256';
11
+ import { blake2b, blake2s } from '@noble/hashes/blake2';
12
+ /**
13
+ * DID 构建器
14
+ */
15
+ export class DIDBuilder {
16
+ ipfsClient;
17
+ services = [];
18
+ constructor(ipfsClient) {
19
+ this.ipfsClient = ipfsClient;
20
+ }
21
+ /**
22
+ * 添加服务端点
23
+ */
24
+ addService(serviceType, endpoint) {
25
+ const service = {
26
+ id: `#${serviceType.toLowerCase()}`,
27
+ type: serviceType,
28
+ serviceEndpoint: endpoint,
29
+ };
30
+ this.services.push(service);
31
+ return this;
32
+ }
33
+ /**
34
+ * 添加 PubSub 服务
35
+ */
36
+ addPubsubService(serviceType, endpoint, topics, addresses) {
37
+ const service = {
38
+ id: `#${serviceType.toLowerCase()}`,
39
+ type: serviceType,
40
+ serviceEndpoint: endpoint,
41
+ pubsubTopics: topics,
42
+ networkAddresses: addresses,
43
+ };
44
+ this.services.push(service);
45
+ return this;
46
+ }
47
+ /**
48
+ * 构建 DID 文档
49
+ */
50
+ buildDIDDocument(keypair, encryptedPeerId) {
51
+ const publicKeyMultibase = this.deriveDIDKey(keypair.publicKey);
52
+ const verificationMethod = {
53
+ id: `${keypair.did}#key-1`,
54
+ type: 'Ed25519VerificationKey2020',
55
+ controller: keypair.did,
56
+ publicKeyMultibase,
57
+ };
58
+ const libp2pService = {
59
+ id: `${keypair.did}#libp2p`,
60
+ type: 'LibP2PNode',
61
+ serviceEndpoint: {
62
+ ciphertext: encodeBase64(encryptedPeerId.ciphertext),
63
+ nonce: encodeBase64(encryptedPeerId.nonce),
64
+ signature: encodeBase64(encryptedPeerId.signature),
65
+ method: encryptedPeerId.method,
66
+ },
67
+ };
68
+ const allServices = [libp2pService, ...this.services];
69
+ const didDoc = {
70
+ '@context': [
71
+ 'https://www.w3.org/ns/did/v1',
72
+ 'https://w3id.org/security/suites/ed25519-2020/v1',
73
+ ],
74
+ id: keypair.did,
75
+ verificationMethod: [verificationMethod],
76
+ authentication: [`${keypair.did}#key-1`],
77
+ service: allServices,
78
+ created: new Date().toISOString(),
79
+ };
80
+ return didDoc;
81
+ }
82
+ /**
83
+ * 构建包含 PubSub 信息的 DID 文档
84
+ */
85
+ buildDIDDocumentWithPubsub(keypair, encryptedPeerId, pubsubTopics, networkAddresses) {
86
+ const publicKeyMultibase = this.deriveDIDKey(keypair.publicKey);
87
+ const verificationMethod = {
88
+ id: `${keypair.did}#key-1`,
89
+ type: 'Ed25519VerificationKey2020',
90
+ controller: keypair.did,
91
+ publicKeyMultibase,
92
+ };
93
+ const libp2pService = {
94
+ id: `${keypair.did}#libp2p`,
95
+ type: 'libp2p',
96
+ serviceEndpoint: {
97
+ ciphertext: encodeBase64(encryptedPeerId.ciphertext),
98
+ nonce: encodeBase64(encryptedPeerId.nonce),
99
+ signature: encodeBase64(encryptedPeerId.signature),
100
+ method: encryptedPeerId.method,
101
+ protocol: 'libp2p',
102
+ version: '1.0.0',
103
+ },
104
+ pubsubTopics,
105
+ networkAddresses,
106
+ };
107
+ const allServices = [libp2pService, ...this.services];
108
+ const didDoc = {
109
+ '@context': [
110
+ 'https://www.w3.org/ns/did/v1',
111
+ 'https://w3id.org/security/suites/ed25519-2020/v1',
112
+ ],
113
+ id: keypair.did,
114
+ verificationMethod: [verificationMethod],
115
+ authentication: [`${keypair.did}#key-1`],
116
+ service: allServices,
117
+ created: new Date().toISOString(),
118
+ };
119
+ return didDoc;
120
+ }
121
+ /**
122
+ * 派生 did:key 格式的 DID
123
+ */
124
+ deriveDIDKey(publicKey) {
125
+ if (publicKey.length !== 32) {
126
+ throw new DIDError('Public key must be 32 bytes for Ed25519');
127
+ }
128
+ const prefix = new Uint8Array([0xed, 0x01]);
129
+ const combined = new Uint8Array(prefix.length + publicKey.length);
130
+ combined.set(prefix, 0);
131
+ combined.set(publicKey, prefix.length);
132
+ const encoded = encodeBase58(combined);
133
+ return `did:key:z${encoded}`;
134
+ }
135
+ /**
136
+ * 创建并发布 DID 文档
137
+ */
138
+ async createAndPublish(keypair, peerId) {
139
+ try {
140
+ logger.info('🚀 开始DID发布流程(简化版)');
141
+ logger.info('步骤1: 加密libp2p PeerID');
142
+ const encryptedPeerId = encryptPeerId(keypair.privateKey, peerId);
143
+ logger.info('✓ PeerID已加密');
144
+ logger.info('步骤2: 构建DID文档');
145
+ const didDocument = this.buildDIDDocument(keypair, encryptedPeerId);
146
+ logger.info('✓ DID文档构建完成');
147
+ logger.info(` DID: ${didDocument.id}`);
148
+ logger.info('步骤3: 上传DID文档到IPFS');
149
+ const uploadResult = await this.uploadDIDDocument(didDocument);
150
+ logger.info('✓ 上传完成');
151
+ logger.info(` CID: ${uploadResult.cid}`);
152
+ logger.info('✅ DID发布成功');
153
+ logger.info(` DID: ${keypair.did}`);
154
+ logger.info(` CID: ${uploadResult.cid}`);
155
+ logger.info(' 绑定关系: 通过ZKP验证');
156
+ return {
157
+ did: keypair.did,
158
+ cid: uploadResult.cid,
159
+ didDocument,
160
+ encryptedPeerId,
161
+ };
162
+ }
163
+ catch (error) {
164
+ throw new DIDError('Failed to create and publish DID document', {
165
+ originalError: error,
166
+ });
167
+ }
168
+ }
169
+ /**
170
+ * 创建并发布包含 PubSub 信息的 DID 文档
171
+ */
172
+ async createAndPublishWithPubsub(keypair, peerId, pubsubTopics, networkAddresses) {
173
+ logger.info('🚀 开始DID发布流程(包含PubSub信息)');
174
+ logger.info('步骤1: 加密libp2p PeerID');
175
+ const encryptedPeerId = encryptPeerId(keypair.privateKey, peerId);
176
+ logger.info('✓ PeerID已加密');
177
+ logger.info('步骤2: 构建包含PubSub信息的DID文档');
178
+ const didDocument = this.buildDIDDocumentWithPubsub(keypair, encryptedPeerId, pubsubTopics, networkAddresses);
179
+ logger.info('✓ DID文档构建完成');
180
+ logger.info(` DID: ${didDocument.id}`);
181
+ logger.info('步骤3: 上传DID文档到IPFS');
182
+ const uploadResult = await this.uploadDIDDocument(didDocument);
183
+ logger.info('✓ 上传完成');
184
+ logger.info(` CID: ${uploadResult.cid}`);
185
+ logger.info('✅ DID发布成功(包含PubSub信息)');
186
+ logger.info(` DID: ${keypair.did}`);
187
+ logger.info(` CID: ${uploadResult.cid}`);
188
+ logger.info(` PubSub主题: ${pubsubTopics.join(', ')}`);
189
+ logger.info(` 网络地址: ${networkAddresses.join(', ')}`);
190
+ return {
191
+ did: keypair.did,
192
+ cid: uploadResult.cid,
193
+ didDocument,
194
+ encryptedPeerId,
195
+ };
196
+ }
197
+ /**
198
+ * 上传 DID 文档到 IPFS
199
+ */
200
+ async uploadDIDDocument(didDoc) {
201
+ const json = JSON.stringify(didDoc, null, 2);
202
+ const result = await this.ipfsClient.upload(json, 'did.json');
203
+ return { cid: result.cid, size: result.size };
204
+ }
205
+ }
206
+ /**
207
+ * 从 IPFS CID 获取 DID 文档
208
+ */
209
+ export async function getDIDDocumentFromCID(ipfsClient, cid) {
210
+ logger.info(`从IPFS获取DID文档: ${cid}`);
211
+ const content = await ipfsClient.get(cid);
212
+ const didDoc = JSON.parse(content);
213
+ logger.info(`✓ DID文档获取成功: ${didDoc.id}`);
214
+ return didDoc;
215
+ }
216
+ /**
217
+ * Multihash 代码到哈希函数映射
218
+ */
219
+ const MULTIHASH_CODES = {
220
+ 0x12: 'sha256',
221
+ 0x13: 'sha512',
222
+ 0xb220: 'blake2b512',
223
+ 0xb260: 'blake2s256',
224
+ };
225
+ /**
226
+ * 验证 DID 文档完整性
227
+ * 支持多种哈希算法:SHA-256, SHA-512, Blake2b-512, Blake2s-256
228
+ */
229
+ export async function verifyDIDDocumentIntegrity(didDoc, expectedCid) {
230
+ logger.info('验证DID文档完整性与CID绑定(支持多种哈希算法)');
231
+ const json = JSON.stringify(didDoc);
232
+ logger.debug(` DID文档大小: ${json.length} 字节`);
233
+ try {
234
+ const { CID } = await import('multiformats/cid');
235
+ const cid = CID.parse(expectedCid);
236
+ logger.debug(` CID版本: ${cid.version}`);
237
+ logger.debug(` CID codec: ${cid.codec}`);
238
+ const multihash = cid.multihash;
239
+ const hashCode = multihash.code;
240
+ const hashDigest = multihash.digest;
241
+ logger.debug(` Multihash code: 0x${hashCode.toString(16)}`);
242
+ logger.debug(` Multihash digest: ${toHexString(hashDigest)}`);
243
+ let computedHash;
244
+ switch (hashCode) {
245
+ case 0x12:
246
+ logger.debug(' 使用SHA-256计算哈希');
247
+ computedHash = new Uint8Array(sha256(new TextEncoder().encode(json)));
248
+ break;
249
+ case 0x13:
250
+ logger.debug(' 使用SHA-512计算哈希');
251
+ computedHash = new Uint8Array(sha512(new TextEncoder().encode(json)));
252
+ break;
253
+ case 0xb220:
254
+ logger.debug(' 使用Blake2b-512计算哈希');
255
+ computedHash = new Uint8Array(blake2b(new TextEncoder().encode(json), 64));
256
+ break;
257
+ case 0xb260:
258
+ logger.debug(' 使用Blake2s-256计算哈希');
259
+ computedHash = new Uint8Array(blake2s(new TextEncoder().encode(json), 32));
260
+ break;
261
+ default:
262
+ logger.warn(` ⚠️ 不支持的哈希算法: 0x${hashCode.toString(16)}`);
263
+ logger.debug(' 回退到SHA-256');
264
+ computedHash = new Uint8Array(sha256(new TextEncoder().encode(json)));
265
+ }
266
+ logger.debug(` 计算的哈希: ${toHexString(computedHash)}`);
267
+ const hashesMatch = buffersEqual(computedHash, new Uint8Array(hashDigest));
268
+ if (hashesMatch) {
269
+ logger.info('✅ DID文档哈希与CID匹配');
270
+ }
271
+ else {
272
+ logger.warn('❌ DID文档哈希与CID不匹配');
273
+ logger.debug(` 预期: ${toHexString(hashDigest)}`);
274
+ logger.debug(` 实际: ${toHexString(computedHash)}`);
275
+ logger.debug(` 哈希算法: 0x${hashCode.toString(16)}`);
276
+ }
277
+ return hashesMatch;
278
+ }
279
+ catch (error) {
280
+ logger.error('验证DID文档完整性失败', { error });
281
+ return false;
282
+ }
283
+ }
284
+ /**
285
+ * 验证 DID 文档完整性(同步版本,仅做结构验证)
286
+ */
287
+ export function verifyDIDDocumentIntegritySync(didDoc) {
288
+ try {
289
+ return (didDoc['@context'] !== undefined &&
290
+ didDoc.id !== undefined &&
291
+ didDoc.verificationMethod !== undefined &&
292
+ Array.isArray(didDoc.verificationMethod) &&
293
+ didDoc.verificationMethod.length > 0);
294
+ }
295
+ catch (error) {
296
+ return false;
297
+ }
298
+ }
299
+ function toHexString(bytes) {
300
+ const buffer = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
301
+ return Array.from(buffer)
302
+ .map((b) => b.toString(16).padStart(2, '0'))
303
+ .join('');
304
+ }
305
+ function buffersEqual(a, b) {
306
+ if (a.length !== b.length)
307
+ return false;
308
+ for (let i = 0; i < a.length; i++) {
309
+ if (a[i] !== b[i])
310
+ return false;
311
+ }
312
+ return true;
313
+ }
314
+ //# sourceMappingURL=did-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-builder.js","sourceRoot":"","sources":["../src/did-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * DIAP TypeScript SDK - DID 文档缓存
3
+ * 减少 IPFS 请求,提高验证性能
4
+ * 使用 LRU 驱逐策略和后台清理任务
5
+ */
6
+ import type { DIDDocument } from './types/did.js';
7
+ /**
8
+ * 缓存条目
9
+ */
10
+ export interface CacheEntry {
11
+ /** DID 文档 */
12
+ document: DIDDocument;
13
+ /** CID */
14
+ cid: string;
15
+ /** 缓存时间 */
16
+ cachedAt: number;
17
+ /** 过期时间 */
18
+ expiresAt: number;
19
+ /** 访问次数 */
20
+ hitCount: number;
21
+ }
22
+ /**
23
+ * 缓存统计信息
24
+ */
25
+ export interface CacheStats {
26
+ /** 总条目数 */
27
+ totalEntries: number;
28
+ /** 过期条目数 */
29
+ expiredEntries: number;
30
+ /** 总命中次数 */
31
+ totalHits: number;
32
+ /** 最大条目数 */
33
+ maxEntries: number;
34
+ /** TTL(秒) */
35
+ ttl: number;
36
+ }
37
+ /**
38
+ * DID 文档缓存管理器
39
+ */
40
+ export declare class DIDCache {
41
+ /** CID -> CacheEntry 缓存 */
42
+ private cache;
43
+ /** 缓存有效期(秒) */
44
+ private ttl;
45
+ /** 最大缓存条目数 */
46
+ private maxEntries;
47
+ /** 后台清理定时器 */
48
+ private cleanupTimer?;
49
+ /**
50
+ * 创建新的 DID 缓存
51
+ *
52
+ * @param ttl - 缓存有效期(秒),默认 3600 秒(1小时)
53
+ * @param maxEntries - 最大缓存条目数,默认 1000
54
+ */
55
+ constructor(ttl?: number, maxEntries?: number);
56
+ /**
57
+ * 获取 DID 文档
58
+ */
59
+ get(cid: string): DIDDocument | null;
60
+ /**
61
+ * 存储 DID 文档
62
+ */
63
+ put(cid: string, document: DIDDocument): void;
64
+ /**
65
+ * 检查缓存是否存在
66
+ */
67
+ has(cid: string): boolean;
68
+ /**
69
+ * 移除缓存条目
70
+ */
71
+ remove(cid: string): DIDDocument | null;
72
+ /**
73
+ * 清空缓存
74
+ */
75
+ clear(): void;
76
+ /**
77
+ * 获取缓存统计
78
+ */
79
+ stats(): CacheStats;
80
+ /**
81
+ * 清理过期条目
82
+ */
83
+ cleanupExpired(): number;
84
+ /**
85
+ * 驱逐最少使用的条目(LRU)
86
+ */
87
+ private evictLru;
88
+ /**
89
+ * 获取当前时间戳(秒)
90
+ */
91
+ private getCurrentTimestamp;
92
+ /**
93
+ * 启动后台清理任务
94
+ */
95
+ private startCleanupTask;
96
+ /**
97
+ * 停止后台清理任务
98
+ */
99
+ stopCleanupTask(): void;
100
+ /**
101
+ * 获取缓存条目数
102
+ */
103
+ size(): number;
104
+ /**
105
+ * 检查缓存是否为空
106
+ */
107
+ isEmpty(): boolean;
108
+ /**
109
+ * 获取所有缓存的 CID
110
+ */
111
+ getAllCids(): string[];
112
+ /**
113
+ * 销毁缓存实例
114
+ */
115
+ destroy(): void;
116
+ }
117
+ /**
118
+ * 创建新的 DID 缓存(便捷函数)
119
+ */
120
+ export declare function createDIDCache(ttl?: number, maxEntries?: number): DIDCache;
121
+ /**
122
+ * 创建默认配置的 DID 缓存
123
+ */
124
+ export declare function createDefaultDIDCache(): DIDCache;
125
+ /**
126
+ * 获取全局 DID 缓存实例
127
+ */
128
+ export declare function getGlobalDIDCache(): DIDCache;
129
+ /**
130
+ * 重置全局 DID 缓存
131
+ */
132
+ export declare function resetGlobalDIDCache(): void;
133
+ //# sourceMappingURL=did-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-cache.d.ts","sourceRoot":"","sources":["../src/did-cache.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,aAAa;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAMD;;GAEG;AACH,qBAAa,QAAQ;IACnB,2BAA2B;IAC3B,OAAO,CAAC,KAAK,CAA0B;IACvC,eAAe;IACf,OAAO,CAAC,GAAG,CAAS;IACpB,cAAc;IACd,OAAO,CAAC,UAAU,CAAS;IAC3B,cAAc;IACd,OAAO,CAAC,YAAY,CAAC,CAAiB;IAEtC;;;;;OAKG;gBACS,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAgB7C;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAwB3C;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAmBpD;;OAEG;IACI,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAahC;;OAEG;IACI,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAU9C;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;OAEG;IACI,KAAK,IAAI,UAAU;IAqB1B;;OAEG;IACI,cAAc,IAAI,MAAM;IAkB/B;;OAEG;IACH,OAAO,CAAC,QAAQ;IAiBhB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACI,eAAe,IAAI,IAAI;IAQ9B;;OAEG;IACI,IAAI,IAAI,MAAM;IAIrB;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB;;OAEG;IACI,UAAU,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACI,OAAO,IAAI,IAAI;CAKvB;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAE1E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,CAEhD;AAQD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,QAAQ,CAK5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAK1C"}