@diap/sdk 0.1.1 → 0.1.3

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 (127) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +86 -86
  3. package/dist/agent-auth.d.ts +96 -0
  4. package/dist/agent-auth.d.ts.map +1 -0
  5. package/dist/agent-auth.js +343 -0
  6. package/dist/agent-auth.js.map +1 -0
  7. package/dist/agent-verification.d.ts +158 -0
  8. package/dist/agent-verification.d.ts.map +1 -0
  9. package/dist/agent-verification.js +237 -0
  10. package/dist/agent-verification.js.map +1 -0
  11. package/dist/config-manager.d.ts +156 -0
  12. package/dist/config-manager.d.ts.map +1 -0
  13. package/dist/config-manager.js +241 -0
  14. package/dist/config-manager.js.map +1 -0
  15. package/dist/did-builder.d.ts +62 -0
  16. package/dist/did-builder.d.ts.map +1 -0
  17. package/dist/did-builder.js +315 -0
  18. package/dist/did-builder.js.map +1 -0
  19. package/dist/did-cache.d.ts +133 -0
  20. package/dist/did-cache.d.ts.map +1 -0
  21. package/dist/did-cache.js +273 -0
  22. package/dist/did-cache.js.map +1 -0
  23. package/dist/identity-manager.d.ts +87 -0
  24. package/dist/identity-manager.d.ts.map +1 -0
  25. package/dist/identity-manager.js +196 -0
  26. package/dist/identity-manager.js.map +1 -0
  27. package/dist/index.d.ts +43 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +52 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/ipfs-bidirectional-verification.d.ts +201 -0
  32. package/dist/ipfs-bidirectional-verification.d.ts.map +1 -0
  33. package/dist/ipfs-bidirectional-verification.js +298 -0
  34. package/dist/ipfs-bidirectional-verification.js.map +1 -0
  35. package/dist/ipfs-client.d.ts +151 -0
  36. package/dist/ipfs-client.d.ts.map +1 -0
  37. package/dist/ipfs-client.js +623 -0
  38. package/dist/ipfs-client.js.map +1 -0
  39. package/dist/ipfs-node-manager.d.ts +136 -0
  40. package/dist/ipfs-node-manager.d.ts.map +1 -0
  41. package/dist/ipfs-node-manager.js +232 -0
  42. package/dist/ipfs-node-manager.js.map +1 -0
  43. package/dist/ipns-manager.d.ts +182 -0
  44. package/dist/ipns-manager.d.ts.map +1 -0
  45. package/dist/ipns-manager.js +268 -0
  46. package/dist/ipns-manager.js.map +1 -0
  47. package/dist/key-manager.d.ts +48 -0
  48. package/dist/key-manager.d.ts.map +1 -0
  49. package/dist/key-manager.js +231 -0
  50. package/dist/key-manager.js.map +1 -0
  51. package/dist/kubo-installer.d.ts +115 -0
  52. package/dist/kubo-installer.d.ts.map +1 -0
  53. package/dist/kubo-installer.js +205 -0
  54. package/dist/kubo-installer.js.map +1 -0
  55. package/dist/libp2p/encrypted-peer-id.d.ts +24 -0
  56. package/dist/libp2p/encrypted-peer-id.d.ts.map +1 -0
  57. package/dist/libp2p/encrypted-peer-id.js +134 -0
  58. package/dist/libp2p/encrypted-peer-id.js.map +1 -0
  59. package/dist/nonce-manager.d.ts +176 -0
  60. package/dist/nonce-manager.d.ts.map +1 -0
  61. package/dist/nonce-manager.js +382 -0
  62. package/dist/nonce-manager.js.map +1 -0
  63. package/dist/p2p/hyperswarm-communicator.d.ts +252 -0
  64. package/dist/p2p/hyperswarm-communicator.d.ts.map +1 -0
  65. package/dist/p2p/hyperswarm-communicator.js +469 -0
  66. package/dist/p2p/hyperswarm-communicator.js.map +1 -0
  67. package/dist/p2p/iroh-communicator.d.ts +216 -0
  68. package/dist/p2p/iroh-communicator.d.ts.map +1 -0
  69. package/dist/p2p/iroh-communicator.js +408 -0
  70. package/dist/p2p/iroh-communicator.js.map +1 -0
  71. package/dist/pubsub-authenticator.d.ts +246 -0
  72. package/dist/pubsub-authenticator.d.ts.map +1 -0
  73. package/dist/pubsub-authenticator.js +384 -0
  74. package/dist/pubsub-authenticator.js.map +1 -0
  75. package/dist/real-name-auth.d.ts +238 -0
  76. package/dist/real-name-auth.d.ts.map +1 -0
  77. package/dist/real-name-auth.js +259 -0
  78. package/dist/real-name-auth.js.map +1 -0
  79. package/dist/types/did.d.ts +76 -0
  80. package/dist/types/did.d.ts.map +1 -0
  81. package/dist/types/did.js +5 -0
  82. package/dist/types/did.js.map +1 -0
  83. package/dist/types/errors.d.ts +42 -0
  84. package/dist/types/errors.d.ts.map +1 -0
  85. package/dist/types/errors.js +69 -0
  86. package/dist/types/errors.js.map +1 -0
  87. package/dist/types/index.d.ts +9 -0
  88. package/dist/types/index.d.ts.map +1 -0
  89. package/dist/types/index.js +9 -0
  90. package/dist/types/index.js.map +1 -0
  91. package/dist/types/key.d.ts +43 -0
  92. package/dist/types/key.d.ts.map +1 -0
  93. package/dist/types/key.js +5 -0
  94. package/dist/types/key.js.map +1 -0
  95. package/dist/types/zkp.d.ts +80 -0
  96. package/dist/types/zkp.d.ts.map +1 -0
  97. package/dist/types/zkp.js +16 -0
  98. package/dist/types/zkp.js.map +1 -0
  99. package/dist/utils/crypto.d.ts +24 -0
  100. package/dist/utils/crypto.d.ts.map +1 -0
  101. package/dist/utils/crypto.js +65 -0
  102. package/dist/utils/crypto.js.map +1 -0
  103. package/dist/utils/encoding.d.ts +36 -0
  104. package/dist/utils/encoding.d.ts.map +1 -0
  105. package/dist/utils/encoding.js +80 -0
  106. package/dist/utils/encoding.js.map +1 -0
  107. package/dist/utils/logger.d.ts +24 -0
  108. package/dist/utils/logger.d.ts.map +1 -0
  109. package/dist/utils/logger.js +37 -0
  110. package/dist/utils/logger.js.map +1 -0
  111. package/dist/zkp/key-generator.d.ts +56 -0
  112. package/dist/zkp/key-generator.d.ts.map +1 -0
  113. package/dist/zkp/key-generator.js +165 -0
  114. package/dist/zkp/key-generator.js.map +1 -0
  115. package/dist/zkp/simplified-backend.d.ts +23 -0
  116. package/dist/zkp/simplified-backend.d.ts.map +1 -0
  117. package/dist/zkp/simplified-backend.js +77 -0
  118. package/dist/zkp/simplified-backend.js.map +1 -0
  119. package/dist/zkp/snarkjs-backend.d.ts +150 -0
  120. package/dist/zkp/snarkjs-backend.d.ts.map +1 -0
  121. package/dist/zkp/snarkjs-backend.js +218 -0
  122. package/dist/zkp/snarkjs-backend.js.map +1 -0
  123. package/dist/zkp/universal-manager.d.ts +44 -0
  124. package/dist/zkp/universal-manager.d.ts.map +1 -0
  125. package/dist/zkp/universal-manager.js +181 -0
  126. package/dist/zkp/universal-manager.js.map +1 -0
  127. package/package.json +2 -2
@@ -0,0 +1,382 @@
1
+ /**
2
+ * DIAP TypeScript SDK - Nonce 管理器
3
+ * 生成和管理随机数,用于防重放攻击
4
+ */
5
+ import { logger } from './utils/logger.js';
6
+ /**
7
+ * Nonce 管理器
8
+ */
9
+ export class NonceManager {
10
+ /** 配置 */
11
+ config;
12
+ /** Nonce 缓存 */
13
+ nonceCache;
14
+ /** 已使用的 Nonce 集合(用于快速查找) */
15
+ usedNonces;
16
+ /** 清理间隔(毫秒) */
17
+ cleanupIntervalMs = 60000;
18
+ /**
19
+ * 创建 Nonce 管理器
20
+ */
21
+ constructor(config) {
22
+ this.config = {
23
+ nonceLength: config?.nonceLength || 32,
24
+ ttlSeconds: config?.ttlSeconds || 300, // 5 分钟
25
+ maxUsageCount: config?.maxUsageCount || 1,
26
+ maxCacheSize: config?.maxCacheSize || 1000,
27
+ };
28
+ this.nonceCache = new Map();
29
+ this.usedNonces = new Set();
30
+ // 启动清理任务
31
+ this.startCleanupTask();
32
+ logger.info('✅ Nonce 管理器已创建');
33
+ logger.info(` Nonce 长度: ${this.config.nonceLength} 字节`);
34
+ logger.info(` TTL: ${this.config.ttlSeconds} 秒`);
35
+ }
36
+ /**
37
+ * 生成新的 Nonce(静态方法,格式: timestamp:uuid:random)
38
+ */
39
+ static generateNonce() {
40
+ const timestamp = Math.floor(Date.now() / 1000);
41
+ const uuid = crypto.randomUUID ? crypto.randomUUID() : NonceManager.generateFallbackUuid();
42
+ const random = Math.floor(Math.random() * 0xffffffffffff).toString(16);
43
+ return `${timestamp}:${uuid}:${random}`;
44
+ }
45
+ /**
46
+ * 生成 fallback UUID
47
+ */
48
+ static generateFallbackUuid() {
49
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
50
+ const r = (Math.random() * 16) | 0;
51
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
52
+ return v.toString(16);
53
+ });
54
+ }
55
+ /**
56
+ * 生成新的 Nonce
57
+ */
58
+ generateNonce() {
59
+ const nonce = NonceManager.generateNonce();
60
+ const now = Date.now();
61
+ const record = {
62
+ nonce,
63
+ createdAt: now,
64
+ expiresAt: now + this.config.ttlSeconds * 1000,
65
+ usedCount: 0,
66
+ isUsed: false,
67
+ };
68
+ // 检查缓存大小
69
+ if (this.nonceCache.size >= this.config.maxCacheSize) {
70
+ this.evictOldest();
71
+ }
72
+ this.nonceCache.set(nonce, record);
73
+ logger.debug(`🔢 生成 Nonce: ${nonce.substring(0, 8)}...`);
74
+ return nonce;
75
+ }
76
+ /**
77
+ * 验证并记录 Nonce(原子操作)
78
+ *
79
+ * @returns true - Nonce 有效且未被使用
80
+ * @returns false - Nonce 已被使用(重放攻击)
81
+ * @throws Nonce 格式错误或已过期
82
+ */
83
+ verifyAndRecord(nonce, did) {
84
+ // 1. 解析 nonce 格式
85
+ const parts = nonce.split(':');
86
+ if (parts.length < 2) {
87
+ return { isValid: false, error: 'Nonce 格式错误' };
88
+ }
89
+ const timestamp = parseInt(parts[0], 10);
90
+ if (isNaN(timestamp)) {
91
+ return { isValid: false, error: '无法解析时间戳' };
92
+ }
93
+ // 2. 检查时间戳是否在有效期内
94
+ const now = Math.floor(Date.now() / 1000);
95
+ if (timestamp > now) {
96
+ return { isValid: false, error: 'Nonce 时间戳在未来' };
97
+ }
98
+ if (now - timestamp > this.config.ttlSeconds) {
99
+ return { isValid: false, error: `Nonce 已过期(超过${this.config.ttlSeconds}秒)` };
100
+ }
101
+ // 3. 检查是否已被使用
102
+ if (this.usedNonces.has(nonce)) {
103
+ logger.warn(`检测到重放攻击!Nonce 已被使用: ${nonce.substring(0, 8)}...`);
104
+ return { isValid: false, error: 'Nonce 已使用(重放攻击)' };
105
+ }
106
+ // 4. 记录 nonce
107
+ const nowMs = Date.now();
108
+ const record = {
109
+ nonce,
110
+ createdAt: nowMs - (now - timestamp) * 1000,
111
+ expiresAt: nowMs + (this.config.ttlSeconds - (now - timestamp)) * 1000,
112
+ usedCount: 1,
113
+ isUsed: true,
114
+ did,
115
+ };
116
+ this.nonceCache.set(nonce, record);
117
+ this.usedNonces.add(nonce);
118
+ logger.debug(`✓ Nonce 验证通过并已记录: ${nonce.substring(0, 8)}...`);
119
+ return { isValid: true };
120
+ }
121
+ /**
122
+ * 检查 Nonce 是否已被使用
123
+ */
124
+ isUsed(nonce) {
125
+ return this.usedNonces.has(nonce);
126
+ }
127
+ /**
128
+ * 验证 Nonce
129
+ */
130
+ validateNonce(nonce) {
131
+ const record = this.nonceCache.get(nonce);
132
+ // 检查是否存在
133
+ if (!record) {
134
+ // 也检查是否已使用
135
+ if (this.usedNonces.has(nonce)) {
136
+ return {
137
+ isValid: false,
138
+ error: 'Nonce 已使用',
139
+ };
140
+ }
141
+ return {
142
+ isValid: false,
143
+ error: 'Nonce 不存在',
144
+ };
145
+ }
146
+ // 检查是否过期
147
+ if (Date.now() > record.expiresAt) {
148
+ this.nonceCache.delete(nonce);
149
+ return {
150
+ isValid: false,
151
+ error: 'Nonce 已过期',
152
+ };
153
+ }
154
+ // 检查使用次数
155
+ if (record.usedCount >= this.config.maxUsageCount) {
156
+ return {
157
+ isValid: false,
158
+ error: 'Nonce 使用次数已达上限',
159
+ };
160
+ }
161
+ return {
162
+ isValid: true,
163
+ record,
164
+ };
165
+ }
166
+ /**
167
+ * 使用 Nonce
168
+ */
169
+ useNonce(nonce) {
170
+ const result = this.validateNonce(nonce);
171
+ if (!result.isValid) {
172
+ logger.warn(`❌ 无法使用 Nonce: ${result.error}`);
173
+ return false;
174
+ }
175
+ const record = result.record;
176
+ record.usedCount += 1;
177
+ if (record.usedCount >= this.config.maxUsageCount) {
178
+ record.isUsed = true;
179
+ this.usedNonces.add(nonce);
180
+ }
181
+ logger.debug(`✓ Nonce 已使用: ${nonce.substring(0, 8)}...`);
182
+ return true;
183
+ }
184
+ /**
185
+ * 检查 Nonce 是否已使用
186
+ */
187
+ isNonceUsed(nonce) {
188
+ const record = this.nonceCache.get(nonce);
189
+ return record ? record.isUsed : this.usedNonces.has(nonce);
190
+ }
191
+ /**
192
+ * 获取 Nonce 信息
193
+ */
194
+ getNonceInfo(nonce) {
195
+ return this.nonceCache.get(nonce) || null;
196
+ }
197
+ /**
198
+ * 创建验证请求(生成带时间戳的 Nonce)
199
+ */
200
+ createVerificationRequest(clientId, action) {
201
+ const nonce = this.generateNonce();
202
+ const timestamp = Date.now();
203
+ // 创建签名(简化版本,实际应使用密钥签名)
204
+ const signature = this.createSignature(clientId, action, nonce, timestamp);
205
+ return {
206
+ nonce,
207
+ timestamp,
208
+ signature,
209
+ };
210
+ }
211
+ /**
212
+ * 验证请求(验证带时间戳的 Nonce)
213
+ */
214
+ validateRequest(clientId, action, nonce, timestamp, signature) {
215
+ // 验证时间戳(允许 ±5 分钟误差)
216
+ const timeDiff = Math.abs(Date.now() - timestamp);
217
+ if (timeDiff > 5 * 60 * 1000) {
218
+ return {
219
+ isValid: false,
220
+ error: '请求时间戳无效',
221
+ };
222
+ }
223
+ // 验证 Nonce
224
+ const nonceResult = this.validateNonce(nonce);
225
+ if (!nonceResult.isValid) {
226
+ return nonceResult;
227
+ }
228
+ // 验证签名
229
+ const expectedSignature = this.createSignature(clientId, action, nonce, timestamp);
230
+ if (signature !== expectedSignature) {
231
+ return {
232
+ isValid: false,
233
+ error: '签名验证失败',
234
+ };
235
+ }
236
+ return {
237
+ isValid: true,
238
+ record: nonceResult.record,
239
+ };
240
+ }
241
+ /**
242
+ * 创建签名
243
+ */
244
+ createSignature(clientId, action, nonce, timestamp) {
245
+ const data = `${clientId}:${action}:${nonce}:${timestamp}`;
246
+ return this.hashString(data);
247
+ }
248
+ /**
249
+ * 哈希字符串
250
+ */
251
+ hashString(data) {
252
+ let hash = 0;
253
+ for (let i = 0; i < data.length; i++) {
254
+ const char = data.charCodeAt(i);
255
+ hash = (hash << 5) - hash + char;
256
+ hash = hash & hash;
257
+ }
258
+ return Math.abs(hash).toString(16).padStart(16, '0');
259
+ }
260
+ /**
261
+ * 生成安全的随机字符串
262
+ */
263
+ generateSecureRandomString(length) {
264
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
265
+ let result = '';
266
+ // 使用 crypto 获取随机字节
267
+ const randomBytes = new Uint8Array(length);
268
+ if (typeof globalThis.crypto !== 'undefined' && globalThis.crypto.getRandomValues) {
269
+ globalThis.crypto.getRandomValues(randomBytes);
270
+ }
271
+ else {
272
+ // 回退到 Math.random
273
+ for (let i = 0; i < length; i++) {
274
+ randomBytes[i] = Math.floor(Math.random() * 256);
275
+ }
276
+ }
277
+ for (let i = 0; i < length; i++) {
278
+ result += chars[randomBytes[i] % chars.length];
279
+ }
280
+ return result;
281
+ }
282
+ /**
283
+ * 驱逐最旧的 Nonce
284
+ */
285
+ evictOldest() {
286
+ let oldestNonce = null;
287
+ let oldestTime = Date.now();
288
+ for (const [nonce, record] of this.nonceCache.entries()) {
289
+ if (record.createdAt < oldestTime) {
290
+ oldestTime = record.createdAt;
291
+ oldestNonce = nonce;
292
+ }
293
+ }
294
+ if (oldestNonce) {
295
+ this.nonceCache.delete(oldestNonce);
296
+ logger.debug(`驱逐最旧 Nonce: ${oldestNonce.substring(0, 8)}...`);
297
+ }
298
+ }
299
+ /**
300
+ * 清理过期 Nonce
301
+ */
302
+ cleanupExpired() {
303
+ const now = Date.now();
304
+ let removed = 0;
305
+ for (const [nonce, record] of this.nonceCache.entries()) {
306
+ if (now > record.expiresAt) {
307
+ this.nonceCache.delete(nonce);
308
+ removed++;
309
+ }
310
+ }
311
+ if (removed > 0) {
312
+ logger.debug(`🧹 清理了 ${removed} 个过期 Nonce`);
313
+ }
314
+ return removed;
315
+ }
316
+ /**
317
+ * 启动清理任务
318
+ */
319
+ startCleanupTask() {
320
+ setInterval(() => {
321
+ this.cleanupExpired();
322
+ }, this.cleanupIntervalMs);
323
+ }
324
+ /**
325
+ * 获取缓存大小
326
+ */
327
+ getCacheSize() {
328
+ return this.nonceCache.size;
329
+ }
330
+ /**
331
+ * 获取已使用 Nonce 数量
332
+ */
333
+ getUsedCount() {
334
+ return this.usedNonces.size;
335
+ }
336
+ /**
337
+ * 清空所有 Nonce
338
+ */
339
+ clear() {
340
+ this.nonceCache.clear();
341
+ this.usedNonces.clear();
342
+ logger.info('🧹 已清空所有 Nonce');
343
+ }
344
+ /**
345
+ * 获取统计信息
346
+ */
347
+ getStats() {
348
+ const activeCount = Array.from(this.nonceCache.values()).filter((r) => !r.isUsed && Date.now() < r.expiresAt).length;
349
+ return {
350
+ cacheSize: this.nonceCache.size,
351
+ usedCount: this.usedNonces.size,
352
+ activeCount,
353
+ };
354
+ }
355
+ }
356
+ // ============================================================================
357
+ // 便捷函数
358
+ // ============================================================================
359
+ /**
360
+ * 创建 Nonce 管理器(便捷函数)
361
+ */
362
+ export function createNonceManager(config) {
363
+ return new NonceManager(config);
364
+ }
365
+ // ============================================================================
366
+ // 全局单例
367
+ // ============================================================================
368
+ let globalNonceManager = null;
369
+ /**
370
+ * 获取全局 Nonce 管理器
371
+ */
372
+ export function getGlobalNonceManager() {
373
+ if (!globalNonceManager) {
374
+ globalNonceManager = new NonceManager();
375
+ }
376
+ return globalNonceManager;
377
+ }
378
+ // ============================================================================
379
+ // 导出
380
+ // ============================================================================
381
+ // 注意: NonceRecord, NonceManagerConfig, NonceValidationResult 已在声明时导出
382
+ //# sourceMappingURL=nonce-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce-manager.js","sourceRoot":"","sources":["../src/nonce-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * DIAP TypeScript SDK - Hyperswarm P2P 通信器
3
+ *
4
+ * 使用 Hyperswarm 实现轻量级 P2P 网络
5
+ *
6
+ * 安装: npm install hyperswarm
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import Hyperswarm from 'hyperswarm';
11
+ *
12
+ * const swarm = new Hyperswarm();
13
+ * const topic = Buffer.alloc(32).fill('hello-world');
14
+ * swarm.join(topic, { server: true, client: true });
15
+ *
16
+ * swarm.on('connection', (conn, info) => {
17
+ * console.log('新连接:', info.publicKey.toString('hex'));
18
+ * conn.write('hello from TS!');
19
+ * conn.on('data', data => console.log('收到:', data.toString()));
20
+ * });
21
+ * ```
22
+ */
23
+ /**
24
+ * P2P 消息类型
25
+ */
26
+ export declare enum P2PMessageType {
27
+ /** 身份验证请求 */
28
+ AuthRequest = "auth_request",
29
+ /** 身份验证响应 */
30
+ AuthResponse = "auth_response",
31
+ /** 数据消息 */
32
+ Data = "data",
33
+ /** 心跳 */
34
+ Heartbeat = "heartbeat",
35
+ /** 自定义 */
36
+ Custom = "custom"
37
+ }
38
+ /**
39
+ * Hyperswarm 配置
40
+ */
41
+ export interface HyperswarmConfig {
42
+ /** 是否作为服务器 */
43
+ server?: boolean;
44
+ /** 是否作为客户端 */
45
+ client?: boolean;
46
+ /** 是否自动连接 */
47
+ autoConnect?: boolean;
48
+ /** 最大连接数 */
49
+ maxConnections?: number;
50
+ /** 种子节点 */
51
+ seed?: Buffer[];
52
+ /** 启用多路复用 */
53
+ multiplex?: boolean;
54
+ }
55
+ /**
56
+ * P2P 连接信息
57
+ */
58
+ export interface P2PConnection {
59
+ /** 连接 ID */
60
+ id: string;
61
+ /** 对方公钥 */
62
+ publicKey: string;
63
+ /** 是否是入站连接 */
64
+ isInbound: boolean;
65
+ /** 连接建立时间 */
66
+ connectedAt: number;
67
+ /** 最后活动时间 */
68
+ lastActivity: number;
69
+ /** 已发送字节数 */
70
+ bytesSent: number;
71
+ /** 已接收字节数 */
72
+ bytesReceived: number;
73
+ }
74
+ /**
75
+ * P2P 节点地址
76
+ */
77
+ export interface P2PNodeAddr {
78
+ /** 公钥(hex 编码) */
79
+ publicKey: string;
80
+ /** 主题列表 */
81
+ topics: string[];
82
+ /** 连接地址 */
83
+ relayAddresses?: string[];
84
+ }
85
+ /**
86
+ * P2P 消息
87
+ */
88
+ export interface P2PMessage {
89
+ /** 消息 ID */
90
+ id: string;
91
+ /** 消息类型 */
92
+ type: P2PMessageType;
93
+ /** 发送者公钥 */
94
+ fromPublicKey: string;
95
+ /** 接收者公钥(可选) */
96
+ toPublicKey?: string;
97
+ /** 消息内容 */
98
+ content: Uint8Array;
99
+ /** 时间戳 */
100
+ timestamp: number;
101
+ /** 签名 */
102
+ signature?: Uint8Array;
103
+ }
104
+ /**
105
+ * P2P 消息签名数据
106
+ */
107
+ export interface P2PMessageSignature {
108
+ /** 签名者公钥 */
109
+ signerPublicKey: string;
110
+ /** 消息哈希 */
111
+ messageHash: string;
112
+ /** 签名 */
113
+ signature: Uint8Array;
114
+ /** 时间戳 */
115
+ timestamp: number;
116
+ }
117
+ /**
118
+ * Hyperswarm P2P 通信器事件
119
+ */
120
+ export interface HyperswarmEvents {
121
+ /** 新连接事件 */
122
+ connection: (conn: P2PConnection, info: {
123
+ publicKey: Buffer;
124
+ }) => void;
125
+ /** 错误事件 */
126
+ error: (error: Error) => void;
127
+ /** 主题加入事件 */
128
+ topic: (topic: Buffer) => void;
129
+ /** 消息事件 */
130
+ message: (message: P2PMessage, conn: P2PConnection) => void;
131
+ }
132
+ /**
133
+ * Hyperswarm P2P 通信器
134
+ *
135
+ * 基于 Hyperswarm 实现轻量级 P2P 网络
136
+ * 专注于快速节点发现和加密连接
137
+ */
138
+ export declare class HyperswarmCommunicator {
139
+ private config;
140
+ private swarm;
141
+ private connections;
142
+ private topics;
143
+ private isRunning;
144
+ private eventHandlers;
145
+ private localPublicKey;
146
+ /**
147
+ * 创建 Hyperswarm P2P 通信器
148
+ */
149
+ constructor(config?: HyperswarmConfig);
150
+ /**
151
+ * 启动 P2P 网络
152
+ */
153
+ start(): Promise<void>;
154
+ /**
155
+ * 停止 P2P 网络
156
+ */
157
+ stop(): Promise<void>;
158
+ /**
159
+ * 加入主题
160
+ * @param topic - 32 字节主题 Buffer
161
+ */
162
+ joinTopic(topic: Buffer | string): Promise<void>;
163
+ /**
164
+ * 离开主题
165
+ */
166
+ leaveTopic(topic: Buffer | string): Promise<void>;
167
+ /**
168
+ * 连接到节点
169
+ */
170
+ connect(publicKey: Buffer | string): Promise<P2PConnection>;
171
+ /**
172
+ * 关闭连接
173
+ */
174
+ closeConnection(connectionId: string): Promise<void>;
175
+ /**
176
+ * 发送消息到连接
177
+ */
178
+ sendToConnection(connectionId: string, data: Uint8Array | string): Promise<void>;
179
+ /**
180
+ * 广播消息到所有连接
181
+ */
182
+ broadcast(data: Uint8Array | string): Promise<void>;
183
+ /**
184
+ * 获取所有连接
185
+ */
186
+ getConnections(): P2PConnection[];
187
+ /**
188
+ * 获取连接数
189
+ */
190
+ getConnectionCount(): number;
191
+ /**
192
+ * 获取本地公钥
193
+ */
194
+ getLocalPublicKey(): string | null;
195
+ /**
196
+ * 是否正在运行
197
+ */
198
+ isActive(): boolean;
199
+ /**
200
+ * 获取配置
201
+ */
202
+ getConfig(): HyperswarmConfig;
203
+ /**
204
+ * 注册事件处理器
205
+ */
206
+ on<K extends keyof HyperswarmEvents>(event: K, handler: HyperswarmEvents[K]): void;
207
+ /**
208
+ * 移除事件处理器
209
+ */
210
+ off<K extends keyof HyperswarmEvents>(event: K, handler: HyperswarmEvents[K]): void;
211
+ /**
212
+ * 触发事件
213
+ */
214
+ private emit;
215
+ /**
216
+ * 设置连接处理器
217
+ */
218
+ private setupConnectionHandlers;
219
+ /**
220
+ * 设置流处理器
221
+ */
222
+ private setupStreamHandlers;
223
+ /**
224
+ * 生成唯一 ID
225
+ */
226
+ private generateId;
227
+ /**
228
+ * 对消息内容进行签名
229
+ */
230
+ signMessage(content: Uint8Array, privateKey: Uint8Array): Promise<Uint8Array>;
231
+ /**
232
+ * 验证消息签名
233
+ */
234
+ verifyMessageSignature(content: Uint8Array, signature: Uint8Array, publicKey: Uint8Array): Promise<boolean>;
235
+ /**
236
+ * 创建签名消息
237
+ */
238
+ createSignedMessage(type: P2PMessageType, content: Uint8Array, fromPublicKey: string, toPublicKey: string | undefined, privateKey: Uint8Array): Promise<P2PMessage>;
239
+ /**
240
+ * 验证并解析签名消息
241
+ */
242
+ verifySignedMessage(message: P2PMessage, senderPublicKey: Uint8Array): Promise<boolean>;
243
+ }
244
+ /**
245
+ * 创建 Hyperswarm P2P 通信器
246
+ */
247
+ export declare function createHyperswarmCommunicator(config?: HyperswarmConfig): HyperswarmCommunicator;
248
+ /**
249
+ * 从主题字符串创建 32 字节 Buffer
250
+ */
251
+ export declare function createTopic(topic: string): Buffer;
252
+ //# sourceMappingURL=hyperswarm-communicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperswarm-communicator.d.ts","sourceRoot":"","sources":["../../src/p2p/hyperswarm-communicator.ts"],"names":[],"mappings":"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"}