keri 0.0.7 → 0.0.8-dev.3be59ff

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.
@@ -1,8 +1,8 @@
1
- import { cesr, CountCode_10, encodeCounter } from "cesr/__unstable__";
2
1
  import { ControllerEventStore, } from "./events/event-store.js";
2
+ import { createDigest } from "./keystore/key-manager.js";
3
3
  import { keri, formatDate, } from "./events/events.js";
4
- import { Client, parseKeyEvents } from "./client.js";
5
- import { encodeHexNumber, serializeAttachments, serializeDigestSeal, serializeEventSeal, serializePathedGroup, serializeReceipts, serializeSignatures, serializeWitnessSignatures, } from "./serializer.js";
4
+ import { Client } from "./client.js";
5
+ import { Attachments, cesr, Matter, Message, parse } from "cesr";
6
6
  export class Controller {
7
7
  #keyManager;
8
8
  #store;
@@ -15,30 +15,63 @@ export class Controller {
15
15
  }
16
16
  async createIdentifier(args = {}) {
17
17
  const keys = args.keys ?? [await this.#keyManager.incept()];
18
+ const next = args.next ?? [await this.#keyManager.incept()];
18
19
  const event = keri.incept({
19
- k: keys.map((key) => key.current),
20
- n: keys.map((key) => key.next),
20
+ k: keys.map((key) => key),
21
+ n: next.map((key) => createDigest(key)),
21
22
  b: args.wits,
22
23
  bt: args.toad ? args.toad.toString(16) : undefined,
23
24
  });
24
- const sigs = await this.sign(event, keys.map((key) => key.current));
25
- await this.#store.save({
26
- event,
27
- signatures: sigs,
28
- });
29
- await this.submit(event, sigs);
25
+ const sigs = await this.sign(event, event.k);
26
+ await this.#store.save(new Message(event, { ControllerIdxSigs: sigs }));
27
+ const wigs = await this.submit(event, sigs);
28
+ await this.#store.save(new Message(event, {
29
+ ControllerIdxSigs: sigs,
30
+ WitnessIdxSigs: wigs,
31
+ }));
32
+ for (const wit of args.wits ?? []) {
33
+ await this.addMailbox(event.i, wit);
34
+ }
30
35
  return await this.#store.state(event.i);
31
36
  }
37
+ async addMailbox(aid, eid) {
38
+ const state = await this.state(aid);
39
+ const rpy = keri.reply({
40
+ r: "/end/role/add",
41
+ a: {
42
+ eid,
43
+ cid: state.i,
44
+ role: "mailbox",
45
+ },
46
+ });
47
+ const sigs = await this.sign(rpy, state.k);
48
+ await this.#store.save(new Message(rpy, { ControllerIdxSigs: sigs }));
49
+ for (const wit of state.b) {
50
+ const client = await this.getClient(wit);
51
+ const message = new Message(rpy, {
52
+ TransIdxSigGroups: [
53
+ {
54
+ snu: state.s,
55
+ digest: state.d,
56
+ prefix: state.i,
57
+ ControllerIdxSigs: sigs,
58
+ },
59
+ ],
60
+ });
61
+ await client.sendMessage(message);
62
+ }
63
+ }
32
64
  async interact(args) {
33
65
  const state = await this.state(args.aid);
34
66
  const sn = (parseInt(state.s ?? "0", 16) + 1).toString(16);
35
67
  const event = keri.interact({ i: state.i, p: state.d, s: sn, a: [args.data] });
36
68
  const sigs = await this.sign(event, state.k);
37
- await this.#store.save({
38
- event,
39
- signatures: sigs,
40
- });
41
- await this.submit(event, sigs);
69
+ await this.#store.save(new Message(event, { ControllerIdxSigs: sigs }));
70
+ const wigs = await this.submit(event, sigs);
71
+ await this.#store.save(new Message(event, {
72
+ ControllerIdxSigs: sigs,
73
+ WitnessIdxSigs: wigs,
74
+ }));
42
75
  return event;
43
76
  }
44
77
  async createRegistry(args) {
@@ -55,19 +88,19 @@ export class Controller {
55
88
  },
56
89
  });
57
90
  const state = await this.state(args.owner);
91
+ const message = new Message(registry, {
92
+ SealSourceCouples: [
93
+ {
94
+ digest: anchor.d,
95
+ snu: anchor.s,
96
+ },
97
+ ],
98
+ });
58
99
  for (const wit of state.b) {
59
100
  const endpoint = await this.getClient(wit);
60
- const attachment = serializeAttachments([serializeDigestSeal(anchor)]);
61
- await endpoint.sendMessage({ event: registry, attachment });
101
+ await endpoint.sendMessage(message);
62
102
  }
63
- await this.#store.save({
64
- event: registry,
65
- seal: {
66
- i: anchor.i,
67
- s: anchor.s,
68
- d: anchor.d,
69
- },
70
- });
103
+ await this.#store.save(message);
71
104
  return registry;
72
105
  }
73
106
  async createCredential(args) {
@@ -75,10 +108,10 @@ export class Controller {
75
108
  if (!registry) {
76
109
  throw new Error(`Registry ${args.registryId} not found`);
77
110
  }
78
- const state = await this.state(registry.event.ii);
111
+ const state = await this.state(registry.body.ii);
79
112
  const acdc = keri.credential({
80
113
  i: state.i,
81
- ri: registry.event.i,
114
+ ri: registry.body.i,
82
115
  s: args.schemaId,
83
116
  u: args.salt,
84
117
  a: {
@@ -91,7 +124,7 @@ export class Controller {
91
124
  });
92
125
  const iss = keri.issue({
93
126
  i: acdc.d,
94
- ri: registry.event.i,
127
+ ri: registry.body.i,
95
128
  dt: formatDate(args.timestamp ?? new Date()),
96
129
  });
97
130
  const anchor = await this.interact({
@@ -104,17 +137,18 @@ export class Controller {
104
137
  });
105
138
  for (const wit of state.b) {
106
139
  const client = await this.getClient(wit);
107
- const attachment = serializeAttachments([serializeDigestSeal(anchor)]);
108
- await client.sendMessage({ event: iss, attachment });
140
+ const message = new Message(iss, {
141
+ SealSourceCouples: [
142
+ {
143
+ digest: anchor.d,
144
+ snu: anchor.s,
145
+ },
146
+ ],
147
+ });
148
+ await client.sendMessage(message);
109
149
  }
110
- await this.#store.save({
111
- event: acdc,
112
- seal: iss,
113
- });
114
- await this.#store.save({
115
- event: iss,
116
- seal: anchor,
117
- });
150
+ await this.#store.save(new Message(acdc, { SealSourceTriples: [{ prefix: anchor.i, digest: iss.d, snu: iss.s }] }));
151
+ await this.#store.save(new Message(iss, { SealSourceCouples: [{ digest: anchor.d, snu: anchor.s }] }));
118
152
  return acdc;
119
153
  }
120
154
  async resolve(oobi) {
@@ -125,12 +159,11 @@ export class Controller {
125
159
  if (!response.body) {
126
160
  throw new Error(`No body in response`);
127
161
  }
128
- for await (const event of parseKeyEvents(response.body)) {
162
+ for await (const event of parse(response.body)) {
129
163
  await this.#store.save(event);
130
164
  }
131
165
  }
132
166
  async getClient(cid) {
133
- // const
134
167
  const mailbox = await this.#store.endrole(cid, "mailbox");
135
168
  const agent = await this.#store.endrole(cid, "agent");
136
169
  const controller = await this.#store.endrole(cid, "controller");
@@ -163,10 +196,28 @@ export class Controller {
163
196
  }
164
197
  const state = await this.state(event.i);
165
198
  const receipts = {};
199
+ const wigs = new Set();
166
200
  for (const wit of state.b) {
167
201
  const client = await this.getClient(wit);
168
- const attachment = serializeAttachments([serializeSignatures(signatures)]);
169
- const response = await client.getReceipt({ event, attachment });
202
+ const message = new Message(event, { ControllerIdxSigs: signatures });
203
+ const response = await client.getReceipt(message);
204
+ if (response.attachments.NonTransReceiptCouples.length > 0) {
205
+ const receiptCouple = response.attachments.NonTransReceiptCouples[0];
206
+ const witnessIndex = state.b.indexOf(receiptCouple.prefix);
207
+ if (witnessIndex !== -1) {
208
+ const signature = Matter.parse(receiptCouple.sig);
209
+ switch (signature.code) {
210
+ case Matter.Code.Ed25519_Sig:
211
+ wigs.add(cesr.crypto.ed25519_sig(signature.raw, witnessIndex).text());
212
+ break;
213
+ case Matter.Code.Ed448_Sig:
214
+ wigs.add(cesr.crypto.ed448_sig(signature.raw, witnessIndex).text());
215
+ break;
216
+ default:
217
+ throw new Error(`Unsupported signature type: ${signature.code}`);
218
+ }
219
+ }
220
+ }
170
221
  await this.#store.save(response);
171
222
  receipts[wit] = response;
172
223
  }
@@ -176,14 +227,20 @@ export class Controller {
176
227
  if (other === wit) {
177
228
  continue;
178
229
  }
179
- const attachment = serializeAttachments([serializeReceipts(receipt.receipts)]);
180
- await client.sendMessage({ event: receipt.event, attachment });
230
+ const message = new Message(receipt.body, {
231
+ NonTransReceiptCouples: receipt.attachments.NonTransReceiptCouples,
232
+ });
233
+ await client.sendMessage(message);
181
234
  }
182
235
  }
236
+ return Array.from(wigs);
183
237
  }
184
238
  async state(said) {
185
- if (!said || typeof said !== "string") {
186
- throw new Error(`said must be a string, got ${said}`);
239
+ if (typeof said !== "string") {
240
+ throw new Error(`said must be a string, got ${typeof said}`);
241
+ }
242
+ if (!said) {
243
+ throw new Error("said cannot be empty string");
187
244
  }
188
245
  const result = await this.#store.state(said);
189
246
  if (!result) {
@@ -201,90 +258,67 @@ export class Controller {
201
258
  for (const [, edge] of Object.entries(credential.e)) {
202
259
  if (typeof edge === "object" && "n" in edge && typeof edge.n === "string") {
203
260
  const source = await this.store.get(edge.n);
204
- if (source && source.event.v.startsWith("ACDC")) {
205
- await this.sendCredentialArficats(source.event, recipient);
206
- if (source.seal && source.event.i) {
207
- await this.forward(client, {
208
- event: source.event,
209
- recipient: recipient,
210
- sender: await this.state(source.event.i),
211
- topic: "credential",
212
- attachment: serializeEventSeal(source.seal),
213
- });
214
- }
261
+ if (!source) {
262
+ throw new Error(`No source found for edge ${edge.n}`);
263
+ }
264
+ if (!source.body.v.startsWith("ACDC")) {
265
+ throw new Error(`Source for edge ${edge.n} is not a credential`);
266
+ }
267
+ await this.sendCredentialArficats(source.body, recipient);
268
+ if ((source.attachments.SealSourceCouples.length || source.attachments.SealSourceTriples.length) &&
269
+ source.body.i &&
270
+ typeof source.body.i === "string") {
271
+ await this.forward({
272
+ message: source,
273
+ recipient: recipient,
274
+ sender: await this.state(source.body.i),
275
+ topic: "credential",
276
+ });
215
277
  }
216
278
  }
217
279
  }
218
280
  }
219
281
  // Introduce sender to mailbox
220
- for (const event of await this.#store.list(state.i)) {
221
- if ("t" in event.event) {
222
- await client.sendMessage({
223
- event: event.event,
224
- attachment: serializeAttachments([
225
- serializeSignatures(event.signatures),
226
- serializeWitnessSignatures(event.receipts, state.b),
227
- encodeCounter({
228
- code: CountCode_10.FirstSeenReplayCouples,
229
- count: 1,
230
- }),
231
- encodeHexNumber(event.event.s ?? "0"),
232
- cesr.encodeDate(event.timestamp),
233
- ]),
234
- });
235
- }
282
+ for (const message of await this.#store.list(state.i)) {
283
+ await client.sendMessage(message);
236
284
  }
237
285
  // Introduce sender to recipient
238
- for (const event of await this.#store.list(state.i)) {
239
- if ("t" in event.event) {
240
- await this.forward(client, {
241
- event: event.event,
242
- recipient: recipient,
243
- sender: state,
244
- topic: "credential",
245
- attachment: serializeAttachments([
246
- serializeSignatures(event.signatures),
247
- serializeWitnessSignatures(event.receipts, state.b),
248
- encodeCounter({
249
- code: CountCode_10.FirstSeenReplayCouples,
250
- count: 1,
251
- }),
252
- encodeHexNumber(event.event.s ?? "0"),
253
- cesr.encodeDate(event.timestamp),
254
- ]),
255
- });
256
- }
286
+ for (const message of await this.#store.list(state.i)) {
287
+ await this.forward({
288
+ message: message,
289
+ recipient: recipient,
290
+ sender: state,
291
+ topic: "credential",
292
+ });
257
293
  }
258
294
  // Introduce registry to recipient
259
- for (const event of await this.#store.list(credential.ri)) {
260
- if (!event.seal) {
295
+ for (const message of await this.#store.list(credential.ri)) {
296
+ if (!message.attachments.SealSourceCouples.length && !message.attachments.SealSourceTriples.length) {
261
297
  throw new Error("No seal found for registry");
262
298
  }
263
- await this.forward(client, {
264
- event: event.event,
299
+ await this.forward({
300
+ message: message,
265
301
  recipient,
266
302
  sender: state,
267
303
  topic: "credential",
268
- attachment: serializeAttachments([serializeDigestSeal(event.seal)]),
269
304
  });
270
305
  }
271
306
  // Introduce transaction to recipient
272
- for (const event of await this.#store.list(credential.d)) {
273
- if (!event.seal) {
307
+ for (const message of await this.#store.list(credential.d)) {
308
+ if (!message.attachments.SealSourceCouples.length && !message.attachments.SealSourceTriples.length) {
274
309
  throw new Error("No seal found for issuance");
275
310
  }
276
- await this.forward(client, {
277
- event: event.event,
311
+ await this.forward({
312
+ message: message,
278
313
  recipient,
279
314
  sender: state,
280
315
  topic: "credential",
281
- attachment: serializeAttachments([serializeDigestSeal(event.seal)]),
282
316
  });
283
317
  }
284
318
  }
285
319
  async grant(args) {
286
320
  const state = await this.state(args.credential.i);
287
- const [registry] = (await this.listEvents(args.credential.ri));
321
+ const [registry] = await this.listEvents(args.credential.ri);
288
322
  if (!registry) {
289
323
  throw new Error(`Registry not found for said ${args.credential.ri}`);
290
324
  }
@@ -292,7 +326,6 @@ export class Controller {
292
326
  if (!recipient) {
293
327
  throw new Error(`No recipient specified and the credential has no issuee`);
294
328
  }
295
- const client = await this.getClient(recipient);
296
329
  const seal = {
297
330
  i: state.i,
298
331
  s: state.ee.s,
@@ -303,12 +336,13 @@ export class Controller {
303
336
  if (!iss) {
304
337
  throw new Error(`No issuance found for said ${args.credential.d}`);
305
338
  }
306
- if (!iss.seal) {
307
- throw new Error(`No seal found for issuance ${iss.event.d}`);
339
+ const anchorSeal = iss.attachments.SealSourceCouples[0] || iss.attachments.SealSourceTriples[0];
340
+ if (!anchorSeal) {
341
+ throw new Error(`No seal found for issuance ${iss.body.d}`);
308
342
  }
309
- const anchor = await this.#store.get(iss.seal.d);
343
+ const anchor = await this.#store.get(anchorSeal.digest);
310
344
  if (!anchor) {
311
- throw new Error(`No anchor found for issuance ${iss.event.d}`);
345
+ throw new Error(`No anchor found for issuance ${iss.body.d}`);
312
346
  }
313
347
  const grant = keri.exchange({
314
348
  i: state.i,
@@ -321,48 +355,78 @@ export class Controller {
321
355
  },
322
356
  e: {
323
357
  acdc: args.credential,
324
- iss: iss.event,
325
- anc: anchor.event,
358
+ iss: iss.body,
359
+ anc: anchor.body,
326
360
  },
327
361
  });
328
362
  const grantsigs = await this.sign(grant, state.k);
329
- await this.forward(client, {
330
- event: grant,
363
+ const message = new Message(grant, {
364
+ TransIdxSigGroups: [
365
+ {
366
+ snu: seal.s,
367
+ digest: seal.d,
368
+ prefix: seal.i,
369
+ ControllerIdxSigs: grantsigs,
370
+ },
371
+ ],
372
+ PathedMaterialCouples: [
373
+ {
374
+ path: "-e-acdc",
375
+ attachments: {
376
+ SealSourceTriples: [
377
+ {
378
+ prefix: iss.body.i,
379
+ snu: iss.body.s,
380
+ digest: iss.body.d,
381
+ },
382
+ ],
383
+ },
384
+ },
385
+ {
386
+ path: "-e-iss",
387
+ grouped: true,
388
+ attachments: {
389
+ SealSourceCouples: [
390
+ {
391
+ digest: anchor.body.d,
392
+ snu: anchor.body.s,
393
+ },
394
+ ],
395
+ },
396
+ },
397
+ {
398
+ path: "-e-anc",
399
+ grouped: true,
400
+ attachments: {
401
+ ControllerIdxSigs: anchor.attachments.ControllerIdxSigs,
402
+ WitnessIdxSigs: anchor.attachments.WitnessIdxSigs,
403
+ FirstSeenReplayCouples: anchor.attachments.FirstSeenReplayCouples,
404
+ },
405
+ },
406
+ ],
407
+ });
408
+ await this.forward({
409
+ message,
331
410
  recipient,
332
411
  sender: state,
333
412
  topic: "credential",
334
413
  timestamp: args.timestamp,
335
- attachment: [
336
- serializeSignatures(grantsigs, seal),
337
- serializePathedGroup(["e", "acdc"], [serializeEventSeal(iss.event)]),
338
- serializePathedGroup(["e", "iss"], [serializeAttachments([serializeDigestSeal(anchor.event)])]),
339
- serializePathedGroup(["e", "anc"], [
340
- serializeAttachments([
341
- serializeSignatures(anchor.signatures),
342
- serializeWitnessSignatures(anchor.receipts, state.b),
343
- encodeCounter({
344
- code: CountCode_10.FirstSeenReplayCouples,
345
- count: 1,
346
- }),
347
- encodeHexNumber(anchor.event.s ?? "0"),
348
- cesr.encodeDate(anchor.timestamp),
349
- ]),
350
- ]),
351
- ].join(""),
352
414
  });
353
415
  }
354
- async forward(client, args) {
416
+ async forward(args) {
417
+ const client = await this.getClient(args.recipient);
355
418
  if (client.role !== "mailbox" && client.role !== "witness") {
356
- const sigs = await this.sign(args.event, args.sender.k);
357
- const attachments = [args.attachment ? [args.attachment] : [serializeSignatures(sigs)]].join("");
358
- await client.sendMessage({ event: args.event, attachment: attachments });
419
+ if (args.message.attachments.frames().length > 1) {
420
+ await client.sendMessage(args.message);
421
+ return;
422
+ }
423
+ const sigs = await this.sign(args.message.body, args.sender.k);
424
+ const message = new Message(args.message.body, {
425
+ ControllerIdxSigs: sigs,
426
+ });
427
+ await client.sendMessage(message);
359
428
  return;
360
429
  }
361
- const seal = {
362
- i: args.sender.i,
363
- s: args.sender.ee.s,
364
- d: args.sender.ee.d,
365
- };
366
430
  const fwd = keri.exchange({
367
431
  i: args.sender.i,
368
432
  r: "/fwd",
@@ -371,16 +435,41 @@ export class Controller {
371
435
  q: { pre: args.recipient, topic: args.topic },
372
436
  a: {},
373
437
  e: {
374
- evt: args.event,
438
+ evt: args.message.body,
375
439
  },
376
440
  });
377
441
  const fwdsigs = await this.sign(fwd, args.sender.k);
378
- const evtsigs = await this.sign(args.event, args.sender.k);
379
- const attachments = [
380
- serializeSignatures(fwdsigs, seal),
381
- serializePathedGroup(["e", "evt"], args.attachment ? [args.attachment] : [serializeSignatures(evtsigs, seal)]),
382
- ].join("");
383
- await client.sendMessage({ event: fwd, attachment: attachments });
442
+ const hasAttachments = args.message.attachments.frames().length > 1;
443
+ const evtatc = hasAttachments
444
+ ? args.message.attachments
445
+ : new Attachments({
446
+ TransIdxSigGroups: [
447
+ {
448
+ digest: args.sender.ee.d,
449
+ snu: args.sender.ee.s,
450
+ prefix: args.sender.i,
451
+ ControllerIdxSigs: await this.sign(args.message.body, args.sender.k),
452
+ },
453
+ ],
454
+ });
455
+ const atc = new Attachments({
456
+ TransIdxSigGroups: [
457
+ {
458
+ ControllerIdxSigs: fwdsigs,
459
+ snu: args.sender.ee.s,
460
+ digest: args.sender.ee.d,
461
+ prefix: args.sender.i,
462
+ },
463
+ ],
464
+ PathedMaterialCouples: [
465
+ {
466
+ path: "-e-evt",
467
+ attachments: evtatc,
468
+ },
469
+ ],
470
+ });
471
+ const message = new Message(fwd, atc);
472
+ await client.sendMessage(message);
384
473
  }
385
474
  async sign(event, keys) {
386
475
  const encoder = new TextEncoder();
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,5 @@
1
+ import { Message } from "cesr";
1
2
  import { type KeyEvent, type Threshold } from "./events.ts";
2
- export interface KeyEventMessageInput<T extends KeyEvent = KeyEvent> {
3
- event: T;
4
- seal?: KeyEventSeal;
5
- signatures?: string[];
6
- receipts?: KeyEventReceipt[];
7
- }
8
- export interface KeyEventMessage<T extends KeyEvent = KeyEvent> extends KeyEventMessageInput<T> {
9
- timestamp: Date;
10
- signatures: string[];
11
- receipts: KeyEventReceipt[];
12
- }
13
3
  export interface LocationRecord {
14
4
  url: string;
15
5
  scheme: string;
@@ -36,11 +26,11 @@ export interface KeyValueStorage {
36
26
  export declare class ControllerEventStore {
37
27
  #private;
38
28
  constructor(db: KeyValueStorage);
39
- save(event: KeyEventMessageInput): Promise<void>;
40
- iter(said: string, from?: number): AsyncIterable<KeyEventMessage>;
41
- get(said: string): Promise<KeyEventMessage | null>;
29
+ save(event: Message<KeyEvent>): Promise<void>;
30
+ iter(said: string, from?: number): AsyncIterable<Message<KeyEvent>>;
31
+ get(said: string): Promise<Message<KeyEvent> | null>;
42
32
  state(said: string): Promise<KeyState>;
43
- list(said: string, from?: number): Promise<KeyEventMessage[]>;
33
+ list(said: string, from?: number): Promise<Message<KeyEvent>[]>;
44
34
  location(cid: string): Promise<LocationRecord | null>;
45
35
  endrole(cid: string, role: string): Promise<EndRoleRecord | null>;
46
36
  }
@@ -123,4 +113,4 @@ export interface KeyStateEstablishmentRecord {
123
113
  */
124
114
  ba: string[];
125
115
  }
126
- export declare function resolveKeyState(event: Iterable<KeyEventMessage> | AsyncIterable<KeyEventMessage>): Promise<KeyState>;
116
+ export declare function resolveKeyState(event: Iterable<Message<KeyEvent>> | AsyncIterable<Message<KeyEvent>>): Promise<KeyState>;