@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 @@
1
+ {"version":3,"file":"kubo-installer.d.ts","sourceRoot":"","sources":["../src/kubo-installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,SAAS;IACT,OAAO,YAAY;IACnB,UAAU;IACV,QAAQ,aAAa;IACrB,UAAU;IACV,SAAS,cAAc;IACvB,UAAU;IACV,WAAW,gBAAgB;IAC3B,UAAU;IACV,UAAU,eAAe;IACzB,WAAW;IACX,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAS;IAErB;;OAEG;gBACS,MAAM,CAAC,EAAE,mBAAmB;IAiBxC;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/C;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASjD;;OAEG;IACU,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoCnD;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ1C;;OAEG;IACI,cAAc,IAAI,MAAM;IAQ/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAc5B;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,UAAU;CAenB;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAE/E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAGxD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAG3F"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * DIAP TypeScript SDK - Kubo 安装器
3
+ * 自动下载和安装 Kubo(Go-IPFS)二进制文件
4
+ */
5
+ import { logger } from './utils/logger.js';
6
+ /**
7
+ * Kubo 安装状态
8
+ */
9
+ export var InstallationStatus;
10
+ (function (InstallationStatus) {
11
+ /** 未知 */
12
+ InstallationStatus["Unknown"] = "unknown";
13
+ /** 检查中 */
14
+ InstallationStatus["Checking"] = "checking";
15
+ /** 已安装 */
16
+ InstallationStatus["Installed"] = "installed";
17
+ /** 下载中 */
18
+ InstallationStatus["Downloading"] = "downloading";
19
+ /** 安装中 */
20
+ InstallationStatus["Installing"] = "installing";
21
+ /** 安装失败 */
22
+ InstallationStatus["Failed"] = "failed";
23
+ })(InstallationStatus || (InstallationStatus = {}));
24
+ /**
25
+ * Kubo 安装器
26
+ */
27
+ export class KuboInstaller {
28
+ config;
29
+ platform;
30
+ arch;
31
+ /**
32
+ * 创建 Kubo 安装器
33
+ */
34
+ constructor(config) {
35
+ this.config = {
36
+ installDir: config?.installDir || this.getDefaultInstallDir(),
37
+ forceReinstall: config?.forceReinstall || false,
38
+ downloadTimeout: config?.downloadTimeout || 300000, // 5 分钟
39
+ proxyUrl: config?.proxyUrl || '',
40
+ };
41
+ // 检测平台
42
+ this.platform = this.detectPlatform();
43
+ this.arch = this.detectArch();
44
+ logger.info(`🔧 Kubo 安装器已创建`);
45
+ logger.info(` 平台: ${this.platform}/${this.arch}`);
46
+ logger.info(` 安装目录: ${this.config.installDir}`);
47
+ }
48
+ /**
49
+ * 检查 Kubo 是否已安装
50
+ */
51
+ async checkInstalled() {
52
+ logger.info('🔍 检查 Kubo 安装状态...');
53
+ // 在 TypeScript 环境中,我们无法直接检查文件系统
54
+ // 这里返回 false,让调用者决定是否安装
55
+ logger.info('⚠️ 无法在浏览器环境中检查 Kubo 安装状态');
56
+ return false;
57
+ }
58
+ /**
59
+ * 获取 Kubo 版本
60
+ */
61
+ async getVersion() {
62
+ logger.info('🔍 获取 Kubo 版本...');
63
+ // 在 TypeScript 环境中,我们无法执行系统命令
64
+ // 这里返回 null
65
+ logger.info('⚠️ 无法在浏览器环境中获取 Kubo 版本');
66
+ return null;
67
+ }
68
+ /**
69
+ * 安装 Kubo
70
+ */
71
+ async install() {
72
+ logger.info('🚀 开始安装 Kubo...');
73
+ try {
74
+ // 检查是否已安装
75
+ const isInstalled = await this.checkInstalled();
76
+ if (isInstalled && !this.config.forceReinstall) {
77
+ const version = await this.getVersion();
78
+ return {
79
+ success: true,
80
+ path: 'kubo',
81
+ version: version || undefined,
82
+ };
83
+ }
84
+ // 获取下载链接
85
+ const downloadUrl = this.getDownloadUrl();
86
+ logger.info(`📥 下载链接: ${downloadUrl}`);
87
+ // 下载(简化版本 - 在实际环境中需要使用 fetch 或其他下载方式)
88
+ logger.info('⚠️ 在浏览器环境中无法自动下载 Kubo');
89
+ logger.info(' 请手动下载并安装 Kubo: https://github.com/ipfs/kubo/releases');
90
+ return {
91
+ success: false,
92
+ error: '浏览器环境中无法自动安装 Kubo,请手动安装',
93
+ };
94
+ }
95
+ catch (error) {
96
+ logger.error(`❌ Kubo 安装失败: ${error}`);
97
+ return {
98
+ success: false,
99
+ error: error instanceof Error ? error.message : '未知错误',
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * 卸载 Kubo
105
+ */
106
+ async uninstall() {
107
+ logger.info('🧹 尝试卸载 Kubo...');
108
+ // 在 TypeScript 环境中,我们无法删除系统文件
109
+ logger.info('⚠️ 在浏览器环境中无法卸载 Kubo');
110
+ return false;
111
+ }
112
+ /**
113
+ * 获取下载链接
114
+ */
115
+ getDownloadUrl() {
116
+ const version = 'v0.28.0'; // 默认版本
117
+ const ext = this.platform === 'windows' ? '.zip' : '.tar.gz';
118
+ const binary = this.platform === 'windows' ? 'ipfs.exe' : 'ipfs';
119
+ return `https://github.com/ipfs/kubo/releases/download/${version}/kubo_${this.platform}-${this.arch}${ext}`;
120
+ }
121
+ /**
122
+ * 获取默认安装目录
123
+ */
124
+ getDefaultInstallDir() {
125
+ // 尝试检测系统类型
126
+ if (typeof navigator !== 'undefined' && navigator.platform) {
127
+ if (navigator.platform.includes('Win')) {
128
+ return 'C:\\Program Files\\Kubo';
129
+ }
130
+ else if (navigator.platform.includes('Mac')) {
131
+ return '/usr/local/bin';
132
+ }
133
+ else if (navigator.platform.includes('Linux')) {
134
+ return '/usr/local/bin';
135
+ }
136
+ }
137
+ return './bin';
138
+ }
139
+ /**
140
+ * 检测平台
141
+ */
142
+ detectPlatform() {
143
+ if (typeof navigator !== 'undefined' && navigator.platform) {
144
+ const platform = navigator.platform.toLowerCase();
145
+ if (platform.includes('win') || platform.includes('nt')) {
146
+ return 'windows';
147
+ }
148
+ else if (platform.includes('mac') || platform.includes('darwin')) {
149
+ return 'darwin';
150
+ }
151
+ else if (platform.includes('linux')) {
152
+ return 'linux';
153
+ }
154
+ }
155
+ return 'linux'; // 默认
156
+ }
157
+ /**
158
+ * 检测架构
159
+ */
160
+ detectArch() {
161
+ if (typeof navigator !== 'undefined' && navigator.userAgent) {
162
+ const ua = navigator.userAgent.toLowerCase();
163
+ if (ua.includes('arm64') || ua.includes('aarch64')) {
164
+ return 'arm64';
165
+ }
166
+ else if (ua.includes('x64') || ua.includes('amd64')) {
167
+ return 'amd64';
168
+ }
169
+ else if (ua.includes('x86') || ua.includes('ia32')) {
170
+ return '386';
171
+ }
172
+ else if (ua.includes('arm')) {
173
+ return 'arm';
174
+ }
175
+ }
176
+ return 'amd64'; // 默认
177
+ }
178
+ }
179
+ // ============================================================================
180
+ // 便捷函数
181
+ // ============================================================================
182
+ /**
183
+ * 创建 Kubo 安装器
184
+ */
185
+ export function createKuboInstaller(config) {
186
+ return new KuboInstaller(config);
187
+ }
188
+ /**
189
+ * 检查 Kubo 是否已安装
190
+ */
191
+ export async function isKuboInstalled() {
192
+ const installer = new KuboInstaller();
193
+ return installer.checkInstalled();
194
+ }
195
+ /**
196
+ * 安装 Kubo
197
+ */
198
+ export async function installKubo(config) {
199
+ const installer = new KuboInstaller(config);
200
+ return installer.install();
201
+ }
202
+ // ============================================================================
203
+ // 导出
204
+ // ============================================================================
205
+ //# sourceMappingURL=kubo-installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kubo-installer.js","sourceRoot":"","sources":["../src/kubo-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * PeerID 加密工具
3
+ * 使用 Ed25519 私钥派生 AES-256 密钥加密 PeerID
4
+ * 基于 Rust SDK 的实现逻辑
5
+ */
6
+ import type { EncryptedPeerID } from '../types/did.js';
7
+ /**
8
+ * 加密 PeerID
9
+ * 使用 Ed25519 私钥派生 AES-256 密钥加密 PeerID
10
+ */
11
+ export declare function encryptPeerId(signingKey: Uint8Array, peerId: string): EncryptedPeerID;
12
+ /**
13
+ * 使用密钥解密 PeerID
14
+ */
15
+ export declare function decryptPeerIdWithSecret(signingKey: Uint8Array, encrypted: EncryptedPeerID): string;
16
+ /**
17
+ * 验证 PeerID 签名
18
+ */
19
+ export declare function verifyPeerIdSignature(verifyingKey: Uint8Array, encrypted: EncryptedPeerID, _claimedPeerId: string): boolean;
20
+ /**
21
+ * 验证 PeerID 所有权(通过签名)
22
+ */
23
+ export declare function verifyEncryptedPeerIdOwnership(verifyingKey: Uint8Array, encrypted: EncryptedPeerID, claimedPeerId: string): boolean;
24
+ //# sourceMappingURL=encrypted-peer-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypted-peer-id.d.ts","sourceRoot":"","sources":["../../src/libp2p/encrypted-peer-id.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAmBvD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CA6BrF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,eAAe,GACzB,MAAM,CAoCR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,eAAe,EAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAqBT;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,UAAU,EACxB,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAIT"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * PeerID 加密工具
3
+ * 使用 Ed25519 私钥派生 AES-256 密钥加密 PeerID
4
+ * 基于 Rust SDK 的实现逻辑
5
+ */
6
+ import * as ed25519 from '@noble/ed25519';
7
+ import { sha256 } from '@noble/hashes/sha256';
8
+ import { KeyManagementError } from '../types/errors.js';
9
+ import { logger } from '../utils/logger.js';
10
+ /**
11
+ * 从 Ed25519 私钥派生 AES-256 密钥
12
+ */
13
+ function deriveAesKeyFromEd25519(signingKey) {
14
+ const keyMaterial = signingKey;
15
+ const info = new TextEncoder().encode('DIAP_AES_KEY_V3');
16
+ const combined = new Uint8Array(keyMaterial.length + info.length);
17
+ combined.set(keyMaterial, 0);
18
+ combined.set(info, keyMaterial.length);
19
+ const hash = sha256(combined);
20
+ return hash;
21
+ }
22
+ /**
23
+ * 加密 PeerID
24
+ * 使用 Ed25519 私钥派生 AES-256 密钥加密 PeerID
25
+ */
26
+ export function encryptPeerId(signingKey, peerId) {
27
+ if (signingKey.length !== 32) {
28
+ throw new KeyManagementError('Signing key must be 32 bytes');
29
+ }
30
+ const aesKey = deriveAesKeyFromEd25519(signingKey);
31
+ const peerIdBytes = new TextEncoder().encode(peerId);
32
+ const { ciphertext, nonce } = aesGcmEncrypt(peerIdBytes, aesKey);
33
+ const sigData = new Uint8Array(ciphertext.length + nonce.length);
34
+ sigData.set(ciphertext, 0);
35
+ sigData.set(nonce, ciphertext.length);
36
+ const signature = ed25519.signSync(sigData, signingKey);
37
+ logger.debug('✓ PeerID已加密(AES-256-GCM)');
38
+ logger.debug(` 原始PeerID: ${peerId}`);
39
+ logger.debug(` 密文长度: ${ciphertext.length} 字节`);
40
+ logger.debug(` Nonce长度: ${nonce.length} 字节`);
41
+ logger.debug(` 签名长度: ${signature.length} 字节`);
42
+ return {
43
+ ciphertext,
44
+ nonce,
45
+ signature,
46
+ method: 'AES-256-GCM-Ed25519-V3',
47
+ };
48
+ }
49
+ /**
50
+ * 使用密钥解密 PeerID
51
+ */
52
+ export function decryptPeerIdWithSecret(signingKey, encrypted) {
53
+ logger.info('🔓 解密PeerID(持有私钥)');
54
+ if (signingKey.length !== 32) {
55
+ throw new KeyManagementError('Signing key must be 32 bytes');
56
+ }
57
+ try {
58
+ const sigData = new Uint8Array(encrypted.ciphertext.length + encrypted.nonce.length);
59
+ sigData.set(encrypted.ciphertext, 0);
60
+ sigData.set(encrypted.nonce, encrypted.ciphertext.length);
61
+ const publicKey = ed25519.getPublicKey(signingKey);
62
+ const isValid = ed25519.verifySync(encrypted.signature, sigData, publicKey);
63
+ if (!isValid) {
64
+ throw new KeyManagementError('签名验证失败:数据可能被篡改');
65
+ }
66
+ logger.debug('✓ 签名验证通过');
67
+ const aesKey = deriveAesKeyFromEd25519(signingKey);
68
+ const plaintext = aesGcmDecrypt(encrypted.ciphertext, aesKey, encrypted.nonce);
69
+ const peerId = new TextDecoder().decode(plaintext);
70
+ logger.info('✓ PeerID解密成功');
71
+ logger.debug(` 解密的PeerID: ${peerId}`);
72
+ return peerId;
73
+ }
74
+ catch (error) {
75
+ if (error instanceof KeyManagementError) {
76
+ throw error;
77
+ }
78
+ throw new KeyManagementError('Failed to decrypt PeerID', { originalError: error });
79
+ }
80
+ }
81
+ /**
82
+ * 验证 PeerID 签名
83
+ */
84
+ export function verifyPeerIdSignature(verifyingKey, encrypted, _claimedPeerId) {
85
+ logger.info('验证PeerID签名(公开验证)');
86
+ try {
87
+ const sigData = new Uint8Array(encrypted.ciphertext.length + encrypted.nonce.length);
88
+ sigData.set(encrypted.ciphertext, 0);
89
+ sigData.set(encrypted.nonce, encrypted.ciphertext.length);
90
+ const isValid = ed25519.verifySync(encrypted.signature, sigData, verifyingKey);
91
+ if (isValid) {
92
+ logger.info('✓ PeerID签名验证通过');
93
+ return true;
94
+ }
95
+ else {
96
+ logger.warn('PeerID签名验证失败');
97
+ return false;
98
+ }
99
+ }
100
+ catch (error) {
101
+ logger.warn('PeerID签名验证失败', { error });
102
+ return false;
103
+ }
104
+ }
105
+ /**
106
+ * 验证 PeerID 所有权(通过签名)
107
+ */
108
+ export function verifyEncryptedPeerIdOwnership(verifyingKey, encrypted, claimedPeerId) {
109
+ logger.info('验证PeerID所有权(通过签名)');
110
+ return verifyPeerIdSignature(verifyingKey, encrypted, claimedPeerId);
111
+ }
112
+ /**
113
+ * AES-256-GCM 加密
114
+ */
115
+ function aesGcmEncrypt(plaintext, key) {
116
+ const crypto = require('crypto');
117
+ const nonce = crypto.randomBytes(12);
118
+ const cipher = crypto.createCipheriv('aes-256-gcm', key, nonce);
119
+ const ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
120
+ return {
121
+ ciphertext: new Uint8Array(ciphertext),
122
+ nonce: new Uint8Array(nonce),
123
+ };
124
+ }
125
+ /**
126
+ * AES-256-GCM 解密
127
+ */
128
+ function aesGcmDecrypt(ciphertext, key, nonce) {
129
+ const crypto = require('crypto');
130
+ const decipher = crypto.createDecipheriv('aes-256-gcm', key, nonce);
131
+ const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
132
+ return new Uint8Array(plaintext);
133
+ }
134
+ //# sourceMappingURL=encrypted-peer-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypted-peer-id.js","sourceRoot":"","sources":["../../src/libp2p/encrypted-peer-id.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * DIAP TypeScript SDK - Nonce 管理器
3
+ * 生成和管理随机数,用于防重放攻击
4
+ */
5
+ /**
6
+ * Nonce 记录
7
+ */
8
+ export interface NonceRecord {
9
+ /** Nonce 值 */
10
+ nonce: string;
11
+ /** 创建时间 */
12
+ createdAt: number;
13
+ /** 过期时间 */
14
+ expiresAt: number;
15
+ /** 使用次数 */
16
+ usedCount: number;
17
+ /** 是否已使用 */
18
+ isUsed: boolean;
19
+ /** 关联的 DID */
20
+ did?: string;
21
+ }
22
+ /**
23
+ * Nonce 验证结果
24
+ */
25
+ export interface NonceVerifyResult {
26
+ /** 是否有效 */
27
+ isValid: boolean;
28
+ /** 错误信息 */
29
+ error?: string;
30
+ }
31
+ /**
32
+ * Nonce 管理器配置
33
+ */
34
+ export interface NonceManagerConfig {
35
+ /** Nonce 长度(字节) */
36
+ nonceLength?: number;
37
+ /** 过期时间(秒) */
38
+ ttlSeconds?: number;
39
+ /** 最大使用次数 */
40
+ maxUsageCount?: number;
41
+ /** 最大缓存数量 */
42
+ maxCacheSize?: number;
43
+ }
44
+ /**
45
+ * Nonce 验证结果
46
+ */
47
+ export interface NonceValidationResult {
48
+ /** 是否有效 */
49
+ isValid: boolean;
50
+ /** 错误信息 */
51
+ error?: string;
52
+ /** Nonce 记录 */
53
+ record?: NonceRecord;
54
+ }
55
+ /**
56
+ * Nonce 管理器
57
+ */
58
+ export declare class NonceManager {
59
+ /** 配置 */
60
+ private config;
61
+ /** Nonce 缓存 */
62
+ private nonceCache;
63
+ /** 已使用的 Nonce 集合(用于快速查找) */
64
+ private usedNonces;
65
+ /** 清理间隔(毫秒) */
66
+ private cleanupIntervalMs;
67
+ /**
68
+ * 创建 Nonce 管理器
69
+ */
70
+ constructor(config?: NonceManagerConfig);
71
+ /**
72
+ * 生成新的 Nonce(静态方法,格式: timestamp:uuid:random)
73
+ */
74
+ static generateNonce(): string;
75
+ /**
76
+ * 生成 fallback UUID
77
+ */
78
+ private static generateFallbackUuid;
79
+ /**
80
+ * 生成新的 Nonce
81
+ */
82
+ generateNonce(): string;
83
+ /**
84
+ * 验证并记录 Nonce(原子操作)
85
+ *
86
+ * @returns true - Nonce 有效且未被使用
87
+ * @returns false - Nonce 已被使用(重放攻击)
88
+ * @throws Nonce 格式错误或已过期
89
+ */
90
+ verifyAndRecord(nonce: string, did: string): NonceVerifyResult;
91
+ /**
92
+ * 检查 Nonce 是否已被使用
93
+ */
94
+ isUsed(nonce: string): boolean;
95
+ /**
96
+ * 验证 Nonce
97
+ */
98
+ validateNonce(nonce: string): NonceValidationResult;
99
+ /**
100
+ * 使用 Nonce
101
+ */
102
+ useNonce(nonce: string): boolean;
103
+ /**
104
+ * 检查 Nonce 是否已使用
105
+ */
106
+ isNonceUsed(nonce: string): boolean;
107
+ /**
108
+ * 获取 Nonce 信息
109
+ */
110
+ getNonceInfo(nonce: string): NonceRecord | null;
111
+ /**
112
+ * 创建验证请求(生成带时间戳的 Nonce)
113
+ */
114
+ createVerificationRequest(clientId: string, action: string): {
115
+ nonce: string;
116
+ timestamp: number;
117
+ signature: string;
118
+ };
119
+ /**
120
+ * 验证请求(验证带时间戳的 Nonce)
121
+ */
122
+ validateRequest(clientId: string, action: string, nonce: string, timestamp: number, signature: string): NonceValidationResult;
123
+ /**
124
+ * 创建签名
125
+ */
126
+ private createSignature;
127
+ /**
128
+ * 哈希字符串
129
+ */
130
+ private hashString;
131
+ /**
132
+ * 生成安全的随机字符串
133
+ */
134
+ private generateSecureRandomString;
135
+ /**
136
+ * 驱逐最旧的 Nonce
137
+ */
138
+ private evictOldest;
139
+ /**
140
+ * 清理过期 Nonce
141
+ */
142
+ cleanupExpired(): number;
143
+ /**
144
+ * 启动清理任务
145
+ */
146
+ private startCleanupTask;
147
+ /**
148
+ * 获取缓存大小
149
+ */
150
+ getCacheSize(): number;
151
+ /**
152
+ * 获取已使用 Nonce 数量
153
+ */
154
+ getUsedCount(): number;
155
+ /**
156
+ * 清空所有 Nonce
157
+ */
158
+ clear(): void;
159
+ /**
160
+ * 获取统计信息
161
+ */
162
+ getStats(): {
163
+ cacheSize: number;
164
+ usedCount: number;
165
+ activeCount: number;
166
+ };
167
+ }
168
+ /**
169
+ * 创建 Nonce 管理器(便捷函数)
170
+ */
171
+ export declare function createNonceManager(config?: NonceManagerConfig): NonceManager;
172
+ /**
173
+ * 获取全局 Nonce 管理器
174
+ */
175
+ export declare function getGlobalNonceManager(): NonceManager;
176
+ //# sourceMappingURL=nonce-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nonce-manager.d.ts","sourceRoot":"","sources":["../src/nonce-manager.ts"],"names":[],"mappings":"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"}