@atrib/verify 0.7.9 → 0.8.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.
@@ -0,0 +1,421 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Verifier-side session-checkpoint validation (D139, spec §1.2.10).
4
+ *
5
+ * Covers every family in the spec/conformance/session-checkpoint/ corpus:
6
+ *
7
+ * - structural (validator-role) rules: `checkpoint` REQUIRED on
8
+ * session_checkpoint records and REJECTED on every other event_type
9
+ * (the §1.2.7 / §1.2.9 pattern), tree_size ≥ 1,
10
+ * 0 ≤ first_index < tree_size, prior_checkpoint iff first_index > 0,
11
+ * `retroactive` present-only-when-true;
12
+ * - root recomputation from a supplied ordered leaf list (§1.2.10.1 —
13
+ * leaves are the RAW 32-byte record hashes, never the "sha256:<hex>"
14
+ * display strings) plus the D099 args_hash replay;
15
+ * - inclusion-proof verification (§2.7 procedure over 32-byte leaves);
16
+ * - append-only consistency between consecutive checkpoints via
17
+ * RFC 6962 §2.1.4.2 proofs, with divergent-root pairs surfaced as
18
+ * categorical equivocation evidence (§1.2.10.2);
19
+ * - categorical freshness tiering per §1.2.10.3 (`contemporaneous` /
20
+ * `declared-retroactive` / `stale-undeclared`, signal not block).
21
+ *
22
+ * Tree algebra reuses the exported §2.3.2 helpers from @atrib/mcp
23
+ * (`leafHash`, `nodeHash`, `verifyInclusion`); the Merkle Tree Hash and
24
+ * §2.1.4.2 consistency walk are implemented here so the verifier stays
25
+ * independent of producer-side proof generation. Everything is pure and
26
+ * non-throwing on malformed *records* (rejection is a returned reason);
27
+ * helpers that take verifier-owned inputs (leaf refs) throw on caller error.
28
+ */
29
+ import canonicalize from 'canonicalize';
30
+ import { canonicalRecord, hexDecode, hexEncode, leafHash, nodeHash, sha256, verifyInclusion, verifyRecord as verifyRecordSignature, } from '@atrib/mcp';
31
+ const encoder = new TextEncoder();
32
+ /** The session_checkpoint event_type URI (§1.2.10, D139). */
33
+ export const SESSION_CHECKPOINT_EVENT_TYPE_URI = 'https://atrib.dev/v1/types/session_checkpoint';
34
+ /** Verifier default for the §1.2.10.3 stale-undeclared freshness bound. */
35
+ export const DEFAULT_SESSION_CHECKPOINT_STALENESS_BOUND_MS = 24 * 60 * 60 * 1000;
36
+ const SHA256_REF = /^sha256:[0-9a-f]{64}$/;
37
+ // ---------------------------------------------------------------------------
38
+ // Structural (validator-role) rules
39
+ // ---------------------------------------------------------------------------
40
+ /**
41
+ * Validate the §1.2.10 structural rules. Returns undefined when the record
42
+ * passes, or the rejection reason otherwise (reasons are pinned by the
43
+ * conformance corpus). The signature on a violating record may itself be
44
+ * valid; rejection is at the policy layer, for validators (§2.6.1) and
45
+ * verifiers alike.
46
+ */
47
+ export function validateSessionCheckpointStructural(record) {
48
+ const isCheckpointType = record.event_type === SESSION_CHECKPOINT_EVENT_TYPE_URI;
49
+ const cp = record.checkpoint;
50
+ if (isCheckpointType && cp === undefined) {
51
+ return 'checkpoint missing on session_checkpoint record';
52
+ }
53
+ if (!isCheckpointType && cp !== undefined) {
54
+ return 'checkpoint on non-session_checkpoint event_type';
55
+ }
56
+ if (cp === undefined)
57
+ return undefined;
58
+ if (typeof cp.session_root !== 'string' || !SHA256_REF.test(cp.session_root)) {
59
+ return 'malformed session_root';
60
+ }
61
+ if (!Number.isInteger(cp.tree_size) || cp.tree_size < 1)
62
+ return 'tree_size < 1';
63
+ if (!Number.isInteger(cp.first_index) || cp.first_index < 0)
64
+ return 'malformed first_index';
65
+ if (cp.first_index >= cp.tree_size)
66
+ return 'first_index >= tree_size';
67
+ if (cp.prior_checkpoint !== undefined) {
68
+ if (typeof cp.prior_checkpoint !== 'string' || !SHA256_REF.test(cp.prior_checkpoint)) {
69
+ return 'malformed prior_checkpoint';
70
+ }
71
+ if (cp.first_index === 0)
72
+ return 'prior_checkpoint present with first_index == 0';
73
+ }
74
+ else if (cp.first_index > 0) {
75
+ return 'prior_checkpoint absent with first_index > 0';
76
+ }
77
+ if (cp.retroactive !== undefined && cp.retroactive !== true) {
78
+ return 'retroactive: false emitted';
79
+ }
80
+ return undefined;
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // Session-tree recomputation (§1.2.10.1)
84
+ // ---------------------------------------------------------------------------
85
+ function largestPowerOfTwoLessThan(n) {
86
+ let k = 1;
87
+ while (k * 2 < n)
88
+ k *= 2;
89
+ return k;
90
+ }
91
+ /**
92
+ * RFC 6962 §2.1 Merkle Tree Hash over raw leaf byte strings. MTH of the
93
+ * empty list is SHA-256("") per the RFC; §1.2.10 prohibits committing to it
94
+ * as a session_root (tree_size ≥ 1), but the sentinel is computable so
95
+ * implementations can recognize it.
96
+ */
97
+ function merkleTreeHash(leaves) {
98
+ if (leaves.length === 0)
99
+ return sha256(new Uint8Array(0));
100
+ if (leaves.length === 1)
101
+ return leafHash(leaves[0]);
102
+ const k = largestPowerOfTwoLessThan(leaves.length);
103
+ return nodeHash(merkleTreeHash(leaves.slice(0, k)), merkleTreeHash(leaves.slice(k)));
104
+ }
105
+ /** Decode a `"sha256:<64-hex>"` ref to its raw 32 leaf bytes. Throws on malformed refs. */
106
+ export function sessionLeafBytes(ref) {
107
+ if (!SHA256_REF.test(ref)) {
108
+ throw new Error(`atrib: session leaf ref is not "sha256:<64-hex>": ${ref}`);
109
+ }
110
+ return hexDecode(ref.slice('sha256:'.length));
111
+ }
112
+ /**
113
+ * Recompute the §1.2.10.1 session root from ordered `"sha256:<hex>"` leaf
114
+ * refs (raw-32-byte-leaf rule). Returns the `"sha256:"+hex` form for direct
115
+ * comparison against `checkpoint.session_root`.
116
+ */
117
+ export function recomputeSessionRoot(leafRefs) {
118
+ return `sha256:${hexEncode(merkleTreeHash(leafRefs.map(sessionLeafBytes)))}`;
119
+ }
120
+ /**
121
+ * Recompute an RFC 6962 root over arbitrary raw leaf byte strings. Exists
122
+ * for trap-vector checks (a tree over the UTF-8 bytes of the prefixed hex
123
+ * strings MUST NOT reproduce a session_root) and for the empty-tree
124
+ * sentinel; conforming session roots always come from `recomputeSessionRoot`.
125
+ */
126
+ export function recomputeSessionRootFromLeafBytes(leaves) {
127
+ return `sha256:${hexEncode(merkleTreeHash(leaves))}`;
128
+ }
129
+ /** `"sha256:" + hex(SHA-256(JCS(signed record)))` — the §1.2.3 record hash. */
130
+ export function sessionCheckpointRecordHash(record) {
131
+ return `sha256:${hexEncode(sha256(canonicalRecord(record)))}`;
132
+ }
133
+ /**
134
+ * Recompute the D099 content commitment for a checkpoint:
135
+ * `sha256(JCS({"leaves": [...refs...]}))`, prefixed. Compare against the
136
+ * record's `args_hash` to replay-check the disclosed leaf list.
137
+ */
138
+ export function sessionCheckpointArgsHash(leafRefs) {
139
+ const json = canonicalize({ leaves: [...leafRefs] });
140
+ if (json === undefined) {
141
+ throw new Error('atrib: session checkpoint leaf list is not canonicalizable');
142
+ }
143
+ return `sha256:${hexEncode(sha256(encoder.encode(json)))}`;
144
+ }
145
+ // ---------------------------------------------------------------------------
146
+ // Freshness tiering (§1.2.10.3)
147
+ // ---------------------------------------------------------------------------
148
+ /**
149
+ * Assign the categorical freshness fact for a checkpoint given the maximum
150
+ * covered leaf timestamp. Signal, not block (the D051 / §6.7 posture): a
151
+ * stale-undeclared checkpoint remains valid and admissible; the fact
152
+ * travels with the verification result.
153
+ */
154
+ export function sessionCheckpointFreshness(record, maxCoveredLeafTimestamp, boundMs = DEFAULT_SESSION_CHECKPOINT_STALENESS_BOUND_MS) {
155
+ if (record.checkpoint?.retroactive === true)
156
+ return 'declared-retroactive';
157
+ if (record.timestamp - maxCoveredLeafTimestamp > boundMs)
158
+ return 'stale-undeclared';
159
+ return 'contemporaneous';
160
+ }
161
+ /**
162
+ * Verify that a record hash sits at `index` in the committed session tree.
163
+ * This is the §1.2.10 selective-disclosure primitive: it reveals only the
164
+ * record hash, its position, and ~log2(n) sibling hashes. Never throws;
165
+ * malformed input (wrong index, wrong root, truncated or padded path,
166
+ * non-32-byte leaf) returns false.
167
+ */
168
+ export function verifySessionInclusionProof(opts) {
169
+ try {
170
+ const leaf = typeof opts.recordHash === 'string'
171
+ ? SHA256_REF.test(opts.recordHash)
172
+ ? hexDecode(opts.recordHash.slice('sha256:'.length))
173
+ : null
174
+ : opts.recordHash;
175
+ if (leaf === null || leaf.length !== 32)
176
+ return false;
177
+ if (!SHA256_REF.test(opts.sessionRoot))
178
+ return false;
179
+ const root = hexDecode(opts.sessionRoot.slice('sha256:'.length));
180
+ return verifyInclusion(opts.index, opts.treeSize, leafHash(leaf), [...opts.proof], root);
181
+ }
182
+ catch {
183
+ return false;
184
+ }
185
+ }
186
+ // ---------------------------------------------------------------------------
187
+ // Consistency and equivocation (§1.2.10.2)
188
+ // ---------------------------------------------------------------------------
189
+ function bytesEqual(a, b) {
190
+ if (a.length !== b.length)
191
+ return false;
192
+ let diff = 0;
193
+ for (let i = 0; i < a.length; i++)
194
+ diff |= a[i] ^ b[i];
195
+ return diff === 0;
196
+ }
197
+ /**
198
+ * RFC 6962 §2.1.4.2 consistency-proof verification: proves the later
199
+ * session tree is an append-only extension of the earlier one — the same
200
+ * check the log's witness protocol applies between successive log
201
+ * checkpoints (§2.9). Never throws; malformed input returns false.
202
+ */
203
+ export function verifySessionConsistencyProof(opts) {
204
+ try {
205
+ if (!SHA256_REF.test(opts.firstRoot) || !SHA256_REF.test(opts.secondRoot))
206
+ return false;
207
+ const firstRoot = hexDecode(opts.firstRoot.slice('sha256:'.length));
208
+ const secondRoot = hexDecode(opts.secondRoot.slice('sha256:'.length));
209
+ const m = opts.firstTreeSize;
210
+ const n = opts.secondTreeSize;
211
+ if (!Number.isInteger(m) || !Number.isInteger(n))
212
+ return false;
213
+ if (m === n)
214
+ return opts.proof.length === 0 && bytesEqual(firstRoot, secondRoot);
215
+ if (m < 1 || m > n)
216
+ return false;
217
+ let c = [...opts.proof];
218
+ if ((m & (m - 1)) === 0)
219
+ c = [firstRoot, ...c];
220
+ if (c.length === 0)
221
+ return false;
222
+ let fn = m - 1;
223
+ let sn = n - 1;
224
+ while ((fn & 1) === 1) {
225
+ fn >>= 1;
226
+ sn >>= 1;
227
+ }
228
+ let fr = c[0];
229
+ let sr = c[0];
230
+ for (let i = 1; i < c.length; i++) {
231
+ if (sn === 0)
232
+ return false;
233
+ const node = c[i];
234
+ if ((fn & 1) === 1 || fn === sn) {
235
+ fr = nodeHash(node, fr);
236
+ sr = nodeHash(node, sr);
237
+ if ((fn & 1) === 0) {
238
+ while (fn !== 0 && (fn & 1) === 0) {
239
+ fn >>= 1;
240
+ sn >>= 1;
241
+ }
242
+ }
243
+ }
244
+ else {
245
+ sr = nodeHash(sr, node);
246
+ }
247
+ fn >>= 1;
248
+ sn >>= 1;
249
+ }
250
+ return bytesEqual(fr, firstRoot) && bytesEqual(sr, secondRoot) && sn === 0;
251
+ }
252
+ catch {
253
+ return false;
254
+ }
255
+ }
256
+ function evidenceSummary(cp) {
257
+ return { session_root: cp.session_root, tree_size: cp.tree_size, first_index: cp.first_index };
258
+ }
259
+ /**
260
+ * Detect the direct §1.2.10.2 equivocation pair: same creator_key and
261
+ * context_id, same prior_checkpoint claim (or overlapping covered ranges),
262
+ * same tree_size, divergent session_root. Both signatures being genuine is
263
+ * what makes the pair evidence — callers verify signatures separately.
264
+ * Pairs of different tree sizes need leaf material to prove divergence; use
265
+ * `checkConsecutiveSessionCheckpoints` for those. Returns undefined when
266
+ * the pair is not (provably) equivocating.
267
+ */
268
+ export function detectSessionCheckpointEquivocation(a, b) {
269
+ const acp = a.checkpoint;
270
+ const bcp = b.checkpoint;
271
+ if (acp === undefined || bcp === undefined)
272
+ return undefined;
273
+ if (a.creator_key !== b.creator_key || a.context_id !== b.context_id)
274
+ return undefined;
275
+ const samePrior = acp.prior_checkpoint === bcp.prior_checkpoint;
276
+ const overlapping = acp.first_index <= bcp.tree_size - 1 && bcp.first_index <= acp.tree_size - 1;
277
+ if (!samePrior && !overlapping)
278
+ return undefined;
279
+ if (acp.tree_size !== bcp.tree_size)
280
+ return undefined;
281
+ if (acp.session_root === bcp.session_root)
282
+ return undefined;
283
+ return {
284
+ creator_key: a.creator_key,
285
+ context_id: a.context_id,
286
+ reason: 'divergent-roots-same-claim',
287
+ ...(samePrior && acp.prior_checkpoint !== undefined
288
+ ? { prior_checkpoint: acp.prior_checkpoint }
289
+ : {}),
290
+ first_record_hash: sessionCheckpointRecordHash(a),
291
+ second_record_hash: sessionCheckpointRecordHash(b),
292
+ first: evidenceSummary(acp),
293
+ second: evidenceSummary(bcp),
294
+ };
295
+ }
296
+ /**
297
+ * Check the full §1.2.10.2 contract for consecutive checkpoints
298
+ * K_i → K_{i+1}: prior_checkpoint linkage, first_index continuation, root
299
+ * recomputation from disclosed leaf lists, leaf-prefix append-only
300
+ * identity, and the RFC 6962 §2.1.4.2 consistency proof. Constraints whose
301
+ * material was not supplied report `undefined` (not checkable) rather than
302
+ * failing. A linked, range-continuing pair whose roots provably diverge is
303
+ * surfaced as equivocation evidence.
304
+ */
305
+ export function checkConsecutiveSessionCheckpoints(first, second, opts = {}) {
306
+ const fcp = first.checkpoint;
307
+ const scp = second.checkpoint;
308
+ const firstHash = sessionCheckpointRecordHash(first);
309
+ const priorCheckpointMatches = scp?.prior_checkpoint === firstHash;
310
+ const firstIndexMatchesPriorTreeSize = fcp !== undefined && scp !== undefined && scp.first_index === fcp.tree_size;
311
+ const safeRecompute = (refs) => {
312
+ try {
313
+ return recomputeSessionRoot(refs);
314
+ }
315
+ catch {
316
+ return undefined;
317
+ }
318
+ };
319
+ const firstRootRecomputes = opts.firstLeaves !== undefined && fcp !== undefined
320
+ ? safeRecompute(opts.firstLeaves) === fcp.session_root
321
+ : undefined;
322
+ const secondRootRecomputes = opts.secondLeaves !== undefined && scp !== undefined
323
+ ? safeRecompute(opts.secondLeaves) === scp.session_root
324
+ : undefined;
325
+ const appendOnly = opts.firstLeaves !== undefined && opts.secondLeaves !== undefined && fcp !== undefined
326
+ ? opts.secondLeaves.length >= fcp.tree_size &&
327
+ opts.firstLeaves.length === fcp.tree_size &&
328
+ opts.firstLeaves.every((ref, i) => opts.secondLeaves?.[i] === ref)
329
+ : undefined;
330
+ const consistencyProofVerifies = opts.consistencyProof !== undefined && fcp !== undefined && scp !== undefined
331
+ ? verifySessionConsistencyProof({
332
+ firstTreeSize: fcp.tree_size,
333
+ secondTreeSize: scp.tree_size,
334
+ firstRoot: fcp.session_root,
335
+ secondRoot: scp.session_root,
336
+ proof: opts.consistencyProof,
337
+ })
338
+ : undefined;
339
+ const consistent = priorCheckpointMatches &&
340
+ firstIndexMatchesPriorTreeSize &&
341
+ firstRootRecomputes !== false &&
342
+ secondRootRecomputes !== false &&
343
+ appendOnly !== false &&
344
+ consistencyProofVerifies !== false;
345
+ let equivocation;
346
+ if (fcp !== undefined &&
347
+ scp !== undefined &&
348
+ priorCheckpointMatches &&
349
+ firstIndexMatchesPriorTreeSize &&
350
+ (consistencyProofVerifies === false || appendOnly === false) &&
351
+ first.creator_key === second.creator_key &&
352
+ first.context_id === second.context_id) {
353
+ equivocation = {
354
+ creator_key: first.creator_key,
355
+ context_id: first.context_id,
356
+ reason: 'append-only-violation',
357
+ ...(scp.prior_checkpoint !== undefined ? { prior_checkpoint: scp.prior_checkpoint } : {}),
358
+ first_record_hash: firstHash,
359
+ second_record_hash: sessionCheckpointRecordHash(second),
360
+ first: evidenceSummary(fcp),
361
+ second: evidenceSummary(scp),
362
+ };
363
+ }
364
+ else {
365
+ equivocation = detectSessionCheckpointEquivocation(first, second);
366
+ }
367
+ return {
368
+ priorCheckpointMatches,
369
+ firstIndexMatchesPriorTreeSize,
370
+ firstRootRecomputes,
371
+ secondRootRecomputes,
372
+ appendOnly,
373
+ consistencyProofVerifies,
374
+ consistent,
375
+ ...(equivocation !== undefined ? { equivocation } : {}),
376
+ };
377
+ }
378
+ /**
379
+ * Composed verifier entry point for one session_checkpoint record:
380
+ * signature, structural rules, root recomputation, D099 args_hash replay,
381
+ * and categorical freshness. Facts whose material was not supplied are
382
+ * omitted rather than failed. Never throws.
383
+ */
384
+ export async function verifySessionCheckpointRecord(record, opts = {}) {
385
+ let signatureOk = false;
386
+ try {
387
+ signatureOk = await verifyRecordSignature(record);
388
+ }
389
+ catch {
390
+ signatureOk = false;
391
+ }
392
+ const structuralRejection = validateSessionCheckpointStructural(record);
393
+ let rootMatchesLeaves;
394
+ let argsHashMatchesLeaves;
395
+ if (opts.leaves !== undefined && record.checkpoint !== undefined) {
396
+ try {
397
+ rootMatchesLeaves = recomputeSessionRoot(opts.leaves) === record.checkpoint.session_root;
398
+ }
399
+ catch {
400
+ rootMatchesLeaves = false;
401
+ }
402
+ try {
403
+ argsHashMatchesLeaves = sessionCheckpointArgsHash(opts.leaves) === record.args_hash;
404
+ }
405
+ catch {
406
+ argsHashMatchesLeaves = false;
407
+ }
408
+ }
409
+ const freshness = opts.maxCoveredLeafTimestamp !== undefined
410
+ ? sessionCheckpointFreshness(record, opts.maxCoveredLeafTimestamp, opts.stalenessBoundMs ?? DEFAULT_SESSION_CHECKPOINT_STALENESS_BOUND_MS)
411
+ : undefined;
412
+ return {
413
+ signatureOk,
414
+ recordHash: sessionCheckpointRecordHash(record),
415
+ ...(structuralRejection !== undefined ? { structuralRejection } : {}),
416
+ ...(rootMatchesLeaves !== undefined ? { rootMatchesLeaves } : {}),
417
+ ...(argsHashMatchesLeaves !== undefined ? { argsHashMatchesLeaves } : {}),
418
+ ...(freshness !== undefined ? { freshness } : {}),
419
+ };
420
+ }
421
+ //# sourceMappingURL=session-checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-checkpoint.js","sourceRoot":"","sources":["../src/session-checkpoint.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@
28
28
  import { base64urlDecode, type AtribRecord } from '@atrib/mcp';
29
29
  import type { Ap2ViEvidenceBundle, Ap2ViEvidenceVerification, VerifyAp2ViEvidenceOptions } from './ap2-vi-evidence.js';
30
30
  import type { AuthorizationEvidenceInput, EvidenceVerificationBlock } from './authorization-evidence.js';
31
+ import type { DelegationCertificate, DelegationOutcome } from './delegation.js';
32
+ import type { EvidenceEnvelope } from './evidence-envelope.js';
31
33
  /**
32
34
  * Provenance surfacing for a record carrying `provenance_token` (D044 /
33
35
  * spec §1.2.6).
@@ -266,6 +268,20 @@ export interface RecordVerificationResult {
266
268
  * `signatureOk`; each block carries its own `valid` bit and findings.
267
269
  */
268
270
  evidence?: EvidenceVerificationBlock[];
271
+ /**
272
+ * §5.5.7 (D137) envelope-form view of `evidence`, populated only when
273
+ * `options.evidenceEnvelopes` is set. Legacy `evidence[]` above stays the
274
+ * compatibility view; this is an additive, mapped projection. Blocks whose
275
+ * `protocol` is not a frozen-legacy string are skipped per §5.8.
276
+ */
277
+ evidenceEnvelopes?: EvidenceEnvelope[];
278
+ /**
279
+ * §1.11.4 delegation walk output (D140). Populated only when the caller
280
+ * supplies `delegationCertificates`. Every field is a signal per §6.7.3:
281
+ * nothing in this block alters `valid` or `signatureOk`, and no
282
+ * delegation fact ever pushes a warning.
283
+ */
284
+ delegation?: DelegationOutcome;
269
285
  warnings: string[];
270
286
  }
271
287
  /**
@@ -322,6 +338,33 @@ export interface VerifyRecordOptions {
322
338
  * off the atrib record-validity path and attaches to `result.evidence`.
323
339
  */
324
340
  authorizationEvidence?: AuthorizationEvidenceInput[];
341
+ /**
342
+ * When true, verifyRecord also emits `result.evidenceEnvelopes`: each
343
+ * frozen-legacy `evidence[]` block mapped to §5.5.7 envelope form. Off by
344
+ * default so existing consumers see byte-identical output.
345
+ */
346
+ evidenceEnvelopes?: boolean;
347
+ /**
348
+ * Delegation certificates covering the record's creator_key, supplied by
349
+ * the caller from any §1.11.8 carrier (sidecar, archive evidence,
350
+ * evidence envelope, out-of-band). When present (even as an empty
351
+ * array), verifyRecord runs the §1.11.4 walk and attaches
352
+ * `result.delegation`. Omitted → no delegation block (depth-0 records
353
+ * verify exactly as today).
354
+ */
355
+ delegationCertificates?: DelegationCertificate[];
356
+ /**
357
+ * The context genesis record for cert_bound / delegation_unresolved
358
+ * evaluation (§1.11.3). When omitted and the record is its own genesis
359
+ * (chain_root === genesisChainRoot(context_id)), the record itself is
360
+ * used; otherwise the genesis is treated as unavailable (cert_bound null).
361
+ */
362
+ contextGenesis?: AtribRecord;
363
+ /**
364
+ * Keys the caller resolved as revoked at the record's log position
365
+ * (§1.9.3 log_index cutoff applied by the caller).
366
+ */
367
+ delegationRevokedKeys?: ReadonlySet<string>;
325
368
  /**
326
369
  * Caller-supplied AP2 / Verifiable Intent evidence for transaction
327
370
  * records. The signed atrib record commits to transaction payload hashes,
@@ -1 +1 @@
1
- {"version":3,"file":"verify-record.d.ts","sourceRoot":"","sources":["../src/verify-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-record.d.ts","sourceRoot":"","sources":["../src/verify-record.ts"],"names":[],"mappings":"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"}
@@ -26,10 +26,12 @@
26
26
  * decide lookup strategy (cached vs live, batch vs per-record). Same
27
27
  * pattern as `upstreamCandidate` and `informedByCandidates`.
28
28
  */
29
- import { base64urlDecode, base64urlEncode, canonicalCrossAttestationInput, canonicalRecord, hexEncode, sha256, verifyRecord as verifyRecordSignature, } from '@atrib/mcp';
29
+ import { base64urlDecode, base64urlEncode, canonicalCrossAttestationInput, canonicalRecord, hexEncode, sha256, verifyRecord as verifyRecordSignature, genesisChainRoot, } from '@atrib/mcp';
30
30
  import * as ed from '@noble/ed25519';
31
31
  import { verifyAp2ViEvidenceAsync } from './ap2-vi-evidence.js';
32
32
  import { verifyAuthorizationEvidence } from './authorization-evidence.js';
33
+ import { evaluateDelegation } from './delegation.js';
34
+ import { mapLegacyEvidenceBlock } from './evidence-envelope.js';
33
35
  const PROVENANCE_TOKEN_PATTERN = /^[A-Za-z0-9_-]{22}$/;
34
36
  const SHA256_REF_PATTERN = /^sha256:[0-9a-f]{64}$/;
35
37
  // §8.2 hashed tool_name form per D061. The verbatim and opaque-label forms
@@ -139,6 +141,28 @@ export async function verifyRecord(record, options = {}) {
139
141
  }
140
142
  }
141
143
  }
144
+ // delegation (D140 / §1.11.4): signal-not-block. The walk never throws,
145
+ // never pushes warnings, and never affects `valid` — delegation is
146
+ // attribution resolution, exactly like the D051 capability check.
147
+ if (options.delegationCertificates !== undefined) {
148
+ const genesis = options.contextGenesis ??
149
+ (record.chain_root === genesisChainRoot(record.context_id) ? record : null);
150
+ result.delegation = await evaluateDelegation(record, genesis, options.delegationCertificates, options.delegationRevokedKeys ? { revokedKeys: options.delegationRevokedKeys } : {});
151
+ }
152
+ if (options.evidenceEnvelopes && result.evidence) {
153
+ const envelopes = [];
154
+ for (const block of result.evidence) {
155
+ try {
156
+ envelopes.push(mapLegacyEvidenceBlock(block));
157
+ }
158
+ catch {
159
+ // §5.8: non-frozen-protocol blocks (e.g. 'authorization' errors) are
160
+ // skipped, never thrown to the caller.
161
+ }
162
+ }
163
+ if (envelopes.length > 0)
164
+ result.evidenceEnvelopes = envelopes;
165
+ }
142
166
  result.valid = signatureOk && warnings.length === 0;
143
167
  return result;
144
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"verify-record.js","sourceRoot":"","sources":["../src/verify-record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-record.js","sourceRoot":"","sources":["../src/verify-record.ts"],"names":[],"mappings":"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"}