@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.
- package/README.md +58 -5
- package/dist/anchor-plurality.d.ts +142 -0
- package/dist/anchor-plurality.d.ts.map +1 -0
- package/dist/anchor-plurality.js +473 -0
- package/dist/anchor-plurality.js.map +1 -0
- package/dist/authorization-evidence.d.ts +6 -2
- package/dist/authorization-evidence.d.ts.map +1 -1
- package/dist/authorization-evidence.js +21 -0
- package/dist/authorization-evidence.js.map +1 -1
- package/dist/delegation.d.ts +186 -0
- package/dist/delegation.d.ts.map +1 -0
- package/dist/delegation.js +319 -0
- package/dist/delegation.js.map +1 -0
- package/dist/evidence-envelope.d.ts +205 -0
- package/dist/evidence-envelope.d.ts.map +1 -0
- package/dist/evidence-envelope.js +378 -0
- package/dist/evidence-envelope.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -1
- package/dist/session-checkpoint.d.ts +200 -0
- package/dist/session-checkpoint.d.ts.map +1 -0
- package/dist/session-checkpoint.js +421 -0
- package/dist/session-checkpoint.js.map +1 -0
- package/dist/verify-record.d.ts +43 -0
- package/dist/verify-record.d.ts.map +1 -1
- package/dist/verify-record.js +25 -1
- package/dist/verify-record.js.map +1 -1
- package/dist/x401-evidence.d.ts +94 -0
- package/dist/x401-evidence.d.ts.map +1 -0
- package/dist/x401-evidence.js +560 -0
- package/dist/x401-evidence.js.map +1 -0
- package/package.json +4 -4
|
@@ -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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"}
|
package/dist/verify-record.d.ts
CHANGED
|
@@ -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":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,eAAe,EAOf,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"verify-record.d.ts","sourceRoot":"","sources":["../src/verify-record.ts"],"names":[],"mappings":"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"}
|
package/dist/verify-record.js
CHANGED
|
@@ -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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"}
|