@agentunion/fastaun-browser 0.2.19 → 0.3.0

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 (184) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/_packed_docs/CHANGELOG.md +50 -0
  3. package/_packed_docs/agent.md/SCHEMA.md +173 -0
  4. package/_packed_docs/agent.md/examples/codeagent-claudecode.md +61 -0
  5. package/_packed_docs/agent.md/examples/human-developer.md +60 -0
  6. package/_packed_docs/agent.md/examples/openclaw-lobster.md +52 -0
  7. package/_packed_docs/agent.md/examples/signed-openclaw-lobster.md +43 -0
  8. package/_packed_docs/protocol/00-/346/200/273/350/247/210/344/270/216/345/210/206/345/261/202.md +205 -0
  9. package/_packed_docs/protocol/00A-/350/256/276/350/256/241/345/216/237/345/210/231-/344/270/272Agent/350/200/214/347/224/237.md +197 -0
  10. package/_packed_docs/protocol/01-/350/272/253/344/273/275/344/270/216/345/207/255/350/257/201/345/215/217/350/256/256-auth.md +549 -0
  11. package/_packed_docs/protocol/02-/350/257/201/344/271/246/344/270/216/344/277/241/344/273/273/344/275/223/347/263/273.md +810 -0
  12. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +262 -0
  13. package/_packed_docs/protocol/04-Peer-/345/255/220/345/215/217/350/256/256.md +180 -0
  14. package/_packed_docs/protocol/05-Relay-/345/255/220/345/215/217/350/256/256.md +164 -0
  15. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1135 -0
  16. package/_packed_docs/protocol/07-/351/224/231/350/257/257/347/240/201/344/270/216/347/212/266/346/200/201/346/234/272.md +234 -0
  17. package/_packed_docs/protocol/08-AUN-E2EE-Group.md +900 -0
  18. package/_packed_docs/protocol/08-AUN-E2EE.md +413 -0
  19. package/_packed_docs/protocol/09-/345/256/211/345/205/250/350/200/203/350/231/221.md +316 -0
  20. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +804 -0
  21. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +271 -0
  22. package/_packed_docs/protocol/12-Stream-/345/255/220/345/215/217/350/256/256.md +329 -0
  23. package/_packed_docs/protocol/13-Agent/350/241/214/344/270/272/350/247/204/350/214/203.md +141 -0
  24. package/_packed_docs/protocol/14-/344/272/244/344/272/222/346/234/272/345/210/266-/345/223/215/345/272/224/346/250/241/345/274/217/344/270/216/350/207/252/344/270/273/346/250/241/345/274/217.md +170 -0
  25. package/_packed_docs/protocol/15-/347/246/273/347/272/277/346/216/250/351/200/201/351/200/232/347/237/245/345/215/217/350/256/256.md +419 -0
  26. package/_packed_docs/protocol/README.md +71 -0
  27. package/_packed_docs/protocol/agent.md/SCHEMA.md +118 -0
  28. package/_packed_docs/protocol/agent.md/examples/codeagent-claudecode.md +61 -0
  29. package/_packed_docs/protocol/agent.md/examples/human-developer.md +60 -0
  30. package/_packed_docs/protocol/agent.md/examples/openclaw-lobster.md +52 -0
  31. package/_packed_docs/protocol/aun-docs-guide.md +49 -0
  32. package/_packed_docs/protocol/index.md +124 -0
  33. package/_packed_docs/protocol//350/215/211/346/241/210-agent.md/347/255/276/345/220/215/345/215/217/350/256/256.md +205 -0
  34. package/_packed_docs/protocol//350/215/211/346/241/210-/346/213/222/347/273/235/344/277/241/345/217/267/345/215/217/350/256/256.md +249 -0
  35. package/_packed_docs/protocol//351/231/204/345/275/225A-/346/234/257/350/257/255/350/241/250.md +337 -0
  36. package/_packed_docs/protocol//351/231/204/345/275/225B-/346/211/251/345/261/225/346/200/247/346/214/207/345/215/227.md +80 -0
  37. package/_packed_docs/protocol//351/231/204/345/275/225C-/347/247/201/351/222/245/347/256/241/347/220/206/344/270/216/350/272/253/344/273/275/346/201/242/345/244/215.md +704 -0
  38. package/_packed_docs/protocol//351/231/204/345/275/225D-Root_CA_/346/262/273/347/220/206/346/234/272/345/210/266.md +620 -0
  39. package/_packed_docs/protocol//351/231/204/345/275/225E-Root_CA_/345/207/206/345/205/245/346/265/201/347/250/213.md +605 -0
  40. package/_packed_docs/protocol//351/231/204/345/275/225F-Issuer_CA_/347/224/263/350/257/267/346/265/201/347/250/213.md +548 -0
  41. package/_packed_docs/protocol//351/231/204/345/275/225G-AID_/345/255/244/345/204/277/351/242/204/351/230/262/344/270/216/346/225/221/346/217/264/346/234/272/345/210/266.md +513 -0
  42. package/_packed_docs/protocol//351/231/204/345/275/225H-Identity/346/234/215/345/212/241/345/256/236/347/216/260/346/214/207/345/215/227.md +619 -0
  43. package/_packed_docs/protocol//351/231/204/345/275/225I-/350/267/250/345/237/237/346/266/210/346/201/257/350/267/257/347/224/261/345/256/236/347/216/260/346/214/207/345/215/227.md +492 -0
  44. package/_packed_docs/protocol//351/231/204/345/275/225J-/345/256/242/346/210/267/347/253/257/346/216/245/345/205/245/347/244/272/344/276/213.md +402 -0
  45. package/_packed_docs/protocol//351/231/204/345/275/225K-Agent_Web/345/217/221/347/216/260/345/215/217/350/256/256.md +130 -0
  46. package/_packed_docs/protocol//351/231/204/345/275/225L-E2EE/345/256/236/347/216/260/346/214/207/345/215/227.md +267 -0
  47. package/_packed_docs/protocol//351/231/204/345/275/225M-JWT/350/256/244/350/257/201/345/256/236/347/216/260/346/214/207/345/215/227.md +367 -0
  48. package/_packed_docs/python-sdk-v2-only-changelog.md +189 -0
  49. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +223 -0
  50. package/_packed_docs/sdk/02-WebSocket/345/215/217/350/256/256.md +354 -0
  51. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +172 -0
  52. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +396 -0
  53. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +611 -0
  54. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +1203 -0
  55. package/_packed_docs/sdk/07-/351/224/231/350/257/257/345/244/204/347/220/206.md +150 -0
  56. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +89 -0
  57. package/_packed_docs/sdk/09-custody-api-manual.md +445 -0
  58. package/_packed_docs/sdk/09-group-rpc-manual.md +1895 -0
  59. package/_packed_docs/sdk/09-message-rpc-manual.md +597 -0
  60. package/_packed_docs/sdk/09-meta-rpc-manual.md +142 -0
  61. package/_packed_docs/sdk/09-payload-reference.md +702 -0
  62. package/_packed_docs/sdk/09-storage-rpc-manual.md +408 -0
  63. package/_packed_docs/sdk/09-stream-rpc-manual.md +275 -0
  64. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +72 -0
  65. package/_packed_docs/sdk/INDEX.md +131 -0
  66. package/_packed_docs/sdk/README.md +307 -0
  67. package/dist/auth.d.ts +2 -1
  68. package/dist/auth.d.ts.map +1 -1
  69. package/dist/auth.js +33 -14
  70. package/dist/auth.js.map +1 -1
  71. package/dist/bundle.js +14300 -0
  72. package/dist/client.d.ts +200 -178
  73. package/dist/client.d.ts.map +1 -1
  74. package/dist/client.js +3096 -4019
  75. package/dist/client.js.map +1 -1
  76. package/dist/config.d.ts +0 -4
  77. package/dist/config.d.ts.map +1 -1
  78. package/dist/config.js +0 -4
  79. package/dist/config.js.map +1 -1
  80. package/dist/crypto.d.ts +8 -1
  81. package/dist/crypto.d.ts.map +1 -1
  82. package/dist/crypto.js +114 -1
  83. package/dist/crypto.js.map +1 -1
  84. package/dist/e2ee.d.ts +5 -210
  85. package/dist/e2ee.d.ts.map +1 -1
  86. package/dist/e2ee.js +4 -1379
  87. package/dist/e2ee.js.map +1 -1
  88. package/dist/index.d.ts +7 -3
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +5 -4
  91. package/dist/index.js.map +1 -1
  92. package/dist/namespaces/auth.d.ts +1 -0
  93. package/dist/namespaces/auth.d.ts.map +1 -1
  94. package/dist/namespaces/auth.js +23 -8
  95. package/dist/namespaces/auth.js.map +1 -1
  96. package/dist/protected-headers.d.ts +14 -0
  97. package/dist/protected-headers.d.ts.map +1 -0
  98. package/dist/protected-headers.js +47 -0
  99. package/dist/protected-headers.js.map +1 -0
  100. package/dist/seq-tracker.d.ts +7 -2
  101. package/dist/seq-tracker.d.ts.map +1 -1
  102. package/dist/seq-tracker.js +31 -10
  103. package/dist/seq-tracker.js.map +1 -1
  104. package/dist/transport.d.ts +9 -1
  105. package/dist/transport.d.ts.map +1 -1
  106. package/dist/transport.js +24 -0
  107. package/dist/transport.js.map +1 -1
  108. package/dist/v2/crypto/aead.d.ts +26 -0
  109. package/dist/v2/crypto/aead.d.ts.map +1 -0
  110. package/dist/v2/crypto/aead.js +63 -0
  111. package/dist/v2/crypto/aead.js.map +1 -0
  112. package/dist/v2/crypto/canonical.d.ts +21 -0
  113. package/dist/v2/crypto/canonical.d.ts.map +1 -0
  114. package/dist/v2/crypto/canonical.js +111 -0
  115. package/dist/v2/crypto/canonical.js.map +1 -0
  116. package/dist/v2/crypto/dh-path.d.ts +21 -0
  117. package/dist/v2/crypto/dh-path.d.ts.map +1 -0
  118. package/dist/v2/crypto/dh-path.js +50 -0
  119. package/dist/v2/crypto/dh-path.js.map +1 -0
  120. package/dist/v2/crypto/ecdh.d.ts +19 -0
  121. package/dist/v2/crypto/ecdh.d.ts.map +1 -0
  122. package/dist/v2/crypto/ecdh.js +101 -0
  123. package/dist/v2/crypto/ecdh.js.map +1 -0
  124. package/dist/v2/crypto/ecdsa.d.ts +16 -0
  125. package/dist/v2/crypto/ecdsa.d.ts.map +1 -0
  126. package/dist/v2/crypto/ecdsa.js +52 -0
  127. package/dist/v2/crypto/ecdsa.js.map +1 -0
  128. package/dist/v2/crypto/hkdf.d.ts +21 -0
  129. package/dist/v2/crypto/hkdf.d.ts.map +1 -0
  130. package/dist/v2/crypto/hkdf.js +32 -0
  131. package/dist/v2/crypto/hkdf.js.map +1 -0
  132. package/dist/v2/crypto/index.d.ts +9 -0
  133. package/dist/v2/crypto/index.d.ts.map +1 -0
  134. package/dist/v2/crypto/index.js +8 -0
  135. package/dist/v2/crypto/index.js.map +1 -0
  136. package/dist/v2/crypto/recipients.d.ts +43 -0
  137. package/dist/v2/crypto/recipients.d.ts.map +1 -0
  138. package/dist/v2/crypto/recipients.js +188 -0
  139. package/dist/v2/crypto/recipients.js.map +1 -0
  140. package/dist/v2/e2ee/decrypt.d.ts +13 -0
  141. package/dist/v2/e2ee/decrypt.d.ts.map +1 -0
  142. package/dist/v2/e2ee/decrypt.js +176 -0
  143. package/dist/v2/e2ee/decrypt.js.map +1 -0
  144. package/dist/v2/e2ee/encrypt-group.d.ts +14 -0
  145. package/dist/v2/e2ee/encrypt-group.d.ts.map +1 -0
  146. package/dist/v2/e2ee/encrypt-group.js +196 -0
  147. package/dist/v2/e2ee/encrypt-group.js.map +1 -0
  148. package/dist/v2/e2ee/encrypt-p2p.d.ts +15 -0
  149. package/dist/v2/e2ee/encrypt-p2p.d.ts.map +1 -0
  150. package/dist/v2/e2ee/encrypt-p2p.js +240 -0
  151. package/dist/v2/e2ee/encrypt-p2p.js.map +1 -0
  152. package/dist/v2/e2ee/index.d.ts +9 -0
  153. package/dist/v2/e2ee/index.d.ts.map +1 -0
  154. package/dist/v2/e2ee/index.js +9 -0
  155. package/dist/v2/e2ee/index.js.map +1 -0
  156. package/dist/v2/e2ee/metadata-auth.d.ts +9 -0
  157. package/dist/v2/e2ee/metadata-auth.d.ts.map +1 -0
  158. package/dist/v2/e2ee/metadata-auth.js +60 -0
  159. package/dist/v2/e2ee/metadata-auth.js.map +1 -0
  160. package/dist/v2/e2ee/types.d.ts +57 -0
  161. package/dist/v2/e2ee/types.d.ts.map +1 -0
  162. package/dist/v2/e2ee/types.js +7 -0
  163. package/dist/v2/e2ee/types.js.map +1 -0
  164. package/dist/v2/session/index.d.ts +4 -0
  165. package/dist/v2/session/index.d.ts.map +1 -0
  166. package/dist/v2/session/index.js +3 -0
  167. package/dist/v2/session/index.js.map +1 -0
  168. package/dist/v2/session/keystore.d.ts +48 -0
  169. package/dist/v2/session/keystore.d.ts.map +1 -0
  170. package/dist/v2/session/keystore.js +184 -0
  171. package/dist/v2/session/keystore.js.map +1 -0
  172. package/dist/v2/session/session.d.ts +98 -0
  173. package/dist/v2/session/session.d.ts.map +1 -0
  174. package/dist/v2/session/session.js +270 -0
  175. package/dist/v2/session/session.js.map +1 -0
  176. package/dist/v2/state/commitment.d.ts +10 -0
  177. package/dist/v2/state/commitment.d.ts.map +1 -0
  178. package/dist/v2/state/commitment.js +86 -0
  179. package/dist/v2/state/commitment.js.map +1 -0
  180. package/dist/v2/state/index.d.ts +2 -0
  181. package/dist/v2/state/index.d.ts.map +1 -0
  182. package/dist/v2/state/index.js +2 -0
  183. package/dist/v2/state/index.js.map +1 -0
  184. package/package.json +43 -37
package/dist/config.d.ts CHANGED
@@ -19,10 +19,6 @@ export interface AUNConfig {
19
19
  discoveryPort: number | null;
20
20
  /** 是否启用群组 E2EE(默认 true) */
21
21
  groupE2ee: boolean;
22
- /** epoch 自动轮换间隔(秒,0 表示禁用) */
23
- epochAutoRotateInterval: number;
24
- /** 旧 epoch 保留时间(秒,默认 7 天) */
25
- oldEpochRetentionSeconds: number;
26
22
  /** 是否验证 SSL 证书(默认 true) */
27
23
  verifySsl: boolean;
28
24
  /** 是否要求前向保密(默认 true) */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB7C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAgBpC;AAED,mBAAmB;AACnB,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,6BAA6B;IAC7B,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB;IACjB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAgBD,KAAK,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;AAEtD,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAyBnE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB7C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAgBpC;AAED,mBAAmB;AACnB,MAAM,WAAW,SAAS;IACxB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,2BAA2B;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,iBAAiB;IACjB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAcD,KAAK,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC;AAEtD,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAuBnE"}
package/dist/config.js CHANGED
@@ -56,8 +56,6 @@ const DEFAULTS = {
56
56
  seedPassword: null,
57
57
  discoveryPort: null,
58
58
  groupE2ee: true,
59
- epochAutoRotateInterval: 0,
60
- oldEpochRetentionSeconds: 604800,
61
59
  verifySsl: true,
62
60
  requireForwardSecrecy: true,
63
61
  replayWindowSeconds: 300,
@@ -77,8 +75,6 @@ export function createConfig(raw) {
77
75
  seedPassword: readOptionalString(data.seedPassword ?? data.seed_password ?? data.encryptionSeed ?? data.encryption_seed, DEFAULTS.seedPassword),
78
76
  discoveryPort: readOptionalNumber(data.discoveryPort ?? data.discovery_port, DEFAULTS.discoveryPort),
79
77
  groupE2ee: true, // 必备能力,不可配置
80
- epochAutoRotateInterval: readOptionalNumber(data.epochAutoRotateInterval ?? data.epoch_auto_rotate_interval, DEFAULTS.epochAutoRotateInterval) ?? DEFAULTS.epochAutoRotateInterval,
81
- oldEpochRetentionSeconds: readOptionalNumber(data.oldEpochRetentionSeconds ?? data.old_epoch_retention_seconds, DEFAULTS.oldEpochRetentionSeconds) ?? DEFAULTS.oldEpochRetentionSeconds,
82
78
  verifySsl: DEFAULTS.verifySsl,
83
79
  requireForwardSecrecy: readBoolean(data.requireForwardSecrecy ?? data.require_forward_secrecy, DEFAULTS.requireForwardSecrecy),
84
80
  replayWindowSeconds: readOptionalNumber(data.replayWindowSeconds ?? data.replay_window_seconds, DEFAULTS.replayWindowSeconds) ?? DEFAULTS.replayWindowSeconds,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/crypto.d.ts CHANGED
@@ -37,5 +37,12 @@ export declare class CryptoProvider {
37
37
  * Python cryptography 使用 DER(ASN.1 编码)。
38
38
  */
39
39
  declare function p1363ToDer(p1363: Uint8Array): Uint8Array;
40
- export { uint8ToBase64, base64ToUint8, arrayBufferToPem, pemToArrayBuffer, p1363ToDer, toArrayBuffer, toBufferSource };
40
+ /** DER 格式 ECDSA 签名转为 IEEE P1363。 */
41
+ declare function derToP1363(der: Uint8Array, coordLen?: number): Uint8Array;
42
+ declare function certificateSha256Fingerprint(certPem: string): Promise<string>;
43
+ declare function importCertPublicKeyEcdsa(certPem: string): Promise<CryptoKey>;
44
+ declare function importPrivateKeyEcdsa(pem: string): Promise<CryptoKey>;
45
+ declare function ecdsaSignDer(privateKey: CryptoKey, data: Uint8Array): Promise<Uint8Array>;
46
+ declare function ecdsaVerifyDer(publicKey: CryptoKey, signature: Uint8Array, data: Uint8Array): Promise<boolean>;
47
+ export { uint8ToBase64, base64ToUint8, arrayBufferToPem, pemToArrayBuffer, p1363ToDer, derToP1363, toArrayBuffer, toBufferSource, certificateSha256Fingerprint, importCertPublicKeyEcdsa, importPrivateKeyEcdsa, ecdsaSignDer, ecdsaVerifyDer, };
41
48
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAGA,uBAAuB;AACvB,iBAAS,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMhD;AAED,uBAAuB;AACvB,iBAAS,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAO9C;AAED,iCAAiC;AACjC,iBAAS,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED,0BAA0B;AAC1B,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAOlD;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,WAAW,CAMrF;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,YAAY,CAKvF;AAED,iDAAiD;AACjD,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,SAAS,WAAW;IAEpC;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAsBF;;;;;;OAMG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA0B5B,uCAAuC;IACvC,cAAc,IAAI,MAAM;CAKzB;AAID;;;;GAIG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAmBjD;AAYD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAGA,uBAAuB;AACvB,iBAAS,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAMhD;AAED,uBAAuB;AACvB,iBAAS,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAO9C;AAED,iCAAiC;AACjC,iBAAS,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpE;AAED,0BAA0B;AAC1B,iBAAS,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAOlD;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,WAAW,CAMrF;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,eAAe,GAAG,YAAY,CAKvF;AAED,iDAAiD;AACjD,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,SAAS,WAAW;IAEpC;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAsBF;;;;;;OAMG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IA0B5B,uCAAuC;IACvC,cAAc,IAAI,MAAM;CAKzB;AAID;;;;GAIG;AACH,iBAAS,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAmBjD;AAED,sCAAsC;AACtC,iBAAS,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,SAAK,GAAG,UAAU,CAuB9D;AAgED,iBAAe,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5E;AAED,iBAAe,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAS3E;AAID,iBAAe,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAapE;AAED,iBAAe,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAOxF;AAED,iBAAe,cAAc,CAC3B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,OAAO,CAAC,CAQlB;AAGD,OAAO,EACL,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,YAAY,EACZ,cAAc,GACf,CAAC"}
package/dist/crypto.js CHANGED
@@ -119,6 +119,36 @@ function p1363ToDer(p1363) {
119
119
  der.set(sTlv, 2 + rTlv.length);
120
120
  return der;
121
121
  }
122
+ /** 将 DER 格式 ECDSA 签名转为 IEEE P1363。 */
123
+ function derToP1363(der, coordLen = 32) {
124
+ if (der[0] !== 0x30)
125
+ throw new Error('invalid DER signature: missing SEQUENCE');
126
+ let offset = 2;
127
+ if (der[1] & 0x80) {
128
+ const lenBytes = der[1] & 0x7f;
129
+ offset = 2 + lenBytes;
130
+ }
131
+ if (der[offset] !== 0x02)
132
+ throw new Error('invalid DER signature: missing r');
133
+ const rLen = der[offset + 1];
134
+ let r = der.slice(offset + 2, offset + 2 + rLen);
135
+ offset += 2 + rLen;
136
+ if (der[offset] !== 0x02)
137
+ throw new Error('invalid DER signature: missing s');
138
+ const sLen = der[offset + 1];
139
+ let s = der.slice(offset + 2, offset + 2 + sLen);
140
+ while (r.length > 1 && r[0] === 0)
141
+ r = r.slice(1);
142
+ while (s.length > 1 && s[0] === 0)
143
+ s = s.slice(1);
144
+ if (r.length > coordLen || s.length > coordLen) {
145
+ throw new Error('invalid DER signature: coordinate too long');
146
+ }
147
+ const out = new Uint8Array(coordLen * 2);
148
+ out.set(r, coordLen - r.length);
149
+ out.set(s, coordLen * 2 - s.length);
150
+ return out;
151
+ }
122
152
  /** 去除前导零字节(保留至少一个字节) */
123
153
  function trimLeadingZeros(bytes) {
124
154
  let start = 0;
@@ -127,6 +157,89 @@ function trimLeadingZeros(bytes) {
127
157
  }
128
158
  return bytes.slice(start);
129
159
  }
160
+ function parseDerLength(data, offset) {
161
+ if (offset >= data.length)
162
+ return null;
163
+ const first = data[offset];
164
+ if (first < 0x80) {
165
+ return { value: first, lenBytes: 1 };
166
+ }
167
+ const numBytes = first & 0x7f;
168
+ if (numBytes === 0 || numBytes > 4)
169
+ return null;
170
+ let value = 0;
171
+ for (let i = 0; i < numBytes; i++) {
172
+ if (offset + 1 + i >= data.length)
173
+ return null;
174
+ value = (value << 8) | data[offset + 1 + i];
175
+ }
176
+ return { value, lenBytes: 1 + numBytes };
177
+ }
178
+ function extractSpkiFromCertPem(certPem) {
179
+ const certDer = new Uint8Array(pemToArrayBuffer(certPem));
180
+ const p256Oid = [0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07];
181
+ for (let i = 0; i <= certDer.length - p256Oid.length; i++) {
182
+ let match = true;
183
+ for (let j = 0; j < p256Oid.length; j++) {
184
+ if (certDer[i + j] !== p256Oid[j]) {
185
+ match = false;
186
+ break;
187
+ }
188
+ }
189
+ if (!match)
190
+ continue;
191
+ for (let seqStart = Math.max(0, i - 32); seqStart <= i; seqStart++) {
192
+ if (certDer[seqStart] !== 0x30)
193
+ continue;
194
+ const seqLen = parseDerLength(certDer, seqStart + 1);
195
+ if (seqLen === null)
196
+ continue;
197
+ const totalLen = 1 + seqLen.lenBytes + seqLen.value;
198
+ if (totalLen < 50 || totalLen > 140)
199
+ continue;
200
+ const spkiCandidate = certDer.slice(seqStart, seqStart + totalLen);
201
+ let hasBitString = false;
202
+ for (let k = 20; k < spkiCandidate.length - 10; k++) {
203
+ if (spkiCandidate[k] === 0x03 && spkiCandidate[k + 2] === 0x00) {
204
+ hasBitString = true;
205
+ break;
206
+ }
207
+ }
208
+ if (hasBitString) {
209
+ return spkiCandidate.buffer.slice(spkiCandidate.byteOffset, spkiCandidate.byteOffset + spkiCandidate.byteLength);
210
+ }
211
+ }
212
+ }
213
+ throw new Error('unable to extract SPKI public key from certificate');
214
+ }
215
+ async function certificateSha256Fingerprint(certPem) {
216
+ const der = pemToArrayBuffer(certPem);
217
+ const hash = await crypto.subtle.digest('SHA-256', der);
218
+ const hex = Array.from(new Uint8Array(hash)).map(b => b.toString(16).padStart(2, '0')).join('');
219
+ return `sha256:${hex}`;
220
+ }
221
+ async function importCertPublicKeyEcdsa(certPem) {
222
+ const spki = extractSpkiFromCertPem(certPem);
223
+ return crypto.subtle.importKey('spki', spki, { name: 'ECDSA', namedCurve: 'P-256' }, true, ['verify']);
224
+ }
225
+ const ecdsaKeyCache = new Map();
226
+ async function importPrivateKeyEcdsa(pem) {
227
+ const cached = ecdsaKeyCache.get(pem);
228
+ if (cached)
229
+ return cached;
230
+ const pkcs8 = pemToArrayBuffer(pem);
231
+ const key = await crypto.subtle.importKey('pkcs8', pkcs8, { name: 'ECDSA', namedCurve: 'P-256' }, true, ['sign']);
232
+ ecdsaKeyCache.set(pem, key);
233
+ return key;
234
+ }
235
+ async function ecdsaSignDer(privateKey, data) {
236
+ const sig = await crypto.subtle.sign({ name: 'ECDSA', hash: 'SHA-256' }, privateKey, toBufferSource(data));
237
+ return p1363ToDer(new Uint8Array(sig));
238
+ }
239
+ async function ecdsaVerifyDer(publicKey, signature, data) {
240
+ const p1363 = derToP1363(signature);
241
+ return crypto.subtle.verify({ name: 'ECDSA', hash: 'SHA-256' }, publicKey, toBufferSource(p1363), toBufferSource(data));
242
+ }
130
243
  // 导出工具函数,供其他模块使用
131
- export { uint8ToBase64, base64ToUint8, arrayBufferToPem, pemToArrayBuffer, p1363ToDer, toArrayBuffer, toBufferSource };
244
+ export { uint8ToBase64, base64ToUint8, arrayBufferToPem, pemToArrayBuffer, p1363ToDer, derToP1363, toArrayBuffer, toBufferSource, certificateSha256Fingerprint, importCertPublicKeyEcdsa, importPrivateKeyEcdsa, ecdsaSignDer, ecdsaVerifyDer, };
132
245
  //# sourceMappingURL=crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
package/dist/e2ee.d.ts CHANGED
@@ -1,214 +1,9 @@
1
- import type { ModuleLogger } from './logger.js';
2
- import type { KeyStore } from './keystore/index.js';
3
- import type { IdentityRecord, JsonObject, Message } from './types.js';
4
- export declare function setModuleLogger(log: ModuleLogger): void;
5
- /** 加密套件标识 */
6
- export declare const SUITE = "P256_HKDF_SHA256_AES_256_GCM";
7
- /** 加密模式 */
8
- export declare const MODE_PREKEY_ECDH_V2 = "prekey_ecdh_v2";
9
- export declare const MODE_LONG_TERM_KEY = "long_term_key";
10
- /** AAD 字段定义(P2P) */
11
- export declare const AAD_FIELDS_OFFLINE: readonly ["from", "to", "message_id", "timestamp", "encryption_mode", "suite", "ephemeral_public_key", "recipient_cert_fingerprint", "sender_cert_fingerprint", "prekey_id"];
12
- /** AAD 匹配字段(解密时校验,不含 timestamp) */
13
- export declare const AAD_MATCH_FIELDS_OFFLINE: readonly ["from", "to", "message_id", "encryption_mode", "suite", "ephemeral_public_key", "recipient_cert_fingerprint", "sender_cert_fingerprint", "prekey_id"];
14
- /** 兼容型可选 AAD 字段:存在时才参与 AAD,不为旧消息补 null。 */
15
- export declare const AAD_OPTIONAL_FIELDS: readonly ["payload_type", "protected_headers", "context_type", "context_id"];
16
- /** prekey 私钥本地保留时间(秒) */
17
- export declare const PREKEY_RETENTION_SECONDS: number;
18
- export declare const PREKEY_MIN_KEEP_COUNT = 7;
19
- export interface PrekeyMaterial extends JsonObject {
20
- prekey_id: string;
21
- public_key: string;
22
- signature: string;
23
- created_at?: number;
24
- device_id?: string;
25
- cert_fingerprint?: string;
26
- }
27
- export type ProtectedHeadersInput = ProtectedHeaders | Record<string, unknown> | null | undefined;
28
- /** 端到端保护的信封元数据,语义接近 HTTP headers。 */
29
- export declare class ProtectedHeaders {
30
- private _items;
31
- constructor(values?: Record<string, unknown> | null);
32
- private static normalizeKey;
33
- set(key: string, value: unknown): this;
34
- get(key: string, defaultValue?: string | null): string | null;
35
- remove(key: string): this;
36
- toObject(): Record<string, string>;
37
- toJSON(): Record<string, string>;
38
- static from(values?: Record<string, unknown> | null): ProtectedHeaders;
39
- }
40
- /** 加密结果信息 */
41
- export interface EncryptResult {
42
- encrypted: boolean;
43
- forward_secrecy: boolean;
44
- mode: string;
45
- degraded: boolean;
46
- degradation_reason?: string;
47
- }
48
- /** 拼接多个 Uint8Array */
49
- declare function concatBytes(...arrays: Uint8Array[]): Uint8Array;
50
- /** DER 签名转 IEEE P1363 格式(用于 SubtleCrypto 验签) */
51
- declare function derToP1363(der: Uint8Array, coordLen?: number): Uint8Array;
52
- /** AAD 序列化(排序键、紧凑 JSON) */
53
- declare function aadBytesOffline(aad: JsonObject): Uint8Array;
54
- /** 计算 SPKI 公钥的 SHA-256 指纹 */
55
- declare function fingerprintSpki(spkiBytes: ArrayBuffer): Promise<string>;
56
- /** 从 PEM 证书计算证书 SHA-256 指纹 */
57
- declare function fingerprintCertPem(certPem: string): Promise<string>;
58
- /** 从 PEM 证书计算证书 SHA-256 指纹 */
59
- declare function certificateSha256Fingerprint(certPem: string): Promise<string>;
60
- /** 导入 PEM 证书公钥为 ECDSA CryptoKey */
61
- declare function importCertPublicKeyEcdsa(certPem: string): Promise<CryptoKey>;
62
- declare function importPrivateKeyEcdsa(pem: string): Promise<CryptoKey>;
63
- /** HKDF 派生密钥(256 位) */
64
- declare function hkdfDerive(ikm: Uint8Array, info: string): Promise<Uint8Array>;
65
- /** AES-GCM 加密,返回 [ciphertext, tag](SubtleCrypto 将 tag 附加到末尾) */
66
- declare function aesGcmEncrypt(key: Uint8Array, nonce: Uint8Array, plaintext: Uint8Array, aad: Uint8Array): Promise<[Uint8Array, Uint8Array]>;
67
- /** AES-GCM 解密 */
68
- declare function aesGcmDecrypt(key: Uint8Array, nonce: Uint8Array, ciphertext: Uint8Array, tag: Uint8Array, aad: Uint8Array): Promise<Uint8Array>;
69
- /** ECDSA 签名(输出 DER 格式,兼容 Python/Go) */
70
- declare function ecdsaSignDer(privateKey: CryptoKey, data: Uint8Array): Promise<Uint8Array>;
71
- /** ECDSA 验签(输入 DER 格式签名) */
72
- declare function ecdsaVerifyDer(publicKey: CryptoKey, signature: Uint8Array, data: Uint8Array): Promise<boolean>;
73
- /** 生成 12 字节随机 nonce */
74
- declare function randomNonce(): Uint8Array;
75
- /** 生成 UUID v4 */
76
- declare function uuidV4(): string;
77
1
  /**
78
- * P2P 端到端加密管理器 — 浏览器 SubtleCrypto 实现。
2
+ * E2EE V2-only 兼容入口。
79
3
  *
80
- * 加密策略: prekey_ecdh_v2(四路 ECDH)→ long_term_key(二路 ECDH)两层降级。
81
- * I/O(获取 prekey、证书)由调用方(AUNClient)负责。
82
- * 内置本地防重放(seen set),裸 WebSocket 开发者无需额外实现。
83
- *
84
- * 所有密码学操作均为异步(SubtleCrypto 要求)。
4
+ * 旧版 P2P E2EEManager 已移除;这里仅保留应用层可能直接使用的
5
+ * protected headers helper,和 TS SDK 的 V2-only 入口保持一致。
85
6
  */
86
- export declare class E2EEManager {
87
- private _log;
88
- setLogger(log: ModuleLogger): void;
89
- private _identityFn;
90
- private _deviceIdFn;
91
- private _keystoreRef;
92
- /** 本地防重放 seen set */
93
- private _seenMessages;
94
- private _seenMaxSize;
95
- /** 对方 prekey 内存缓存 {peerAid: {prekey, expireAt}} */
96
- private _prekeyCache;
97
- private _prekeyCacheTtl;
98
- /** 本地 prekey 私钥 PEM 内存缓存 {prekeyId: privateKeyPem} */
99
- private _localPrekeyCache;
100
- /** 防重放时间窗口(秒) */
101
- private _replayWindowSeconds;
102
- constructor(opts: {
103
- identityFn: () => IdentityRecord;
104
- deviceIdFn?: () => string;
105
- keystore: KeyStore;
106
- prekeyCacheTtl?: number;
107
- replayWindowSeconds?: number;
108
- });
109
- /** 缓存对方的 prekey */
110
- cachePrekey(peerAid: string, prekey: PrekeyMaterial): void;
111
- /** 获取缓存的 prekey(过期返回 null) */
112
- getCachedPrekey(peerAid: string): PrekeyMaterial | null;
113
- /** 使 prekey 缓存失效 */
114
- invalidatePrekeyCache(peerAid: string): void;
115
- /**
116
- * 加密消息(便利方法)。
117
- * 调用方负责提前获取 peerCertPem 和 prekey(可选)。
118
- */
119
- encryptMessage(toAid: string, payload: JsonObject, opts: {
120
- peerCertPem: string;
121
- prekey?: PrekeyMaterial | null;
122
- messageId?: string;
123
- timestamp?: number;
124
- protectedHeaders?: ProtectedHeadersInput;
125
- protected_headers?: ProtectedHeadersInput;
126
- headers?: ProtectedHeadersInput;
127
- context?: JsonObject | null;
128
- }): Promise<[JsonObject, EncryptResult]>;
129
- /**
130
- * 加密出站消息:有 prekey → prekey_ecdh_v2(四路 ECDH),无 prekey → long_term_key。
131
- *
132
- * 返回 [envelope, resultInfo],resultInfo 包含加密状态详情。
133
- * prekey 传入时自动缓存;传入 null 时自动查缓存。
134
- */
135
- encryptOutbound(peerAid: string, payload: JsonObject, opts: {
136
- peerCertPem: string;
137
- prekey?: PrekeyMaterial | null;
138
- messageId: string;
139
- timestamp: number;
140
- protectedHeaders?: ProtectedHeadersInput;
141
- protected_headers?: ProtectedHeadersInput;
142
- headers?: ProtectedHeadersInput;
143
- context?: JsonObject | null;
144
- }): Promise<[JsonObject, EncryptResult]>;
145
- /**
146
- * 使用对方 prekey 加密(prekey_ecdh_v2 模式,四路 ECDH + 发送方签名)
147
- *
148
- * 四路 ECDH:
149
- * DH1 = ECDH(ephemeral, peer_prekey)
150
- * DH2 = ECDH(ephemeral, peer_identity)
151
- * DH3 = ECDH(sender_identity, peer_prekey) ← 绑定发送方身份
152
- * DH4 = ECDH(sender_identity, peer_identity) ← 双方身份互绑
153
- */
154
- private _encryptWithPrekey;
155
- /**
156
- * 使用 2DH 加密(long_term_key 模式 + 发送方签名)
157
- *
158
- * 2DH:
159
- * DH1 = ECDH(ephemeral, peer_identity) ← 前向保密(每消息)
160
- * DH2 = ECDH(sender_identity, peer_identity) ← 绑定双方身份
161
- */
162
- private _encryptWithLongTermKey;
163
- /**
164
- * 解密单条消息(内置本地防重放 + timestamp 窗口 + 发送方签名验证)。
165
- *
166
- * 返回解密后的 message 对象,或 null 表示失败/拒绝。
167
- * 非加密消息原样返回。
168
- *
169
- * opts.skipReplay: 跳过防重放和 timestamp 窗口检查(用于 message.pull 场景)。
170
- */
171
- decryptMessage(message: Message, opts?: {
172
- skipReplay?: boolean;
173
- }): Promise<Message | null>;
174
- /** 判断是否应该为当前 AID 解密(避免发送端回显消息误走解密) */
175
- private _shouldDecryptForCurrentAid;
176
- /** 内部解密分发 */
177
- private _decryptMessageInternal;
178
- /** 验证发送方签名 */
179
- private _verifySenderSignature;
180
- /** 从 keystore 获取发送方证书 PEM */
181
- private _getSenderCert;
182
- /** 解密 prekey_ecdh_v2 模式的消息(四路 ECDH) */
183
- private _decryptMessagePrekeyV2;
184
- /** 解密 long_term_key 模式的消息(2DH) */
185
- private _decryptMessageLongTerm;
186
- /** 构建解密时的期望 AAD(接收方视角) */
187
- private _buildInboundAadOffline;
188
- /**
189
- * 生成 prekey 材料并保存私钥到本地 keystore。
190
- *
191
- * 返回 { prekey_id, public_key, signature, created_at },可直接用于 RPC 上传。
192
- */
193
- generatePrekey(): Promise<PrekeyMaterial>;
194
- /** 清理过期的本地 prekey 私钥 */
195
- private _cleanupExpiredPrekeys;
196
- /** 从内存缓存或 keystore 加载 prekey 私钥 PEM */
197
- private _loadPrekeyPrivateKey;
198
- private _currentAid;
199
- private _currentDeviceId;
200
- /** 加载发送方 identity 私钥(ECDH 用途) */
201
- private _loadSenderIdentityPrivateEcdh;
202
- /** 加载发送方 identity 私钥(ECDSA 签名用途) */
203
- private _loadSenderIdentityPrivateEcdsa;
204
- /** 获取本地 identity 指纹(优先证书 DER SHA-256,缺失时回退到公钥指纹) */
205
- private _localIdentityFingerprint;
206
- /** 本地证书的 SHA-256 指纹(用于锁定证书版本) */
207
- private _localCertSha256Fingerprint;
208
- /** 裁剪 seen set */
209
- private _trimSeenSet;
210
- /** 清理过期的 prekey 缓存和 seen set 条目(供外部定时调用) */
211
- cleanExpiredCaches(): void;
212
- }
213
- export { aadBytesOffline as _aadBytesOffline, concatBytes as _concatBytes, ecdsaSignDer as _ecdsaSignDer, ecdsaVerifyDer as _ecdsaVerifyDer, hkdfDerive as _hkdfDerive, aesGcmEncrypt as _aesGcmEncrypt, aesGcmDecrypt as _aesGcmDecrypt, randomNonce as _randomNonce, uuidV4 as _uuidV4, fingerprintCertPem as _fingerprintCertPem, certificateSha256Fingerprint as _certificateSha256Fingerprint, fingerprintSpki as _fingerprintSpki, importCertPublicKeyEcdsa as _importCertPublicKeyEcdsa, importPrivateKeyEcdsa as _importPrivateKeyEcdsa, derToP1363 as _derToP1363, };
7
+ export { ProtectedHeaders } from './protected-headers.js';
8
+ export type { ProtectedHeadersInput } from './protected-headers.js';
214
9
  //# sourceMappingURL=e2ee.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"e2ee.d.ts","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2ee.d.ts","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC"}