@engramx/client 0.16.0-rc.13 → 0.16.0-rc.14

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.
package/README.md CHANGED
@@ -57,6 +57,19 @@ const files = await engram.readMemoryBatch(['MEMORY.md', 'memory/daily.md']);
57
57
  // const balance = await engram.walletBalance();
58
58
  ```
59
59
 
60
+ > ⟨2026-10-15⟩ The receipt is wider now: `{ version, seq, head, prev, atNs, contentRoot, size,
61
+ > recordId, recordPrev, sent }`. `prev`, `atNs`, `contentRoot` and `size` are the rest of the memory-file
62
+ > event, so with `sent` (the bytes this write sent) you recompute `head` yourself; `recordId` and
63
+ > `recordPrev` place the write's entry in the engram's record. Capture the evidence right after the
64
+ > write, and anyone can check it later — no key, no owner:
65
+ >
66
+ > ```typescript
67
+ > const bundle = await engram.captureEvidence(receipt, 'memory/daily.md');
68
+ > // fs.writeFileSync('bundle.json', JSON.stringify(bundle));
69
+ > // npx @engramx/client@0.16.0-rc.14 verify bundle.json → each link, the signed time, the entries walked
70
+ > ```
71
+
72
+
60
73
  ### What you can actually call today (2026-08-17)
61
74
 
62
75
  Two things in the snippet above are worth stating plainly rather than letting you discover them.
@@ -75,7 +88,7 @@ in-repo consumer as a reason to report what breaks, not as a warning that it doe
75
88
 
76
89
  The 2026-08-17 charter diet (below) deleted a lot of caller-less methods and **deliberately kept
77
90
  these two.** Zero in-repo callers was the reason to look at them; it was not the reason to decide.
78
- Three facts decided it. They are what `npx @engramx/mcp@0.16.0-rc.13 connect` *instructs* whoever builds a new
91
+ Three facts decided it. They are what `npx @engramx/mcp@0.16.0-rc.14 connect` *instructs* whoever builds a new
79
92
  SDK-lane agent to call, verbatim, in the guide the dashboard's connect page renders — deleting a method
80
93
  while still telling people to call it is the failure this whole exercise exists to prevent.
81
94
  `startSession()` is the only read on the **update** path, so it is the only one the canister can
@@ -101,13 +114,13 @@ Pair your agent with an engram:
101
114
 
102
115
  ```bash
103
116
  # Pair the agent on this machine with the engram and install the OpenClaw plugin
104
- pnpm dlx @engramx/client@0.16.0-rc.13 pair <invite-code> --engram <canister-id> --target openclaw
117
+ pnpm dlx @engramx/client@0.16.0-rc.14 pair <invite-code> --engram <canister-id> --target openclaw
105
118
 
106
119
  # Replacement machine — after pairing, restore memory from the engram
107
- pnpm dlx @engramx/client@0.16.0-rc.13 migrate --engram <canister-id> --recover
120
+ pnpm dlx @engramx/client@0.16.0-rc.14 migrate --engram <canister-id> --recover
108
121
  ```
109
122
 
110
- `pair` generates the key for this engram at `~/.engramx/session.key` (and, on the first pairing, the agent's lasting key at `~/.engramx/root.key`), pairs the agent — the CLI prints `Paired as an agent` — and installs the OpenClaw plugin. `migrate` then moves memory, saving a local checkpoint first — run `npx @engramx/client@0.16.0-rc.13 rollback` to undo. Its default direction pushes local memory files to the engram; `--recover` instead restores database backups, and memory files sync automatically on next OpenClaw startup.
123
+ `pair` generates the key for this engram at `~/.engramx/session.key` (and, on the first pairing, the agent's lasting key at `~/.engramx/root.key`), pairs the agent — the CLI prints `Paired as an agent` — and installs the OpenClaw plugin. `migrate` then moves memory, saving a local checkpoint first — run `npx @engramx/client@0.16.0-rc.14 rollback` to undo. Its default direction pushes local memory files to the engram; `--recover` instead restores database backups, and memory files sync automatically on next OpenClaw startup.
111
124
 
112
125
  ⟨2026-10-13⟩ `pair` moves no memory unless you add `--migrate`, and `--yes` never adds it. Without it, `pair` leaves any OpenClaw memory files on this machine where they are and prints one line: how many it found, and the `migrate` command that moves them. With `--migrate`, it runs that migration after pairing — each file is uploaded, then deleted here, and `rollback` restores them. Through 0.16.0-rc.11, `pair` ran the migration on every pairing, whatever the `--target` (Claude too), and answered its own question under `--yes`.
113
126
 
@@ -123,7 +136,7 @@ If the owner of the wallet allows it (a standing allowance they set for this age
123
136
  page), the agent can open an engram of its own through the engram it works in. The owner may be a program. Whoever runs that program is the owner for every purpose on these pages.
124
137
 
125
138
  ```bash
126
- npx @engramx/client@0.16.0-rc.13 open-engram --engram <canister-id>
139
+ npx @engramx/client@0.16.0-rc.14 open-engram --engram <canister-id>
127
140
  ```
128
141
 
129
142
  The engram it works in pays to open it, from its own balance, and the agent's lasting key
@@ -132,7 +145,7 @@ paid in is the agent's from the moment the new engram exists, and nothing is tak
132
145
  reads the allowance first and stops, with nothing spent, when there is none; it never creates a
133
146
  lasting key; and it prints the engram's own sentence when the engram refuses. It then prints the
134
147
  owner kit's command that acts as the new engram's owner with the same file —
135
- `npx @engramx/owner@0.16.0-rc.13 --connect --key-file <that file> --registry <id>`, with both filled in — which
148
+ `npx @engramx/owner@0.16.0-rc.14 --connect --key-file <that file> --registry <id>`, with both filled in — which
136
149
  mints an invite for an agent to pair into it. The agent's lasting key is an owner key for the engram
137
150
  it opened only; on the engram it works in it stays an agent. The agent's work in an engram its own
138
151
  key owns is never counted on its track record. From code: `EngramClient.getChildAllowance(key)`,
@@ -2,6 +2,7 @@ import { type CertifiedAuditHead, type VerifiedAuditHead } from './certifiedAudi
2
2
  import { Ed25519KeyIdentity } from '@icp-sdk/core/identity';
3
3
  import { Principal } from '@icp-sdk/core/principal';
4
4
  import { idlFactory } from './idl.js';
5
+ import { type EvidenceBundle } from './evidence.js';
5
6
  import type { MemoryHistory, MemoryRangePage, MemoryFile, MemoryFileInfo, SessionContext, Pairing, AuditPage, AgentRecord, ChildAllowanceRow, EngramStatus, OwnerConsole, GuardianRecord, BackupMetadata, BackupType, ApprovalRequest } from './types.js';
6
7
  /**
7
8
  * Source class declared on an append — recorded permanently in the engram's audit chain beside
@@ -37,6 +38,21 @@ export interface MemoryReceipt {
37
38
  seq: bigint;
38
39
  /** Chain head after this write, hex. The thing to hand a verifier. */
39
40
  head: string;
41
+ /** The memory-file chain head before this write, hex. */
42
+ prev: string;
43
+ /** The write's time (nanoseconds), as the event committed it. */
44
+ atNs: bigint;
45
+ /** The file's content root after the write, hex. */
46
+ contentRoot: string;
47
+ /** The file's size after the write, in bytes. */
48
+ size: bigint;
49
+ /** The id of this write's entry in the engram's chained record. */
50
+ recordId: bigint;
51
+ /** The record head just before that entry, hex (empty for the record's first entry). */
52
+ recordPrev: string;
53
+ /** The bytes this write sent: the appended delta (separator and any encryption included), or the
54
+ * whole new content of a revise. What the memory-file event commits to. */
55
+ sent: Uint8Array;
40
56
  }
41
57
  export interface EngramClientConfig {
42
58
  /** The engram canister ID */
@@ -248,7 +264,10 @@ export declare class EngramClient {
248
264
  * ⟨CORRECTED 2026-09-29, owner ruling follow-up 16 (B)⟩ Returns the PAGE, not `.items`. An agent
249
265
  * now reads only the entries it caused, so a window of the record comes back with `withheld`
250
266
  * counting what it was not shown; handing back the bare array would let an agent mistake its part
251
- * of the record for the whole. `limit` is the window's span, not a row count. */
267
+ * of the record for the whole. `limit` is the window's span, not a row count.
268
+ * ⟨2026-10-18⟩ Since the owner's ruling 6B of 2026-10-14 the rest of the window comes back in
269
+ * `sealed` as hash-only rows (id, digest, entry hash) in place of the `withheld` count, so
270
+ * `items + sealed` is the window examined; see `AuditPage`. */
252
271
  readAuditLog(fromIndex?: number, limit?: number): Promise<AuditPage>;
253
272
  /** How many entries the chained audit log currently holds — the page bound for
254
273
  * {@link readAuditLog}.
@@ -270,6 +289,21 @@ export declare class EngramClient {
270
289
  /** The chained audit-log head plus the IC certificate over it (raw, unverified). Use
271
290
  * getVerifiedAuditHead() to verify it against the IC root key. */
272
291
  getCertifiedAuditHead(): Promise<CertifiedAuditHead>;
292
+ /**
293
+ * ⟨2026-10-15, the owner's ruling 6B of 2026-10-14⟩ Capture the evidence of a write this client
294
+ * just made, as a bundle anyone can check later with `engramx verify` — with no owner, no key and
295
+ * no account.
296
+ *
297
+ * Call it right after the write: it reads the certified record head NOW (the certificate's signed
298
+ * time is the time the bundle proves), reads this writer's own record entry back (an agent reads
299
+ * the entries it caused), and the hash-only rows from that entry to the captured head. A head that
300
+ * does not yet cover the write (a lagging replica) is read again, up to five times.
301
+ *
302
+ * THROWS when the evidence cannot be made — never a bundle that would fail its own check: when the
303
+ * entry cannot be read back in full by this caller (a write made through a paid session is logged
304
+ * under the session's payer), or the head never covers the write.
305
+ */
306
+ captureEvidence(receipt: MemoryReceipt, path: string): Promise<EvidenceBundle>;
273
307
  /** Fetch the certified audit head and VERIFY it against the IC root key — returns the certified
274
308
  * head bytes and whether the replica's claim agrees, WITHOUT trusting this replica. */
275
309
  getVerifiedAuditHead(): Promise<VerifiedAuditHead>;
@@ -7,13 +7,23 @@ import { loadSessionKey, identityFromSeed } from './auth.js';
7
7
  import { signEnrolment } from './actionReceipt.js';
8
8
  import { unwrapResult, errorMessage } from './wire.js';
9
9
  import { EncryptionManager } from './encryption.js';
10
+ import { EVIDENCE_FORMAT } from './evidence.js';
11
+ import { sealedRowOf } from './recordChain.js';
10
12
  const memorySourceArg = (s) => s === undefined ? [] : [{ [s]: null }];
11
- const receiptOf = (r) => ({
13
+ const hexOf = (b) => Array.from(b)
14
+ .map((x) => x.toString(16).padStart(2, '0'))
15
+ .join('');
16
+ const receiptOf = (r, sent) => ({
12
17
  version: r.version,
13
18
  seq: r.seq,
14
- head: Array.from(r.head)
15
- .map((b) => b.toString(16).padStart(2, '0'))
16
- .join(''),
19
+ head: hexOf(r.head),
20
+ prev: hexOf(r.prev),
21
+ atNs: r.atNs,
22
+ contentRoot: hexOf(r.contentRoot),
23
+ size: r.size,
24
+ recordId: r.recordId,
25
+ recordPrev: hexOf(r.recordPrev),
26
+ sent,
17
27
  });
18
28
  function validateMemoryPath(p) {
19
29
  if (p.includes('\0'))
@@ -240,7 +250,7 @@ export class EngramClient {
240
250
  const deltaText = nonEmpty ? `\n${content}` : content;
241
251
  // Plaintext: raw UTF-8 delta. Encrypted: a length-framed, individually-sealed segment.
242
252
  const delta = await this.encryption.encodeAppendDelta(this.actor, deltaText);
243
- const receipt = receiptOf(this.unwrap(await this.actor.appendMemory(path, delta, memorySourceArg(source))));
253
+ const receipt = receiptOf(this.unwrap(await this.actor.appendMemory(path, delta, memorySourceArg(source))), Uint8Array.from(delta));
244
254
  this.cache.invalidate(`mem:${path}`);
245
255
  return receipt;
246
256
  }
@@ -493,7 +503,7 @@ export class EngramClient {
493
503
  const bytes = this.encryption.isEnabled()
494
504
  ? await this.encryption.encodeFramedSegmentBytes(this.actor, raw)
495
505
  : raw;
496
- const receipt = receiptOf(this.unwrap(await this.actor.reviseMemory(path, bytes)));
506
+ const receipt = receiptOf(this.unwrap(await this.actor.reviseMemory(path, bytes)), Uint8Array.from(bytes));
497
507
  // Revise REPLACES content, so a stale cached read is not merely short — it is the wrong
498
508
  // content entirely, served confidently for the rest of the TTL.
499
509
  this.cache.invalidate(`mem:${path}`);
@@ -546,7 +556,10 @@ export class EngramClient {
546
556
  * ⟨CORRECTED 2026-09-29, owner ruling follow-up 16 (B)⟩ Returns the PAGE, not `.items`. An agent
547
557
  * now reads only the entries it caused, so a window of the record comes back with `withheld`
548
558
  * counting what it was not shown; handing back the bare array would let an agent mistake its part
549
- * of the record for the whole. `limit` is the window's span, not a row count. */
559
+ * of the record for the whole. `limit` is the window's span, not a row count.
560
+ * ⟨2026-10-18⟩ Since the owner's ruling 6B of 2026-10-14 the rest of the window comes back in
561
+ * `sealed` as hash-only rows (id, digest, entry hash) in place of the `withheld` count, so
562
+ * `items + sealed` is the window examined; see `AuditPage`. */
550
563
  async readAuditLog(fromIndex = 0, limit = 50) {
551
564
  return this.unwrap(await this.actor.listAuditEntries(BigInt(fromIndex), BigInt(limit)), 'listAuditEntries');
552
565
  }
@@ -580,6 +593,94 @@ export class EngramClient {
580
593
  certificate: r.certificate.length ? new Uint8Array(r.certificate[0]) : null,
581
594
  };
582
595
  }
596
+ /**
597
+ * ⟨2026-10-15, the owner's ruling 6B of 2026-10-14⟩ Capture the evidence of a write this client
598
+ * just made, as a bundle anyone can check later with `engramx verify` — with no owner, no key and
599
+ * no account.
600
+ *
601
+ * Call it right after the write: it reads the certified record head NOW (the certificate's signed
602
+ * time is the time the bundle proves), reads this writer's own record entry back (an agent reads
603
+ * the entries it caused), and the hash-only rows from that entry to the captured head. A head that
604
+ * does not yet cover the write (a lagging replica) is read again, up to five times.
605
+ *
606
+ * THROWS when the evidence cannot be made — never a bundle that would fail its own check: when the
607
+ * entry cannot be read back in full by this caller (a write made through a paid session is logged
608
+ * under the session's payer), or the head never covers the write.
609
+ */
610
+ async captureEvidence(receipt, path) {
611
+ let head = await this.getCertifiedAuditHead();
612
+ for (let tries = 0; head.total <= receipt.recordId && tries < 5; tries++) {
613
+ await new Promise((r) => setTimeout(r, 1000));
614
+ head = await this.getCertifiedAuditHead();
615
+ }
616
+ if (head.total <= receipt.recordId) {
617
+ throw new Error(`captureEvidence: the certified head covers ${head.total} entries and this write's entry is ${receipt.recordId} — the replica has not caught up; try again`);
618
+ }
619
+ if (!head.certificate)
620
+ throw new Error('captureEvidence: the head came back without a certificate');
621
+ const own = this.unwrap(await this.actor.listAuditEntries(receipt.recordId, 1n), 'listAuditEntries');
622
+ const entry = own.items.find((e) => e.id === receipt.recordId);
623
+ if (!entry) {
624
+ throw new Error(`captureEvidence: this caller cannot read record entry ${receipt.recordId} in full (it was logged under another principal), so it cannot make the bundle; the owner can`);
625
+ }
626
+ const rows = [];
627
+ let next = receipt.recordId + 1n;
628
+ while (next < head.total) {
629
+ const page = this.unwrap(await this.actor.listAuditEntries(next, head.total - next), 'listAuditEntries');
630
+ const got = page.sealed.map((r) => ({
631
+ id: r.id,
632
+ digest: Uint8Array.from(r.digest),
633
+ entryHash: Uint8Array.from(r.entryHash),
634
+ }));
635
+ for (const e of page.items)
636
+ got.push(await sealedRowOf(e));
637
+ got.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
638
+ if (got.length === 0)
639
+ break;
640
+ for (const r of got) {
641
+ if (r.id >= head.total)
642
+ break;
643
+ rows.push({ id: r.id.toString(), digest: hexOf(r.digest), entryHash: hexOf(r.entryHash) });
644
+ }
645
+ next = got[got.length - 1].id + 1n;
646
+ }
647
+ return {
648
+ format: EVIDENCE_FORMAT,
649
+ canisterId: this.canisterId,
650
+ entry: {
651
+ id: entry.id.toString(),
652
+ timestampNs: entry.timestampNs.toString(),
653
+ caller: entry.caller.toText(),
654
+ callerRole: Object.keys(entry.callerRole)[0] ?? '',
655
+ operation: entry.operation,
656
+ details: entry.details,
657
+ success: entry.success,
658
+ entryHash: hexOf(entry.entryHash),
659
+ },
660
+ recordPrev: receipt.recordPrev,
661
+ hashFirstFrom: own.hashFirstFrom.toString(),
662
+ certified: {
663
+ certificate: Buffer.from(head.certificate).toString('base64'),
664
+ headHash: hexOf(head.headHash),
665
+ total: head.total.toString(),
666
+ },
667
+ rows,
668
+ write: {
669
+ path,
670
+ bytes: Buffer.from(receipt.sent).toString('base64'),
671
+ by: this.identity.getPrincipal().toText(),
672
+ receipt: {
673
+ version: receipt.version.toString(),
674
+ seq: receipt.seq.toString(),
675
+ head: receipt.head,
676
+ prev: receipt.prev,
677
+ atNs: receipt.atNs.toString(),
678
+ contentRoot: receipt.contentRoot,
679
+ size: receipt.size.toString(),
680
+ },
681
+ },
682
+ };
683
+ }
583
684
  /** Fetch the certified audit head and VERIFY it against the IC root key — returns the certified
584
685
  * head bytes and whether the replica's claim agrees, WITHOUT trusting this replica. */
585
686
  async getVerifiedAuditHead() {
@@ -1 +1 @@
1
- {"version":3,"file":"EngramClient.js","sourceRoot":"","sources":["../src/EngramClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EngramClient.js","sourceRoot":"","sources":["../src/EngramClient.ts"],"names":[],"mappings":"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"}
@@ -88,3 +88,34 @@ export declare function verifyCertifiedAnchor(agent: HttpAgent, registryId: Prin
88
88
  certificate: [] | [Uint8Array | number[]];
89
89
  witness: [] | [Uint8Array | number[]] | Uint8Array | number[];
90
90
  }): Promise<CertifiedLeaf>;
91
+ /** The IC mainnet root key (133 bytes, DER), pinned. SHA-256 737ba355…f4b6b3 — the same value the
92
+ * agent library carries as its mainnet default; test/record-chain.test.ts holds the two equal. */
93
+ export declare const IC_MAINNET_ROOT_KEY_HEX = "308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d9685f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484b01291091c5f87b98883463f98091a0baaae";
94
+ export interface HistoricalCertificate {
95
+ verified: boolean;
96
+ /** Self-classifying: names the link that failed. Never act on the other fields unless `verified`. */
97
+ why: string;
98
+ /** The canister's certified data the subnet signed (a bare head, or a tree root). */
99
+ certifiedData: Uint8Array | null;
100
+ /** The certificate's own signed time, nanoseconds since the epoch. */
101
+ signedTimeNs: bigint | null;
102
+ /** With a witness and a leaf path (the registry's tree format): the leaf proven under the root. */
103
+ leaf: Uint8Array | null;
104
+ }
105
+ /**
106
+ * Verify a certificate of ANY age for one canister and read what it certifies and when.
107
+ *
108
+ * Checks, every one required: the BLS signature and its delegation chain verify against `rootKey`
109
+ * (default: the pinned mainnet key — a local replica's certificate, or one under any other key,
110
+ * fails here); the delegation covers `canisterId`; the tree carries `/canister/<id>/certified_data`
111
+ * (a certificate another canister obtained does not — it fails with that said); `/time` is present.
112
+ * With `witness` and `leafPath`, the witness must reconstruct to the certified root and hold the leaf.
113
+ * Freshness is NOT checked, by design (the header above says why). Fails closed with a reason.
114
+ */
115
+ export declare function verifyHistoricalCertificate(args: {
116
+ certificate: Uint8Array | number[];
117
+ canisterId: Principal | string;
118
+ rootKey?: Uint8Array;
119
+ witness?: Uint8Array | number[] | null;
120
+ leafPath?: Uint8Array[];
121
+ }): Promise<HistoricalCertificate>;
@@ -204,4 +204,128 @@ export async function verifyCertifiedAnchor(agent, registryId, engramId, reply)
204
204
  engram.toUint8Array(),
205
205
  ]);
206
206
  }
207
+ // ── Historical certificates (2026-10-15, the owner's ruling 6B of 2026-10-14) ──────────────────────
208
+ //
209
+ // EVERY VERIFIER ABOVE IS FRESH-ONLY, and that is right for them: they answer "is this head the one
210
+ // the subnet signs NOW", and `Certificate.create`'s default refuses a certificate more than five
211
+ // minutes old. It is wrong for evidence. What proves "this entry existed by time T" is a certificate
212
+ // whose SIGNED time is T and which covers a head the entry is in — captured right after the write
213
+ // and checked weeks later, by someone who was not there. Nobody can forge the subnet's signature over
214
+ // a past time, so an old certificate is not weaker than a fresh one; it is the point. So this check
215
+ // is EXPLICIT and separate: it accepts a certificate of any age, verifies the signature against a
216
+ // pinned root key (never one fetched from the network being checked), reads the certificate's own
217
+ // signed `/time`, and hands back the certified bytes. The fresh verifiers keep their default.
218
+ //
219
+ // No entry has a certified time of its own: an entry's certified time is the signed time of the
220
+ // earliest certificate one keeps that covers it.
221
+ /** The IC mainnet root key (133 bytes, DER), pinned. SHA-256 737ba355…f4b6b3 — the same value the
222
+ * agent library carries as its mainnet default; test/record-chain.test.ts holds the two equal. */
223
+ export const IC_MAINNET_ROOT_KEY_HEX = '308182301d060d2b0601040182dc7c0503010201060c2b0601040182dc7c05030201036100814c0e6ec71fab583b08bd81373c255c3c371b2e84863c98a4f1e08b74235d14fb5d9c0cd546d9685f913a0c0b2cc5341583bf4b4392e467db96d65b9bb4cb717112f8472e0d5a4d14505ffd7484b01291091c5f87b98883463f98091a0baaae';
224
+ const hexBytes = (h) => {
225
+ const clean = h.trim().toLowerCase();
226
+ if (!/^([0-9a-f]{2})*$/.test(clean))
227
+ throw new Error('not an even-length hex string');
228
+ return Uint8Array.from(clean.match(/../g) ?? [], (b) => parseInt(b, 16));
229
+ };
230
+ /** Unsigned LEB128 — how the state tree encodes `/time` (nanoseconds since the epoch). */
231
+ function leb128(buf) {
232
+ let out = 0n;
233
+ let shift = 0n;
234
+ for (const byte of buf) {
235
+ out |= BigInt(byte & 0x7f) << shift;
236
+ if ((byte & 0x80) === 0)
237
+ break;
238
+ shift += 7n;
239
+ }
240
+ return out;
241
+ }
242
+ /**
243
+ * Verify a certificate of ANY age for one canister and read what it certifies and when.
244
+ *
245
+ * Checks, every one required: the BLS signature and its delegation chain verify against `rootKey`
246
+ * (default: the pinned mainnet key — a local replica's certificate, or one under any other key,
247
+ * fails here); the delegation covers `canisterId`; the tree carries `/canister/<id>/certified_data`
248
+ * (a certificate another canister obtained does not — it fails with that said); `/time` is present.
249
+ * With `witness` and `leafPath`, the witness must reconstruct to the certified root and hold the leaf.
250
+ * Freshness is NOT checked, by design (the header above says why). Fails closed with a reason.
251
+ */
252
+ export async function verifyHistoricalCertificate(args) {
253
+ const fail = (why) => ({
254
+ verified: false,
255
+ why,
256
+ certifiedData: null,
257
+ signedTimeNs: null,
258
+ leaf: null,
259
+ });
260
+ const principal = typeof args.canisterId === 'string' ? Principal.fromText(args.canisterId) : args.canisterId;
261
+ const rootKey = args.rootKey ?? hexBytes(IC_MAINNET_ROOT_KEY_HEX);
262
+ const certBytes = Uint8Array.from(args.certificate);
263
+ if (certBytes.length === 0)
264
+ return fail('no certificate');
265
+ let cert;
266
+ try {
267
+ cert = await Certificate.create({
268
+ certificate: certBytes,
269
+ rootKey,
270
+ principal: { canisterId: principal },
271
+ disableTimeVerification: true,
272
+ });
273
+ }
274
+ catch (e) {
275
+ return fail(`the certificate does not verify against ${args.rootKey ? 'the given' : 'the pinned IC mainnet'} root key for canister ${principal.toText()} ` +
276
+ `(a local replica's certificate, one issued on another subnet, or altered bytes): ${e.message}`);
277
+ }
278
+ let timeLookup;
279
+ let dataLookup;
280
+ try {
281
+ timeLookup = cert.lookup_path(['time']);
282
+ dataLookup = cert.lookup_path(['canister', principal.toUint8Array(), 'certified_data']);
283
+ }
284
+ catch (e) {
285
+ return fail(`certificate tree walk failed: ${e.message}`);
286
+ }
287
+ if (timeLookup.status !== LookupPathStatus.Found)
288
+ return fail('the certificate carries no /time');
289
+ const signedTimeNs = leb128(new Uint8Array(lookupResultToBuffer(timeLookup)));
290
+ if (dataLookup.status !== LookupPathStatus.Found) {
291
+ return fail(`the certificate carries no certified data for ${principal.toText()}: it was issued for another canister`);
292
+ }
293
+ const certifiedData = new Uint8Array(lookupResultToBuffer(dataLookup));
294
+ if (args.witness == null || args.leafPath == null) {
295
+ return { verified: true, why: 'ok', certifiedData, signedTimeNs, leaf: null };
296
+ }
297
+ let tree;
298
+ try {
299
+ tree = Cbor.decode(Uint8Array.from(args.witness));
300
+ }
301
+ catch {
302
+ return fail('witness is not decodable CBOR');
303
+ }
304
+ let root;
305
+ try {
306
+ root = new Uint8Array(await reconstruct(tree));
307
+ }
308
+ catch {
309
+ return fail('witness is decodable CBOR but not a hash tree');
310
+ }
311
+ if (root.length !== certifiedData.length || !root.every((b, i) => b === certifiedData[i])) {
312
+ return fail('the witness root does not match the certified data: the witness is not for this certificate');
313
+ }
314
+ let leafLookup;
315
+ try {
316
+ leafLookup = lookup_path(args.leafPath, tree);
317
+ }
318
+ catch {
319
+ return fail('witness tree is malformed at the requested path');
320
+ }
321
+ if (leafLookup.status !== LookupPathStatus.Found)
322
+ return fail('the leaf is not in the witness');
323
+ return {
324
+ verified: true,
325
+ why: 'ok',
326
+ certifiedData,
327
+ signedTimeNs,
328
+ leaf: new Uint8Array(lookupResultToBuffer(leafLookup)),
329
+ };
330
+ }
207
331
  //# sourceMappingURL=certifiedAudit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"certifiedAudit.js","sourceRoot":"","sources":["../src/certifiedAudit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"certifiedAudit.js","sourceRoot":"","sources":["../src/certifiedAudit.ts"],"names":[],"mappings":"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"}