keri 0.0.0-dev.8b7f24e → 0.0.0-dev.973a137

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 (186) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/cesr/array-utils.d.ts +3 -0
  4. package/dist/cesr/array-utils.js +29 -0
  5. package/dist/cesr/array-utils.js.map +1 -0
  6. package/dist/cesr/attachments-reader.d.ts +10 -0
  7. package/dist/cesr/attachments-reader.js +281 -0
  8. package/dist/cesr/attachments-reader.js.map +1 -0
  9. package/dist/cesr/attachments.d.ts +66 -0
  10. package/dist/cesr/attachments.js +108 -0
  11. package/dist/cesr/attachments.js.map +1 -0
  12. package/dist/cesr/codes.d.ts +1208 -0
  13. package/dist/cesr/codes.js +309 -0
  14. package/dist/cesr/codes.js.map +1 -0
  15. package/dist/cesr/counter.d.ts +114 -0
  16. package/dist/cesr/counter.js +78 -0
  17. package/dist/cesr/counter.js.map +1 -0
  18. package/dist/cesr/frame.d.ts +31 -0
  19. package/dist/cesr/frame.js +99 -0
  20. package/dist/cesr/frame.js.map +1 -0
  21. package/dist/cesr/genus.d.ts +18 -0
  22. package/dist/cesr/genus.js +57 -0
  23. package/dist/cesr/genus.js.map +1 -0
  24. package/dist/cesr/groups/generic-map.d.ts +11 -0
  25. package/dist/cesr/groups/generic-map.js +51 -0
  26. package/dist/cesr/groups/generic-map.js.map +1 -0
  27. package/dist/cesr/indexer.d.ts +68 -0
  28. package/dist/cesr/indexer.js +171 -0
  29. package/dist/cesr/indexer.js.map +1 -0
  30. package/dist/cesr/main.d.ts +9 -0
  31. package/dist/cesr/main.js +10 -0
  32. package/dist/cesr/main.js.map +1 -0
  33. package/dist/cesr/matter.d.ts +160 -0
  34. package/dist/cesr/matter.js +301 -0
  35. package/dist/cesr/matter.js.map +1 -0
  36. package/dist/cesr/message.d.ts +17 -0
  37. package/dist/cesr/message.js +81 -0
  38. package/dist/cesr/message.js.map +1 -0
  39. package/dist/cesr/parse.d.ts +37 -0
  40. package/dist/cesr/parse.js +138 -0
  41. package/dist/cesr/parse.js.map +1 -0
  42. package/dist/cesr/shifting.d.ts +7 -0
  43. package/dist/cesr/shifting.js +10 -0
  44. package/dist/cesr/shifting.js.map +1 -0
  45. package/dist/cesr/version-string.d.ts +35 -0
  46. package/dist/cesr/version-string.js +146 -0
  47. package/dist/cesr/version-string.js.map +1 -0
  48. package/dist/cli/cli.d.ts +5 -0
  49. package/dist/cli/cli.js +73 -0
  50. package/dist/cli/cli.js.map +1 -0
  51. package/dist/cli/input.d.ts +1 -0
  52. package/dist/cli/input.js +22 -0
  53. package/dist/cli/input.js.map +1 -0
  54. package/dist/cli/node-cli.d.ts +2 -0
  55. package/dist/cli/node-cli.js +19 -0
  56. package/dist/cli/node-cli.js.map +1 -0
  57. package/dist/controller/controller.d.ts +40 -29
  58. package/dist/controller/controller.js +120 -25
  59. package/dist/controller/controller.js.map +1 -1
  60. package/dist/controller/main.d.ts +1 -0
  61. package/dist/controller/main.js +2 -0
  62. package/dist/controller/main.js.map +1 -0
  63. package/dist/core/credential-event.d.ts +5 -9
  64. package/dist/core/credential-event.js +1 -1
  65. package/dist/core/credential-event.js.map +1 -1
  66. package/dist/core/credential.d.ts +1 -1
  67. package/dist/core/credential.js +2 -2
  68. package/dist/core/credential.js.map +1 -1
  69. package/dist/core/digest.js +3 -3
  70. package/dist/core/digest.js.map +1 -1
  71. package/dist/core/endpoint-discovery.d.ts +4 -4
  72. package/dist/core/endpoint-discovery.js.map +1 -1
  73. package/dist/core/events.js +2 -2
  74. package/dist/core/events.js.map +1 -1
  75. package/dist/core/kawa.d.ts +2 -2
  76. package/dist/core/kawa.js +7 -38
  77. package/dist/core/kawa.js.map +1 -1
  78. package/dist/core/key-event-log.d.ts +50 -6
  79. package/dist/core/key-event-log.js +154 -20
  80. package/dist/core/key-event-log.js.map +1 -1
  81. package/dist/core/key-event.d.ts +23 -10
  82. package/dist/core/key-event.js +66 -2
  83. package/dist/core/key-event.js.map +1 -1
  84. package/dist/core/keys.d.ts +2 -1
  85. package/dist/core/keys.js +10 -10
  86. package/dist/core/keys.js.map +1 -1
  87. package/dist/core/mailbox-client.d.ts +7 -1
  88. package/dist/core/mailbox-client.js +37 -19
  89. package/dist/core/mailbox-client.js.map +1 -1
  90. package/dist/core/main.d.ts +30 -21
  91. package/dist/core/main.js +17 -13
  92. package/dist/core/main.js.map +1 -1
  93. package/dist/core/receipt-event.d.ts +2 -2
  94. package/dist/core/receipt-event.js +1 -1
  95. package/dist/core/receipt-event.js.map +1 -1
  96. package/dist/core/registry-event.d.ts +3 -5
  97. package/dist/core/registry-event.js +1 -1
  98. package/dist/core/registry-event.js.map +1 -1
  99. package/dist/core/routed-event.d.ts +7 -13
  100. package/dist/core/routed-event.js +2 -2
  101. package/dist/core/routed-event.js.map +1 -1
  102. package/dist/core/said.js +9 -6
  103. package/dist/core/said.js.map +1 -1
  104. package/dist/core/sign.js +3 -3
  105. package/dist/core/sign.js.map +1 -1
  106. package/dist/core/verify.d.ts +11 -2
  107. package/dist/core/verify.js +30 -11
  108. package/dist/core/verify.js.map +1 -1
  109. package/dist/core/witness-client.d.ts +8 -0
  110. package/dist/core/witness-client.js +39 -0
  111. package/dist/core/witness-client.js.map +1 -0
  112. package/dist/encoding/base64.d.ts +4 -0
  113. package/dist/encoding/base64.js +82 -0
  114. package/dist/encoding/base64.js.map +1 -0
  115. package/dist/encoding/main.d.ts +2 -0
  116. package/dist/encoding/main.js +3 -0
  117. package/dist/encoding/main.js.map +1 -0
  118. package/dist/encoding/utf8.d.ts +2 -0
  119. package/dist/encoding/utf8.js +9 -0
  120. package/dist/encoding/utf8.js.map +1 -0
  121. package/dist/logging/main.d.ts +15 -0
  122. package/dist/logging/main.js +25 -0
  123. package/dist/logging/main.js.map +1 -0
  124. package/dist/mailbox/mailbox-router.d.ts +6 -0
  125. package/dist/mailbox/mailbox-router.js +88 -0
  126. package/dist/mailbox/mailbox-router.js.map +1 -0
  127. package/dist/mailbox/mailbox.d.ts +27 -0
  128. package/dist/mailbox/mailbox.js +101 -0
  129. package/dist/mailbox/mailbox.js.map +1 -0
  130. package/dist/mailbox/main.d.ts +3 -0
  131. package/dist/mailbox/main.js +3 -0
  132. package/dist/mailbox/main.js.map +1 -0
  133. package/dist/main.d.ts +2 -1
  134. package/dist/main.js +1 -1
  135. package/dist/main.js.map +1 -1
  136. package/dist/nodejs-utils/main.d.ts +2 -0
  137. package/dist/nodejs-utils/main.js +2 -0
  138. package/dist/nodejs-utils/main.js.map +1 -0
  139. package/dist/nodejs-utils/serve.d.ts +6 -0
  140. package/dist/nodejs-utils/serve.js +68 -0
  141. package/dist/nodejs-utils/serve.js.map +1 -0
  142. package/dist/{storage/sqlite/storage-sqlite.d.ts → sqlite-storage/main.d.ts} +10 -8
  143. package/dist/{storage/sqlite/storage-sqlite.js → sqlite-storage/main.js} +38 -12
  144. package/dist/sqlite-storage/main.js.map +1 -0
  145. package/dist/sqlite-storage/node-sqlite.js.map +1 -0
  146. package/dist/sqlite-storage/schema.js +67 -0
  147. package/dist/sqlite-storage/schema.js.map +1 -0
  148. package/dist/sqlite-storage/sqlite-database.js.map +1 -0
  149. package/dist/storage/credential-storage.d.ts +8 -0
  150. package/dist/storage/credential-storage.js +2 -0
  151. package/dist/storage/credential-storage.js.map +1 -0
  152. package/dist/storage/key-event-storage.d.ts +10 -0
  153. package/dist/storage/key-event-storage.js +2 -0
  154. package/dist/storage/key-event-storage.js.map +1 -0
  155. package/dist/storage/mailbox-server-storage.d.ts +9 -0
  156. package/dist/storage/mailbox-server-storage.js +2 -0
  157. package/dist/storage/mailbox-server-storage.js.map +1 -0
  158. package/dist/storage/mailbox-storage.d.ts +4 -0
  159. package/dist/storage/mailbox-storage.js +2 -0
  160. package/dist/storage/mailbox-storage.js.map +1 -0
  161. package/dist/storage/main.d.ts +5 -0
  162. package/dist/storage/main.js +2 -0
  163. package/dist/storage/main.js.map +1 -0
  164. package/dist/storage/private-key-storage.d.ts +5 -0
  165. package/dist/storage/private-key-storage.js +2 -0
  166. package/dist/storage/private-key-storage.js.map +1 -0
  167. package/dist/witness/main.d.ts +3 -0
  168. package/dist/witness/main.js +3 -0
  169. package/dist/witness/main.js.map +1 -0
  170. package/dist/witness/witness-router.d.ts +6 -0
  171. package/dist/witness/witness-router.js +120 -0
  172. package/dist/witness/witness-router.js.map +1 -0
  173. package/dist/witness/witness.d.ts +26 -0
  174. package/dist/witness/witness.js +164 -0
  175. package/dist/witness/witness.js.map +1 -0
  176. package/package.json +24 -20
  177. package/dist/storage/sqlite/node-sqlite.js.map +0 -1
  178. package/dist/storage/sqlite/schema.js +0 -49
  179. package/dist/storage/sqlite/schema.js.map +0 -1
  180. package/dist/storage/sqlite/sqlite-database.js.map +0 -1
  181. package/dist/storage/sqlite/storage-sqlite.js.map +0 -1
  182. /package/dist/{storage/sqlite → sqlite-storage}/node-sqlite.d.ts +0 -0
  183. /package/dist/{storage/sqlite → sqlite-storage}/node-sqlite.js +0 -0
  184. /package/dist/{storage/sqlite → sqlite-storage}/schema.d.ts +0 -0
  185. /package/dist/{storage/sqlite → sqlite-storage}/sqlite-database.d.ts +0 -0
  186. /package/dist/{storage/sqlite → sqlite-storage}/sqlite-database.js +0 -0
package/dist/core/kawa.js CHANGED
@@ -1,38 +1,6 @@
1
- import { cesr, Indexer, Matter, Message, parse } from "cesr";
1
+ import { encodeText, Indexer, Matter, Message } from "../cesr/main.js";
2
2
  import { MailboxClient } from "./mailbox-client.js";
3
- import { verifyOrThrow } from "./verify.js";
4
- import {} from "./receipt-event.js";
5
- async function receipt(event, witnessUrl) {
6
- const url = new URL("/receipts", witnessUrl);
7
- if (url.protocol !== "http:" && url.protocol !== "https:") {
8
- throw new Error(`Invalid protocol: ${url}`);
9
- }
10
- const fetchResponse = await fetch(url, {
11
- method: "POST",
12
- body: JSON.stringify(event.body),
13
- headers: {
14
- "Content-Type": "application/cesr+json",
15
- "CESR-ATTACHMENT": event.attachments.text(),
16
- },
17
- });
18
- if (!fetchResponse.ok || !fetchResponse.body) {
19
- throw new Error(`Failed to submit event to witness: ${fetchResponse.status} ${fetchResponse.statusText}`);
20
- }
21
- for await (const incoming of parse(fetchResponse.body)) {
22
- if (incoming.body.t === "rct" && incoming.body.d === event.body.d) {
23
- for (const couple of incoming.attachments.NonTransReceiptCouples) {
24
- const sig = Indexer.convert(Matter.parse(couple.sig), 0).text();
25
- verifyOrThrow(event.raw, {
26
- keys: [couple.prefix],
27
- sigs: [sig],
28
- threshold: "1",
29
- });
30
- }
31
- return incoming;
32
- }
33
- }
34
- throw new Error(`No receipt returned from ${witnessUrl}`);
35
- }
3
+ import { WitnessClient } from "./witness-client.js";
36
4
  /**
37
5
  * KERI Algorithm for Witness Agreement (KAWA).
38
6
  *
@@ -43,7 +11,7 @@ async function receipt(event, witnessUrl) {
43
11
  * @param endpoints Pre-resolved endpoints for each witness
44
12
  * @returns Indexed witness signatures (wigs)
45
13
  */
46
- export async function submitToWitnesses(event, endpoints) {
14
+ export async function submitToWitnesses(event, endpoints, fetch) {
47
15
  // TODO: implement the spec's round-robin approach where receipts collected from
48
16
  // earlier witnesses are forwarded to later ones in the same pass, reducing total
49
17
  // network exchanges from N+(N×(N-1)) to at most 2×N.
@@ -51,19 +19,20 @@ export async function submitToWitnesses(event, endpoints) {
51
19
  const wigs = new Set();
52
20
  const wits = endpoints.map((e) => e.aid);
53
21
  for (const endpoint of endpoints) {
54
- const response = await receipt(event, endpoint.url);
22
+ const client = new WitnessClient(endpoint.url, fetch);
23
+ const response = await client.receipt(event);
55
24
  if (response.attachments.NonTransReceiptCouples.length > 0) {
56
25
  const receiptCouple = response.attachments.NonTransReceiptCouples[0];
57
26
  const witnessIndex = wits.indexOf(receiptCouple.prefix);
58
27
  if (witnessIndex !== -1) {
59
28
  const signature = Matter.parse(receiptCouple.sig);
60
- wigs.add(cesr.index(signature, witnessIndex).text());
29
+ wigs.add(encodeText(Indexer.convert(signature, witnessIndex)));
61
30
  }
62
31
  }
63
32
  receipts[endpoint.aid] = response;
64
33
  }
65
34
  for (const endpoint of endpoints) {
66
- const client = new MailboxClient({ id: endpoint.aid, url: endpoint.url });
35
+ const client = new MailboxClient({ id: endpoint.aid, url: endpoint.url, fetch });
67
36
  for (const [other, receipt] of Object.entries(receipts)) {
68
37
  if (other === endpoint.aid) {
69
38
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"kawa.js","sourceRoot":"","sources":["../../src/core/kawa.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kawa.js","sourceRoot":"","sources":["../../src/core/kawa.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAOpD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,KAA4B,EAC5B,SAA4B,EAC5B,KAA+B;IAE/B,gFAAgF;IAChF,iFAAiF;IACjF,qDAAqD;IACrD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEzC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAExD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAClD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjF,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,IAAI,KAAK,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;gBAC3B,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE;gBACxC,sBAAsB,EAAE,OAAO,CAAC,WAAW,CAAC,sBAAsB;aACnE,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,13 +1,57 @@
1
- import { Message } from "cesr";
2
- import { type KeyState, type InceptEvent, type InteractEvent, type RotateEvent, type KeyEventBody } from "./key-event.ts";
3
- export type { KeyState, InceptEvent, InteractEvent, RotateEvent };
1
+ import { Message } from "../cesr/main.ts";
2
+ import type { InceptEventBody, InteractEventBody, KeyEventBody, KeyState, RotateEventBody } from "./key-event.ts";
3
+ export interface AppendOptions {
4
+ /** Allow appending an event whose controller signatures don't meet the signing threshold. Individual signatures that are present must still be cryptographically valid. */
5
+ allowPartiallySigned?: boolean;
6
+ /** Allow appending an event whose witness signatures don't meet the backer threshold. Individual signatures that are present must still be cryptographically valid. */
7
+ allowPartiallyWitnessed?: boolean;
8
+ /**
9
+ * KEL of the delegator. When provided and the appended event is a `dip` or
10
+ * `drt`, the SealSourceCouple/Triple in the event's attachments is verified
11
+ * against the delegator's KEL — proving the delegator anchored this event
12
+ * via an `ixn` whose `a` field carries a matching key-event seal. The
13
+ * returned KEL retains the delegator so subsequent `ixn`/`rot`/`drt` appends
14
+ * carry the same verified anchor chain.
15
+ *
16
+ * Omitting this option for a delegated event is a deliberate "skip
17
+ * delegator-anchor verification" choice. Callers that load delegated KELs
18
+ * from storage (`KeyEventLog.from(storage.getKeyEvents(...))`) without
19
+ * re-supplying the delegator KEL will not re-verify the anchor at load time.
20
+ *
21
+ * When both `SealSourceCouples` and `SealSourceTriples` are attached, every
22
+ * referenced entry must validate — any single broken hint fails the append.
23
+ */
24
+ delegator?: KeyEventLog;
25
+ }
26
+ export type { InceptEventBody as InceptEvent, InteractEventBody as InteractEvent, KeyState, RotateEventBody as RotateEvent, };
4
27
  export declare class KeyEventLog {
5
28
  #private;
6
29
  private constructor();
7
30
  static empty(): KeyEventLog;
8
- static from(events: Iterable<Message<KeyEventBody>>): KeyEventLog;
9
- static parse(stream: AsyncIterable<Uint8Array>): Promise<KeyEventLog>;
31
+ static from(events: Iterable<Message<KeyEventBody>>, options?: AppendOptions): KeyEventLog;
32
+ /**
33
+ * Parse a CESR byte stream of KEL events into a verified KeyEventLog.
34
+ *
35
+ * Non-KEL messages in the stream are ignored. For multi-AID streams (e.g.
36
+ * an OOBI response for a delegated AID that returns both the delegator's
37
+ * KEL and the delegate's), the leaf AID — one not referenced as `di` by
38
+ * any other dip — is selected and the delegator chain is built bottom-up
39
+ * so the dip's anchor can be verified against the delegator's KEL.
40
+ *
41
+ * Throws on a multi-AID stream that has no leaf (cycle) or more than one
42
+ * leaf (ambiguous — e.g. two unrelated AIDs).
43
+ */
44
+ static parse(stream: AsyncIterable<Uint8Array>, options?: AppendOptions): Promise<KeyEventLog>;
45
+ /**
46
+ * Same multi-AID handling as `parse`, but operates on pre-collected
47
+ * messages — useful when the caller has already consumed the stream
48
+ * (e.g. to split KEL events from `rpy` messages in the same response).
49
+ */
50
+ static fromMessages(messages: Iterable<Message<KeyEventBody>>, options?: AppendOptions): KeyEventLog;
10
51
  get state(): KeyState;
11
52
  get events(): Message<KeyEventBody>[];
12
- append(message: Message<KeyEventBody>): KeyEventLog;
53
+ /** The delegator's KEL when this KEL belongs to a delegated AID and was constructed with one; null otherwise. */
54
+ get delegator(): KeyEventLog | null;
55
+ append(message: Message<KeyEventBody>, options?: AppendOptions): KeyEventLog;
13
56
  }
57
+ export declare function isKelEventType(t: unknown): boolean;
@@ -1,32 +1,94 @@
1
- import { Message, parse } from "cesr";
2
- import {} from "./key-event.js";
3
- import { verifyOrThrow } from "./verify.js";
1
+ import { Message, parse } from "../cesr/main.js";
2
+ import { verifySignaturesOrThrow, verifyThresholdOrThrow } from "./verify.js";
4
3
  export class KeyEventLog {
5
4
  #events;
6
5
  #state;
7
- constructor(events, state) {
6
+ #delegator;
7
+ constructor(events, state, delegator = null) {
8
8
  this.#events = events;
9
9
  this.#state = state;
10
+ this.#delegator = delegator;
10
11
  }
11
12
  static empty() {
12
13
  return new KeyEventLog([], null);
13
14
  }
14
- static from(events) {
15
+ static from(events, options) {
15
16
  let log = KeyEventLog.empty();
16
17
  for (const event of events) {
17
- log = log.append(event);
18
+ log = log.append(event, options);
18
19
  }
19
20
  return log;
20
21
  }
21
- static async parse(stream) {
22
- let log = KeyEventLog.empty();
22
+ /**
23
+ * Parse a CESR byte stream of KEL events into a verified KeyEventLog.
24
+ *
25
+ * Non-KEL messages in the stream are ignored. For multi-AID streams (e.g.
26
+ * an OOBI response for a delegated AID that returns both the delegator's
27
+ * KEL and the delegate's), the leaf AID — one not referenced as `di` by
28
+ * any other dip — is selected and the delegator chain is built bottom-up
29
+ * so the dip's anchor can be verified against the delegator's KEL.
30
+ *
31
+ * Throws on a multi-AID stream that has no leaf (cycle) or more than one
32
+ * leaf (ambiguous — e.g. two unrelated AIDs).
33
+ */
34
+ static async parse(stream, options) {
35
+ const messages = [];
23
36
  for await (const message of parse(stream)) {
24
37
  // TODO: Verify that the message is a valid KeyEventBody before casting
25
- if (message.body.t === "icp" || message.body.t === "ixn" || message.body.t === "rot") {
26
- log = log.append(message);
38
+ if (isKelEventType(message.body.t)) {
39
+ messages.push(message);
27
40
  }
28
41
  }
29
- return log;
42
+ return KeyEventLog.fromMessages(messages, options);
43
+ }
44
+ /**
45
+ * Same multi-AID handling as `parse`, but operates on pre-collected
46
+ * messages — useful when the caller has already consumed the stream
47
+ * (e.g. to split KEL events from `rpy` messages in the same response).
48
+ */
49
+ static fromMessages(messages, options) {
50
+ const byAid = new Map();
51
+ for (const m of messages) {
52
+ let list = byAid.get(m.body.i);
53
+ if (!list) {
54
+ list = [];
55
+ byAid.set(m.body.i, list);
56
+ }
57
+ list.push(m);
58
+ }
59
+ if (byAid.size === 0) {
60
+ return KeyEventLog.empty();
61
+ }
62
+ if (byAid.size === 1) {
63
+ return KeyEventLog.from(byAid.values().next().value, options);
64
+ }
65
+ const referencedAsDelegator = new Set();
66
+ for (const events of byAid.values()) {
67
+ const dip = events.find((e) => e.body.t === "dip");
68
+ if (dip && typeof dip.body.di === "string") {
69
+ referencedAsDelegator.add(dip.body.di);
70
+ }
71
+ }
72
+ const leaves = Array.from(byAid.keys()).filter((aid) => !referencedAsDelegator.has(aid));
73
+ if (leaves.length === 0) {
74
+ throw new Error("KeyEventLog.fromMessages: no leaf AID in multi-AID stream (cycle?)");
75
+ }
76
+ if (leaves.length > 1) {
77
+ throw new Error(`KeyEventLog.fromMessages: ambiguous multi-AID stream, found ${leaves.length} leaf AIDs`);
78
+ }
79
+ const buildFor = (aid) => {
80
+ const events = byAid.get(aid) ?? [];
81
+ let delegator;
82
+ const first = events[0];
83
+ if (first && first.body.t === "dip") {
84
+ const delegatorAid = first.body.di;
85
+ if (byAid.has(delegatorAid)) {
86
+ delegator = buildFor(delegatorAid);
87
+ }
88
+ }
89
+ return KeyEventLog.from(events, { ...options, delegator });
90
+ };
91
+ return buildFor(leaves[0]);
30
92
  }
31
93
  get state() {
32
94
  if (this.#state === null) {
@@ -37,13 +99,21 @@ export class KeyEventLog {
37
99
  get events() {
38
100
  return this.#events;
39
101
  }
40
- append(message) {
102
+ /** The delegator's KEL when this KEL belongs to a delegated AID and was constructed with one; null otherwise. */
103
+ get delegator() {
104
+ return this.#delegator;
105
+ }
106
+ append(message, options) {
41
107
  const sigs = message.attachments.ControllerIdxSigs ?? [];
42
108
  const wigs = message.attachments.WitnessIdxSigs ?? [];
43
109
  const body = message.body;
44
110
  const bodyRaw = new Message(body).raw;
111
+ const verifySigning = options?.allowPartiallySigned ? verifySignaturesOrThrow : verifyThresholdOrThrow;
112
+ const verifyWitness = options?.allowPartiallyWitnessed ? verifySignaturesOrThrow : verifyThresholdOrThrow;
113
+ const delegator = options?.delegator ?? this.#delegator;
45
114
  switch (body.t) {
46
- case "icp": {
115
+ case "icp":
116
+ case "dip": {
47
117
  if (this.#state !== null) {
48
118
  throw new Error("State already initialized");
49
119
  }
@@ -51,45 +121,91 @@ export class KeyEventLog {
51
121
  if (!icp.k || !Array.isArray(icp.k) || icp.k.length === 0) {
52
122
  throw new Error("Inception event must have at least one key");
53
123
  }
54
- verifyOrThrow(bodyRaw, {
124
+ verifySigning(bodyRaw, {
55
125
  keys: icp.k,
56
126
  threshold: icp.kt,
57
127
  sigs,
58
128
  });
59
129
  if (icp.b && Array.isArray(icp.b) && icp.b.length > 0) {
60
- verifyOrThrow(bodyRaw, {
130
+ verifyWitness(bodyRaw, {
61
131
  keys: icp.b,
62
132
  threshold: icp.bt,
63
133
  sigs: wigs,
64
134
  });
65
135
  }
136
+ if (body.t === "dip" && delegator) {
137
+ verifyDelegationAnchor(body, message.attachments, delegator);
138
+ }
66
139
  break;
67
140
  }
68
141
  case "ixn":
69
- case "rot": {
142
+ case "rot":
143
+ case "drt": {
70
144
  if (this.#state === null) {
71
145
  throw new Error("State must be initialized before applying interact or rotate events");
72
146
  }
73
147
  const state = this.#state;
74
- verifyOrThrow(bodyRaw, {
148
+ verifySigning(bodyRaw, {
75
149
  keys: state.signingKeys,
76
150
  threshold: state.signingThreshold,
77
151
  sigs,
78
152
  });
79
153
  if (state.backers && state.backers.length > 0) {
80
- verifyOrThrow(bodyRaw, {
154
+ verifyWitness(bodyRaw, {
81
155
  keys: state.backers,
82
156
  threshold: state.backerThreshold,
83
157
  sigs: wigs,
84
158
  });
85
159
  }
160
+ if (body.t === "drt" && delegator) {
161
+ verifyDelegationAnchor(body, message.attachments, delegator);
162
+ }
86
163
  break;
87
164
  }
88
165
  default:
89
166
  throw new Error(`Unsupported event type: ${body.t}`);
90
167
  }
91
168
  const newState = reduceKeyState(this.#state, body);
92
- return new KeyEventLog([...this.#events, message], newState);
169
+ return new KeyEventLog([...this.#events, message], newState, delegator ?? null);
170
+ }
171
+ }
172
+ export function isKelEventType(t) {
173
+ return t === "icp" || t === "ixn" || t === "rot" || t === "dip" || t === "drt";
174
+ }
175
+ function verifyDelegationAnchor(body, attachments, delegator) {
176
+ if (body.di !== delegator.state.identifier) {
177
+ throw new Error(`Delegation mismatch: event di=${body.di} does not match delegator KEL identifier=${delegator.state.identifier}`);
178
+ }
179
+ const couples = attachments.SealSourceCouples ?? [];
180
+ const triples = attachments.SealSourceTriples ?? [];
181
+ const hints = [
182
+ ...couples.map((c) => ({ snu: c.snu, digest: c.digest })),
183
+ ...triples.filter((t) => t.prefix === body.di).map((t) => ({ snu: t.snu, digest: t.digest })),
184
+ ];
185
+ // If a SealSourceCouple/Triple is attached, use it as a hint about which
186
+ // delegator event carries the anchor. Otherwise scan the delegator's KEL
187
+ // for any event whose `a` field anchors this dip/drt — keripy's wire
188
+ // format relies on the verifier deriving the anchor from the delegator's
189
+ // KEL directly when the couple isn't transmitted.
190
+ const matchingSeal = (event) => {
191
+ const anchors = event.body.a ?? [];
192
+ return anchors.some((seal) => seal.i === body.i && seal.s === body.s && seal.d === body.d);
193
+ };
194
+ if (hints.length > 0) {
195
+ for (const ref of hints) {
196
+ const event = delegator.events.find((e) => e.body.d === ref.digest && e.body.s === ref.snu);
197
+ if (!event) {
198
+ throw new Error(`Delegator anchor not found in KEL: s=${ref.snu} d=${ref.digest} (delegator=${body.di})`);
199
+ }
200
+ if (!matchingSeal(event)) {
201
+ throw new Error(`Delegator event ${ref.digest} does not anchor ${body.t} ${body.d}: missing matching key-event seal in a[]`);
202
+ }
203
+ }
204
+ return;
205
+ }
206
+ const anchorEvent = delegator.events.find((e) => matchingSeal(e));
207
+ if (!anchorEvent) {
208
+ throw new Error(`No anchoring event found in delegator KEL for ${body.t} ${body.d} (delegator=${body.di})`);
93
209
  }
94
210
  }
95
211
  function assertDefined(obj) {
@@ -107,6 +223,7 @@ function merge(a, b) {
107
223
  backerThreshold: b.backerThreshold ?? a.backerThreshold,
108
224
  backers: b.backers ?? a.backers,
109
225
  configTraits: b.configTraits ?? a.configTraits,
226
+ delegator: b.delegator ?? a.delegator,
110
227
  lastEvent: b.lastEvent ?? a.lastEvent,
111
228
  lastEstablishment: b.lastEstablishment ?? a.lastEstablishment,
112
229
  };
@@ -128,12 +245,29 @@ function reduceKeyState(state, body) {
128
245
  lastEstablishment: { i: icp.i, s: icp.s, d: icp.d },
129
246
  };
130
247
  }
248
+ case "dip": {
249
+ const dip = body;
250
+ return {
251
+ identifier: dip.i,
252
+ signingThreshold: dip.kt,
253
+ signingKeys: dip.k,
254
+ nextThreshold: dip.nt,
255
+ nextKeyDigests: dip.n,
256
+ backerThreshold: dip.bt,
257
+ backers: dip.b,
258
+ configTraits: dip.c,
259
+ delegator: dip.di,
260
+ lastEvent: { i: dip.i, s: dip.s, d: dip.d },
261
+ lastEstablishment: { i: dip.i, s: dip.s, d: dip.d },
262
+ };
263
+ }
131
264
  case "ixn": {
132
265
  assertDefined(state);
133
266
  const ixn = body;
134
267
  return merge(state, { lastEvent: { i: ixn.i, s: ixn.s, d: ixn.d } });
135
268
  }
136
- case "rot": {
269
+ case "rot":
270
+ case "drt": {
137
271
  assertDefined(state);
138
272
  const rot = body;
139
273
  return merge(state, {
@@ -1 +1 @@
1
- {"version":3,"file":"key-event-log.js","sourceRoot":"","sources":["../../src/core/key-event-log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-event-log.js","sourceRoot":"","sources":["../../src/core/key-event-log.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { Message } from "cesr";
2
- import { type Threshold } from "./threshold.ts";
1
+ import { Message } from "../cesr/main.ts";
2
+ import type { Threshold } from "./threshold.ts";
3
3
  export interface KeyState {
4
4
  identifier: string;
5
5
  signingThreshold: Threshold;
@@ -9,6 +9,7 @@ export interface KeyState {
9
9
  backerThreshold: string;
10
10
  backers: string[];
11
11
  configTraits: string[];
12
+ delegator?: string;
12
13
  lastEvent: {
13
14
  i: string;
14
15
  s: string;
@@ -39,7 +40,11 @@ export interface RotateArgs {
39
40
  ba?: string[];
40
41
  bt?: string;
41
42
  }
42
- export type InceptEvent = {
43
+ export interface DelegatedInceptArgs extends InceptArgs {
44
+ delegator: string;
45
+ }
46
+ export type DelegatedRotateArgs = RotateArgs;
47
+ export type InceptEventBody = {
43
48
  v: string;
44
49
  t: "icp";
45
50
  d: string;
@@ -54,7 +59,7 @@ export type InceptEvent = {
54
59
  c: string[];
55
60
  a: Record<string, unknown>[];
56
61
  };
57
- export type InteractEvent = {
62
+ export type InteractEventBody = {
58
63
  v: string;
59
64
  t: "ixn";
60
65
  d: string;
@@ -63,7 +68,7 @@ export type InteractEvent = {
63
68
  p: string;
64
69
  a: Record<string, unknown>[];
65
70
  };
66
- export type RotateEvent = {
71
+ export type RotateEventBody = {
67
72
  v: string;
68
73
  t: "rot";
69
74
  d: string;
@@ -80,6 +85,14 @@ export type RotateEvent = {
80
85
  c: string[];
81
86
  a: Record<string, unknown>[];
82
87
  };
88
+ export type DipEventBody = Omit<InceptEventBody, "t"> & {
89
+ t: "dip";
90
+ di: string;
91
+ };
92
+ export type DrtEventBody = Omit<RotateEventBody, "t"> & {
93
+ t: "drt";
94
+ di: string;
95
+ };
83
96
  export type KeyEventBody = {
84
97
  v: string;
85
98
  t: string;
@@ -89,8 +102,8 @@ export type KeyEventBody = {
89
102
  [key: string]: unknown;
90
103
  };
91
104
  export type KeyEvent<T extends KeyEventBody = KeyEventBody> = Message<T>;
92
- export declare function incept(args: InceptArgs): Message<InceptEvent & {
93
- v: string;
94
- }>;
95
- export declare function interact(state: KeyState, args?: InteractArgs): KeyEvent<InteractEvent>;
96
- export declare function rotate(state: KeyState, args: RotateArgs): KeyEvent<RotateEvent>;
105
+ export declare function incept(args: InceptArgs): KeyEvent<InceptEventBody>;
106
+ export declare function interact(state: KeyState, args?: InteractArgs): KeyEvent<InteractEventBody>;
107
+ export declare function rotate(state: KeyState, args: RotateArgs): KeyEvent<RotateEventBody>;
108
+ export declare function delegatedIncept(args: DelegatedInceptArgs): KeyEvent<DipEventBody>;
109
+ export declare function delegatedRotate(state: KeyState, args: DelegatedRotateArgs): KeyEvent<DrtEventBody>;
@@ -1,6 +1,5 @@
1
- import { Matter, Message } from "cesr";
1
+ import { Matter, Message } from "../cesr/main.js";
2
2
  import { DUMMY_VERSION, encodeEvent } from "./events.js";
3
- import {} from "./threshold.js";
4
3
  function isTransferable(key) {
5
4
  const raw = Matter.parse(key);
6
5
  switch (raw.code) {
@@ -86,4 +85,69 @@ export function rotate(state, args) {
86
85
  }, { labels: ["d"], legacy: true });
87
86
  return new Message(body);
88
87
  }
88
+ export function delegatedIncept(args) {
89
+ const keys = args.signingKeys;
90
+ if (keys.length === 0) {
91
+ throw new Error("No keys provided in inception event");
92
+ }
93
+ const wits = args.wits ?? [];
94
+ let bt;
95
+ if (args.toad !== undefined) {
96
+ bt = args.toad.toString();
97
+ }
98
+ else if (wits.length === 0) {
99
+ bt = "0";
100
+ }
101
+ else if (wits.length === 1) {
102
+ bt = "1";
103
+ }
104
+ else {
105
+ bt = (wits.length - 1).toString();
106
+ }
107
+ const body = encodeEvent({
108
+ v: DUMMY_VERSION,
109
+ t: "dip",
110
+ d: "",
111
+ i: "",
112
+ s: "0",
113
+ kt: keys.length.toString(),
114
+ k: keys,
115
+ nt: args.nextKeys.length.toString(),
116
+ n: args.nextKeys,
117
+ bt,
118
+ b: wits,
119
+ c: [],
120
+ a: [],
121
+ di: args.delegator,
122
+ }, { labels: ["d", "i"], legacy: true });
123
+ return new Message(body);
124
+ }
125
+ export function delegatedRotate(state, args) {
126
+ if (state.delegator === undefined) {
127
+ throw new Error(`State for id ${state.identifier} has no delegator; cannot delegated-rotate`);
128
+ }
129
+ const keyDigest = state.nextKeyDigests[0];
130
+ if (!keyDigest) {
131
+ throw new Error(`State for id ${state.identifier} does not contain pre-committed next key digest`);
132
+ }
133
+ const body = encodeEvent({
134
+ v: DUMMY_VERSION,
135
+ t: "drt",
136
+ d: "",
137
+ i: state.identifier,
138
+ s: (parseInt(state.lastEvent.s, 16) + 1).toString(16),
139
+ p: state.lastEvent.d,
140
+ kt: "1",
141
+ k: args.signingKeys,
142
+ nt: "1",
143
+ n: args.nextKeyDigests,
144
+ bt: args.bt ?? "0",
145
+ br: args.br ?? [],
146
+ ba: args.ba ?? [],
147
+ c: [],
148
+ a: args.data ? [args.data] : [],
149
+ di: state.delegator,
150
+ }, { labels: ["d"], legacy: true });
151
+ return new Message(body);
152
+ }
89
153
  //# sourceMappingURL=key-event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-event.js","sourceRoot":"","sources":["../../src/core/key-event.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"key-event.js","sourceRoot":"","sources":["../../src/core/key-event.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export interface KeyPair {
4
4
  publicKeyDigest: string;
5
5
  }
6
6
  export interface GenerateKeyPairOptions {
7
+ seed?: string;
7
8
  nonTransferable?: boolean;
8
9
  }
9
- export declare function generateKeyPair(seed?: string, options?: GenerateKeyPairOptions): KeyPair;
10
+ export declare function generateKeyPair(options?: GenerateKeyPairOptions): KeyPair;