@agentunion/fastaun 0.2.20 → 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 (98) hide show
  1. package/CHANGELOG.md +46 -23
  2. package/_packed_docs/CHANGELOG.md +46 -23
  3. 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
  4. package/_packed_docs/protocol/index.md +13 -3
  5. package/_packed_docs/python-sdk-v2-only-changelog.md +189 -0
  6. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +39 -16
  7. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +90 -39
  8. package/dist/auth.js +24 -7
  9. package/dist/auth.js.map +1 -1
  10. package/dist/client.d.ts +115 -166
  11. package/dist/client.js +2006 -3427
  12. package/dist/client.js.map +1 -1
  13. package/dist/config.d.ts +0 -4
  14. package/dist/config.js +0 -4
  15. package/dist/config.js.map +1 -1
  16. package/dist/e2ee.d.ts +5 -139
  17. package/dist/e2ee.js +4 -1151
  18. package/dist/e2ee.js.map +1 -1
  19. package/dist/errors.d.ts +0 -8
  20. package/dist/errors.js +0 -14
  21. package/dist/errors.js.map +1 -1
  22. package/dist/index.d.ts +9 -5
  23. package/dist/index.js +6 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/keystore/aid-db.d.ts +12 -61
  26. package/dist/keystore/aid-db.js +41 -539
  27. package/dist/keystore/aid-db.js.map +1 -1
  28. package/dist/keystore/file.d.ts +5 -41
  29. package/dist/keystore/file.js +8 -64
  30. package/dist/keystore/file.js.map +1 -1
  31. package/dist/keystore/index.d.ts +1 -49
  32. package/dist/namespaces/auth.js +4 -2
  33. package/dist/namespaces/auth.js.map +1 -1
  34. package/dist/protected-headers.d.ts +13 -0
  35. package/dist/protected-headers.js +47 -0
  36. package/dist/protected-headers.js.map +1 -0
  37. package/dist/seq-tracker.d.ts +7 -2
  38. package/dist/seq-tracker.js +31 -10
  39. package/dist/seq-tracker.js.map +1 -1
  40. package/dist/types.d.ts +0 -56
  41. package/dist/v2/crypto/aead.d.ts +20 -0
  42. package/dist/v2/crypto/aead.js +59 -0
  43. package/dist/v2/crypto/aead.js.map +1 -0
  44. package/dist/v2/crypto/canonical.d.ts +20 -0
  45. package/dist/v2/crypto/canonical.js +119 -0
  46. package/dist/v2/crypto/canonical.js.map +1 -0
  47. package/dist/v2/crypto/dh-path.d.ts +39 -0
  48. package/dist/v2/crypto/dh-path.js +55 -0
  49. package/dist/v2/crypto/dh-path.js.map +1 -0
  50. package/dist/v2/crypto/ecdh.d.ts +29 -0
  51. package/dist/v2/crypto/ecdh.js +122 -0
  52. package/dist/v2/crypto/ecdh.js.map +1 -0
  53. package/dist/v2/crypto/ecdsa.d.ts +29 -0
  54. package/dist/v2/crypto/ecdsa.js +120 -0
  55. package/dist/v2/crypto/ecdsa.js.map +1 -0
  56. package/dist/v2/crypto/hkdf.d.ts +19 -0
  57. package/dist/v2/crypto/hkdf.js +47 -0
  58. package/dist/v2/crypto/hkdf.js.map +1 -0
  59. package/dist/v2/crypto/index.d.ts +8 -0
  60. package/dist/v2/crypto/index.js +8 -0
  61. package/dist/v2/crypto/index.js.map +1 -0
  62. package/dist/v2/crypto/recipients.d.ts +32 -0
  63. package/dist/v2/crypto/recipients.js +183 -0
  64. package/dist/v2/crypto/recipients.js.map +1 -0
  65. package/dist/v2/e2ee/decrypt.d.ts +29 -0
  66. package/dist/v2/e2ee/decrypt.js +159 -0
  67. package/dist/v2/e2ee/decrypt.js.map +1 -0
  68. package/dist/v2/e2ee/encrypt-group.d.ts +17 -0
  69. package/dist/v2/e2ee/encrypt-group.js +143 -0
  70. package/dist/v2/e2ee/encrypt-group.js.map +1 -0
  71. package/dist/v2/e2ee/encrypt-p2p.d.ts +31 -0
  72. package/dist/v2/e2ee/encrypt-p2p.js +190 -0
  73. package/dist/v2/e2ee/encrypt-p2p.js.map +1 -0
  74. package/dist/v2/e2ee/index.d.ts +9 -0
  75. package/dist/v2/e2ee/index.js +9 -0
  76. package/dist/v2/e2ee/index.js.map +1 -0
  77. package/dist/v2/e2ee/metadata-auth.d.ts +15 -0
  78. package/dist/v2/e2ee/metadata-auth.js +50 -0
  79. package/dist/v2/e2ee/metadata-auth.js.map +1 -0
  80. package/dist/v2/e2ee/types.d.ts +57 -0
  81. package/dist/v2/e2ee/types.js +7 -0
  82. package/dist/v2/e2ee/types.js.map +1 -0
  83. package/dist/v2/session/index.d.ts +4 -0
  84. package/dist/v2/session/index.js +3 -0
  85. package/dist/v2/session/index.js.map +1 -0
  86. package/dist/v2/session/keystore.d.ts +41 -0
  87. package/dist/v2/session/keystore.js +103 -0
  88. package/dist/v2/session/keystore.js.map +1 -0
  89. package/dist/v2/session/session.d.ts +97 -0
  90. package/dist/v2/session/session.js +242 -0
  91. package/dist/v2/session/session.js.map +1 -0
  92. package/dist/v2/state/commitment.d.ts +58 -0
  93. package/dist/v2/state/commitment.js +85 -0
  94. package/dist/v2/state/commitment.js.map +1 -0
  95. package/dist/v2/state/index.d.ts +2 -0
  96. package/dist/v2/state/index.js +2 -0
  97. package/dist/v2/state/index.js.map +1 -0
  98. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protected-headers.js","sourceRoot":"","sources":["../src/protected-headers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAIpC,qCAAqC;AACrC,MAAM,OAAO,gBAAgB;IACnB,MAAM,GAA2B,EAAE,CAAC;IAE5C,YAAY,MAAuC;QACjD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,GAAY;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;YAClC,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAc;QAC7B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,eAA8B,IAAI;QACjD,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACzB,CAAC,CAAC,YAAY,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAuC;QACjD,OAAO,IAAI,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -10,8 +10,13 @@ export declare class SeqTracker {
10
10
  setBaseline(ns: string, baselineSeq: number): void;
11
11
  /** 记录收到的 seq,返回 true 表示需要 pull 补齐空洞 */
12
12
  onMessageSeq(ns: string, seq: number): boolean;
13
- /** pull 返回后更新 tracker 状态 */
14
- onPullResult(ns: string, messages: JsonObject[]): void;
13
+ /** pull 返回后更新 tracker 状态。
14
+ *
15
+ * afterSeq: pull 请求使用的 after_seq 参数。如果等于当前 contiguousSeq(gap fill 场景),
16
+ * 直接把 pull 到的最大 seq 作为新的 contiguousSeq——服务端返回的就是当前可用的全部消息,
17
+ * 中间的空洞是永久性的(竞态跳跃/未持久化/过期清理),不应阻塞后续消息投递。
18
+ */
19
+ onPullResult(ns: string, messages: JsonObject[], afterSeq?: number): void;
15
20
  /** P1-07: 内存保护 — 当 receivedSeqs 超过上限时,
16
21
  * 找到最小 seq 强制推进 contiguousSeq,释放已无意义的条目。 */
17
22
  private _forceCompact;
@@ -103,8 +103,13 @@ export class SeqTracker {
103
103
  }
104
104
  return true;
105
105
  }
106
- /** pull 返回后更新 tracker 状态 */
107
- onPullResult(ns, messages) {
106
+ /** pull 返回后更新 tracker 状态。
107
+ *
108
+ * afterSeq: pull 请求使用的 after_seq 参数。如果等于当前 contiguousSeq(gap fill 场景),
109
+ * 直接把 pull 到的最大 seq 作为新的 contiguousSeq——服务端返回的就是当前可用的全部消息,
110
+ * 中间的空洞是永久性的(竞态跳跃/未持久化/过期清理),不应阻塞后续消息投递。
111
+ */
112
+ onPullResult(ns, messages, afterSeq) {
108
113
  const t = this._get(ns);
109
114
  const pulledSeqs = new Set();
110
115
  for (const m of messages) {
@@ -112,6 +117,28 @@ export class SeqTracker {
112
117
  if (typeof s === 'number' && s > 0)
113
118
  pulledSeqs.add(s);
114
119
  }
120
+ // 将 pulled 的 seq 加入 receivedSeqs
121
+ for (const s of pulledSeqs) {
122
+ t.receivedSeqs.add(s);
123
+ }
124
+ // gap fill 场景:从 contiguousSeq 开始 pull,直接推进到 pull 返回的最大 seq
125
+ if (pulledSeqs.size > 0 && afterSeq !== undefined && afterSeq === t.contiguousSeq) {
126
+ const maxPulled = Math.max(...pulledSeqs);
127
+ if (maxPulled > t.contiguousSeq) {
128
+ t.contiguousSeq = maxPulled;
129
+ // 清理被跳过区间内的 pendingGaps
130
+ for (const [key, probe] of t.pendingGaps) {
131
+ if (probe.gapEnd <= t.contiguousSeq) {
132
+ t.pendingGaps.delete(key);
133
+ }
134
+ }
135
+ // 清理 receivedSeqs 中 <= contiguousSeq 的条目
136
+ for (const s of t.receivedSeqs) {
137
+ if (s <= t.contiguousSeq)
138
+ t.receivedSeqs.delete(s);
139
+ }
140
+ }
141
+ }
115
142
  const now = nowMs();
116
143
  for (const [key, probe] of t.pendingGaps) {
117
144
  if (probe.resolved)
@@ -119,13 +146,10 @@ export class SeqTracker {
119
146
  probe.lastProbeAt = now;
120
147
  probe.probeCount += 1;
121
148
  let allCovered = true;
122
- let anyHit = false;
123
149
  for (let s = probe.gapStart; s <= probe.gapEnd; s++) {
124
- if (pulledSeqs.has(s)) {
125
- anyHit = true;
126
- }
127
- else {
150
+ if (!pulledSeqs.has(s)) {
128
151
  allCovered = false;
152
+ break;
129
153
  }
130
154
  }
131
155
  if (allCovered) {
@@ -133,9 +157,6 @@ export class SeqTracker {
133
157
  }
134
158
  // S2: 不再因 probeCount >= 3 自动 resolved;仅由完整补齐 / 服务端 tombstone 驱动。
135
159
  }
136
- for (const s of pulledSeqs) {
137
- t.receivedSeqs.add(s);
138
- }
139
160
  if (pulledSeqs.size) {
140
161
  t.maxSeenSeq = Math.max(t.maxSeenSeq, Math.max(...pulledSeqs));
141
162
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seq-tracker.js","sourceRoot":"","sources":["../src/seq-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seq-tracker.js","sourceRoot":"","sources":["../src/seq-tracker.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -51,57 +51,11 @@ export interface KeyPairRecord extends JsonObject {
51
51
  public_key_der_b64?: string;
52
52
  curve?: string;
53
53
  }
54
- /** E2EE prekey 记录 */
55
- export interface PrekeyRecord extends JsonObject {
56
- prekey_id?: string;
57
- public_key?: string;
58
- signature?: string;
59
- private_key_pem?: string;
60
- created_at?: number;
61
- updated_at?: number;
62
- expires_at?: number;
63
- }
64
- /** prekey 映射 */
65
- export type PrekeyMap = Record<string, PrekeyRecord>;
66
- /** 群组旧 epoch 记录 */
67
- export interface GroupOldEpochRecord extends JsonObject {
68
- epoch?: number;
69
- secret?: string;
70
- commitment?: string;
71
- member_aids?: string[];
72
- epoch_chain?: string;
73
- epoch_chain_unverified?: boolean;
74
- epoch_chain_unverified_reason?: string;
75
- pending_rotation_id?: string;
76
- pending_created_at?: number;
77
- secret_protection?: JsonObject;
78
- created_at?: number;
79
- updated_at?: number;
80
- expires_at?: number;
81
- }
82
- /** 群组密钥状态 */
83
- export interface GroupSecretRecord extends JsonObject {
84
- group_id?: string;
85
- epoch?: number;
86
- secret?: string;
87
- commitment?: string;
88
- member_aids?: string[];
89
- epoch_chain?: string;
90
- epoch_chain_unverified?: boolean;
91
- epoch_chain_unverified_reason?: string;
92
- pending_rotation_id?: string;
93
- pending_created_at?: number;
94
- updated_at?: number;
95
- secret_protection?: JsonObject;
96
- old_epochs?: GroupOldEpochRecord[];
97
- }
98
54
  /** metadata 记录 */
99
55
  export interface MetadataRecord extends JsonObject {
100
56
  access_token?: string;
101
57
  refresh_token?: string;
102
58
  kite_token?: string;
103
- e2ee_prekeys?: PrekeyMap;
104
- e2ee_sessions?: JsonObject[];
105
59
  }
106
60
  /** 身份记录 */
107
61
  export interface IdentityRecord extends MetadataRecord, KeyPairRecord {
@@ -112,16 +66,6 @@ export interface IdentityRecord extends MetadataRecord, KeyPairRecord {
112
66
  token_exp?: number;
113
67
  expires_at?: number;
114
68
  }
115
- /** E2EE session 记录 */
116
- export interface SessionRecord extends JsonObject {
117
- session_id?: string;
118
- key?: string;
119
- key_protection?: JsonObject;
120
- peer_aid?: string;
121
- created_at?: number;
122
- updated_at?: number;
123
- expires_at?: number;
124
- }
125
69
  /** SecretStore 加密记录 */
126
70
  export interface SecretRecord extends JsonObject {
127
71
  scheme?: string;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * AUN E2EE V2: AES-256-GCM AEAD
3
+ *
4
+ * 规范引用:§3.1
5
+ * - 256-bit 密钥,96-bit nonce,128-bit tag
6
+ * - AAD:上下文绑定(from/to/group_id 等的 canonical_json)
7
+ */
8
+ /**
9
+ * AES-256-GCM 加密。
10
+ *
11
+ * @returns ciphertext 与 tag(16 字节)分离返回
12
+ */
13
+ export declare function aesGcmEncrypt(key: Uint8Array, nonce: Uint8Array, plaintext: Uint8Array, aad: Uint8Array): {
14
+ ciphertext: Uint8Array;
15
+ tag: Uint8Array;
16
+ };
17
+ /**
18
+ * AES-256-GCM 解密。tag 校验失败抛错。
19
+ */
20
+ export declare function aesGcmDecrypt(key: Uint8Array, nonce: Uint8Array, ciphertext: Uint8Array, tag: Uint8Array, aad: Uint8Array): Uint8Array;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * AUN E2EE V2: AES-256-GCM AEAD
3
+ *
4
+ * 规范引用:§3.1
5
+ * - 256-bit 密钥,96-bit nonce,128-bit tag
6
+ * - AAD:上下文绑定(from/to/group_id 等的 canonical_json)
7
+ */
8
+ import { createCipheriv, createDecipheriv } from 'node:crypto';
9
+ const KEY_LEN = 32;
10
+ const NONCE_LEN = 12;
11
+ const TAG_LEN = 16;
12
+ /**
13
+ * AES-256-GCM 加密。
14
+ *
15
+ * @returns ciphertext 与 tag(16 字节)分离返回
16
+ */
17
+ export function aesGcmEncrypt(key, nonce, plaintext, aad) {
18
+ if (key.length !== KEY_LEN) {
19
+ throw new Error(`AES-256-GCM key must be ${KEY_LEN} bytes, got ${key.length}`);
20
+ }
21
+ if (nonce.length !== NONCE_LEN) {
22
+ throw new Error(`AES-256-GCM nonce must be ${NONCE_LEN} bytes, got ${nonce.length}`);
23
+ }
24
+ const cipher = createCipheriv('aes-256-gcm', Buffer.from(key), Buffer.from(nonce));
25
+ if (aad.length > 0) {
26
+ cipher.setAAD(Buffer.from(aad));
27
+ }
28
+ else {
29
+ cipher.setAAD(Buffer.alloc(0));
30
+ }
31
+ const ct = Buffer.concat([cipher.update(Buffer.from(plaintext)), cipher.final()]);
32
+ const tag = cipher.getAuthTag();
33
+ return { ciphertext: new Uint8Array(ct), tag: new Uint8Array(tag) };
34
+ }
35
+ /**
36
+ * AES-256-GCM 解密。tag 校验失败抛错。
37
+ */
38
+ export function aesGcmDecrypt(key, nonce, ciphertext, tag, aad) {
39
+ if (key.length !== KEY_LEN) {
40
+ throw new Error(`AES-256-GCM key must be ${KEY_LEN} bytes, got ${key.length}`);
41
+ }
42
+ if (nonce.length !== NONCE_LEN) {
43
+ throw new Error(`AES-256-GCM nonce must be ${NONCE_LEN} bytes, got ${nonce.length}`);
44
+ }
45
+ if (tag.length !== TAG_LEN) {
46
+ throw new Error(`AES-256-GCM tag must be ${TAG_LEN} bytes, got ${tag.length}`);
47
+ }
48
+ const decipher = createDecipheriv('aes-256-gcm', Buffer.from(key), Buffer.from(nonce));
49
+ if (aad.length > 0) {
50
+ decipher.setAAD(Buffer.from(aad));
51
+ }
52
+ else {
53
+ decipher.setAAD(Buffer.alloc(0));
54
+ }
55
+ decipher.setAuthTag(Buffer.from(tag));
56
+ const pt = Buffer.concat([decipher.update(Buffer.from(ciphertext)), decipher.final()]);
57
+ return new Uint8Array(pt);
58
+ }
59
+ //# sourceMappingURL=aead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aead.js","sourceRoot":"","sources":["../../../src/v2/crypto/aead.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/D,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAe,EACf,KAAiB,EACjB,SAAqB,EACrB,GAAe;IAEf,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAChC,OAAO,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAe,EACf,KAAiB,EACjB,UAAsB,EACtB,GAAe,EACf,GAAe;IAEf,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,eAAe,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACvF,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Canonical JSON 序列化 — AUN E2EE V2 协议要求所有 SDK 输出字节级一致。
3
+ *
4
+ * 规则:
5
+ * - 对象键递归字典序排序
6
+ * - UTF-8 直出(非 ASCII 字符不转义)
7
+ * - 数值:整数无小数点,浮点数无前导零、不用科学计数法
8
+ * - 字符串最小转义:仅 " \ \b \f \n \r \t,其它控制字符 \u00XX
9
+ * - 紧凑格式(无空格)
10
+ * - null / true / false 字面量
11
+ * - 数组顺序保留
12
+ */
13
+ /**
14
+ * 将任意 JSON 值序列化为 canonical JSON 的 UTF-8 字节。
15
+ */
16
+ export declare function canonicalJson(obj: unknown): Uint8Array;
17
+ /**
18
+ * 将任意 JSON 值序列化为 canonical JSON 字符串。
19
+ */
20
+ export declare function canonicalStringify(value: unknown): string;
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Canonical JSON 序列化 — AUN E2EE V2 协议要求所有 SDK 输出字节级一致。
3
+ *
4
+ * 规则:
5
+ * - 对象键递归字典序排序
6
+ * - UTF-8 直出(非 ASCII 字符不转义)
7
+ * - 数值:整数无小数点,浮点数无前导零、不用科学计数法
8
+ * - 字符串最小转义:仅 " \ \b \f \n \r \t,其它控制字符 \u00XX
9
+ * - 紧凑格式(无空格)
10
+ * - null / true / false 字面量
11
+ * - 数组顺序保留
12
+ */
13
+ const encoder = new TextEncoder();
14
+ /**
15
+ * 将任意 JSON 值序列化为 canonical JSON 的 UTF-8 字节。
16
+ */
17
+ export function canonicalJson(obj) {
18
+ return encoder.encode(canonicalStringify(obj));
19
+ }
20
+ /**
21
+ * 将任意 JSON 值序列化为 canonical JSON 字符串。
22
+ */
23
+ export function canonicalStringify(value) {
24
+ if (value === null)
25
+ return 'null';
26
+ if (value === true)
27
+ return 'true';
28
+ if (value === false)
29
+ return 'false';
30
+ if (typeof value === 'number') {
31
+ return formatNumber(value);
32
+ }
33
+ if (typeof value === 'string') {
34
+ return escapeString(value);
35
+ }
36
+ if (Array.isArray(value)) {
37
+ const items = value.map((item) => canonicalStringify(item));
38
+ return '[' + items.join(',') + ']';
39
+ }
40
+ if (typeof value === 'object') {
41
+ const keys = Object.keys(value).sort();
42
+ const pairs = keys.map((k) => escapeString(k) +
43
+ ':' +
44
+ canonicalStringify(value[k]));
45
+ return '{' + pairs.join(',') + '}';
46
+ }
47
+ // undefined 等不可序列化类型 — 按 JSON 规范不应出现
48
+ throw new Error(`canonicalJson: unsupported type ${typeof value}`);
49
+ }
50
+ function formatNumber(n) {
51
+ if (!isFinite(n)) {
52
+ throw new Error(`canonicalJson: cannot serialize ${n}`);
53
+ }
54
+ // 整数输出不带小数点
55
+ if (Number.isInteger(n)) {
56
+ // 用 toFixed(0) 避免科学计数法(如 1e21)
57
+ // 但 toFixed 对超大数会失败,改用条件判断
58
+ if (Math.abs(n) < 1e21) {
59
+ return n.toFixed(0);
60
+ }
61
+ // 超大整数:toString 可能用科学计数法,需要手动展开
62
+ return bigIntegerToString(n);
63
+ }
64
+ // 浮点数:使用 toString 输出(不用科学计数法的范围内)
65
+ return n.toString();
66
+ }
67
+ /**
68
+ * 将超大整数(>= 1e21)转为不带科学计数法的字符串。
69
+ */
70
+ function bigIntegerToString(n) {
71
+ // 利用 BigInt 来避免科学计数法
72
+ return BigInt(n).toString();
73
+ }
74
+ /**
75
+ * 最小转义字符串序列化。
76
+ * 仅转义:" \ \b \f \n \r \t 和其它控制字符(U+0000..U+001F)用 \u00XX。
77
+ * 非 ASCII 字符直接 UTF-8 输出,不转义。
78
+ */
79
+ function escapeString(s) {
80
+ let result = '"';
81
+ for (let i = 0; i < s.length; i++) {
82
+ const ch = s.charCodeAt(i);
83
+ switch (ch) {
84
+ case 0x22: // "
85
+ result += '\\"';
86
+ break;
87
+ case 0x5c: // \
88
+ result += '\\\\';
89
+ break;
90
+ case 0x08: // \b
91
+ result += '\\b';
92
+ break;
93
+ case 0x0c: // \f
94
+ result += '\\f';
95
+ break;
96
+ case 0x0a: // \n
97
+ result += '\\n';
98
+ break;
99
+ case 0x0d: // \r
100
+ result += '\\r';
101
+ break;
102
+ case 0x09: // \t
103
+ result += '\\t';
104
+ break;
105
+ default:
106
+ if (ch < 0x20) {
107
+ // 其它控制字符用 \u00XX
108
+ result += '\\u' + ch.toString(16).padStart(4, '0');
109
+ }
110
+ else {
111
+ // 普通字符(含非 ASCII)直接输出
112
+ result += s[i];
113
+ }
114
+ }
115
+ }
116
+ result += '"';
117
+ return result;
118
+ }
119
+ //# sourceMappingURL=canonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../../src/v2/crypto/canonical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrC,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,CAAC,EAAE,EAAE,CACJ,YAAY,CAAC,CAAC,CAAC;YACf,GAAG;YACH,kBAAkB,CAAE,KAAiC,CAAC,CAAC,CAAC,CAAC,CAC5D,CAAC;QACF,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACrC,CAAC;IAED,qCAAqC;IACrC,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,YAAY;IACZ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACxB,+BAA+B;QAC/B,2BAA2B;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,gCAAgC;QAChC,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,kCAAkC;IAClC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,CAAS;IACnC,qBAAqB;IACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,MAAM,GAAG,GAAG,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,IAAI,EAAE,IAAI;gBACb,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,EAAE,IAAI;gBACb,MAAM,IAAI,MAAM,CAAC;gBACjB,MAAM;YACR,KAAK,IAAI,EAAE,KAAK;gBACd,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,EAAE,KAAK;gBACd,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,EAAE,KAAK;gBACd,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,EAAE,KAAK;gBACd,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR,KAAK,IAAI,EAAE,KAAK;gBACd,MAAM,IAAI,KAAK,CAAC;gBAChB,MAAM;YACR;gBACE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;oBACd,iBAAiB;oBACjB,MAAM,IAAI,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,qBAAqB;oBACrB,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjB,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * AUN E2EE V2: 1DH / 3DH wrap_key 派生
3
+ *
4
+ * 规范引用:§4.x
5
+ *
6
+ * 3DH(活跃会话):
7
+ * DH1 = ECDH(senderSessionPriv, recvIKPub)
8
+ * DH2 = ECDH(senderMasterPriv, recvSPKPub)
9
+ * DH3 = ECDH(senderSessionPriv, recvSPKPub)
10
+ * ikm = DH1 || DH2 || DH3
11
+ * wrap_key = HKDF-SHA256(ikm, salt, info="AUN-V2-3DH", 32)
12
+ *
13
+ * 1DH(无 SPK 的回退路径):
14
+ * DH = ECDH(senderSessionPriv, recvIKPub)
15
+ * wrap_key = HKDF-SHA256(DH, salt, info="AUN-V2-1DH", 32)
16
+ */
17
+ export declare const INFO_3DH: Uint8Array;
18
+ export declare const INFO_1DH: Uint8Array;
19
+ export declare const WRAP_KEY_LENGTH = 32;
20
+ /**
21
+ * 计算 3DH wrap_key。
22
+ *
23
+ * @param senderSessionPriv 发送方会话私钥(32B 标量)
24
+ * @param senderMasterPriv 发送方 AID 长期主私钥(32B 标量)
25
+ * @param recvIKPub 接收方身份公钥 IK(DER SPKI)
26
+ * @param recvSPKPub 接收方 Signed PreKey 公钥 SPK(DER SPKI)
27
+ * @param salt HKDF salt
28
+ * @returns 32 字节 wrap_key
29
+ */
30
+ export declare function compute3DHWrap(senderSessionPriv: Uint8Array, senderMasterPriv: Uint8Array, recvIKPub: Uint8Array, recvSPKPub: Uint8Array, salt: Uint8Array): Uint8Array;
31
+ /**
32
+ * 计算 1DH wrap_key(fallback)。
33
+ *
34
+ * @param senderSessionPriv 发送方会话私钥(32B 标量)
35
+ * @param recvIKPub 接收方身份公钥 IK(DER SPKI)
36
+ * @param salt HKDF salt
37
+ * @returns 32 字节 wrap_key
38
+ */
39
+ export declare function compute1DHWrap(senderSessionPriv: Uint8Array, recvIKPub: Uint8Array, salt: Uint8Array): Uint8Array;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * AUN E2EE V2: 1DH / 3DH wrap_key 派生
3
+ *
4
+ * 规范引用:§4.x
5
+ *
6
+ * 3DH(活跃会话):
7
+ * DH1 = ECDH(senderSessionPriv, recvIKPub)
8
+ * DH2 = ECDH(senderMasterPriv, recvSPKPub)
9
+ * DH3 = ECDH(senderSessionPriv, recvSPKPub)
10
+ * ikm = DH1 || DH2 || DH3
11
+ * wrap_key = HKDF-SHA256(ikm, salt, info="AUN-V2-3DH", 32)
12
+ *
13
+ * 1DH(无 SPK 的回退路径):
14
+ * DH = ECDH(senderSessionPriv, recvIKPub)
15
+ * wrap_key = HKDF-SHA256(DH, salt, info="AUN-V2-1DH", 32)
16
+ */
17
+ import { ecdhComputeShared } from './ecdh.js';
18
+ import { hkdfSha256 } from './hkdf.js';
19
+ const TEXT = new TextEncoder();
20
+ export const INFO_3DH = TEXT.encode('AUN-V2-3DH');
21
+ export const INFO_1DH = TEXT.encode('AUN-V2-1DH');
22
+ export const WRAP_KEY_LENGTH = 32;
23
+ /**
24
+ * 计算 3DH wrap_key。
25
+ *
26
+ * @param senderSessionPriv 发送方会话私钥(32B 标量)
27
+ * @param senderMasterPriv 发送方 AID 长期主私钥(32B 标量)
28
+ * @param recvIKPub 接收方身份公钥 IK(DER SPKI)
29
+ * @param recvSPKPub 接收方 Signed PreKey 公钥 SPK(DER SPKI)
30
+ * @param salt HKDF salt
31
+ * @returns 32 字节 wrap_key
32
+ */
33
+ export function compute3DHWrap(senderSessionPriv, senderMasterPriv, recvIKPub, recvSPKPub, salt) {
34
+ const dh1 = ecdhComputeShared(senderSessionPriv, recvIKPub);
35
+ const dh2 = ecdhComputeShared(senderMasterPriv, recvSPKPub);
36
+ const dh3 = ecdhComputeShared(senderSessionPriv, recvSPKPub);
37
+ const ikm = new Uint8Array(96);
38
+ ikm.set(dh1, 0);
39
+ ikm.set(dh2, 32);
40
+ ikm.set(dh3, 64);
41
+ return hkdfSha256(ikm, salt, INFO_3DH, WRAP_KEY_LENGTH);
42
+ }
43
+ /**
44
+ * 计算 1DH wrap_key(fallback)。
45
+ *
46
+ * @param senderSessionPriv 发送方会话私钥(32B 标量)
47
+ * @param recvIKPub 接收方身份公钥 IK(DER SPKI)
48
+ * @param salt HKDF salt
49
+ * @returns 32 字节 wrap_key
50
+ */
51
+ export function compute1DHWrap(senderSessionPriv, recvIKPub, salt) {
52
+ const dh = ecdhComputeShared(senderSessionPriv, recvIKPub);
53
+ return hkdfSha256(dh, salt, INFO_1DH, WRAP_KEY_LENGTH);
54
+ }
55
+ //# sourceMappingURL=dh-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dh-path.js","sourceRoot":"","sources":["../../../src/v2/crypto/dh-path.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,MAAM,CAAC,MAAM,QAAQ,GAAe,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAe,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,iBAA6B,EAC7B,gBAA4B,EAC5B,SAAqB,EACrB,UAAsB,EACtB,IAAgB;IAEhB,MAAM,GAAG,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjB,OAAO,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,iBAA6B,EAC7B,SAAqB,EACrB,IAAgB;IAEhB,MAAM,EAAE,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ECDH P-256 — AUN E2EE V2 协议要求所有 SDK 的 ECDH 输出字节级一致。
3
+ *
4
+ * 共享秘密为 P-256 曲线点乘后的 X 坐标(32 字节,big-endian)。
5
+ *
6
+ * 实现选型:
7
+ * - 使用 Node `crypto` 模块(非 WebCrypto,TS SDK 目标为 Node 环境)
8
+ * - `createECDH('prime256v1')` 计算 X 坐标
9
+ * - 公钥使用 DER SubjectPublicKeyInfo 编码(与 Python/Go SDK 对齐)
10
+ * - 通过 JWK 中转完成 DER ↔ 未压缩点(0x04 || X || Y)的转换
11
+ */
12
+ /**
13
+ * 计算 ECDH 共享秘密(P-256 X 坐标,32 字节)。
14
+ *
15
+ * @param privateKeyScalar 32 字节 P-256 私钥标量(big-endian)
16
+ * @param peerPublicKeyDer DER SubjectPublicKeyInfo 编码的对端公钥
17
+ * @returns 32 字节共享秘密(X 坐标 big-endian)
18
+ */
19
+ export declare function ecdhComputeShared(privateKeyScalar: Uint8Array, peerPublicKeyDer: Uint8Array): Uint8Array;
20
+ /**
21
+ * 生成 P-256 密钥对。
22
+ *
23
+ * @returns [privateKeyScalar 32B, publicKeyDer SPKI]
24
+ */
25
+ export declare function generateP256Keypair(): [Uint8Array, Uint8Array];
26
+ /**
27
+ * 从私钥标量导出公钥 DER(SPKI 编码)。
28
+ */
29
+ export declare function privateToPublicDer(privateKeyScalar: Uint8Array): Uint8Array;