@vorim/verify 0.2.0 → 0.3.1
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/dist/cli.js +1 -1
- package/dist/index.d.ts +25 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +229 -6
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +71 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*/
|
|
18
18
|
import { readFileSync } from 'node:fs';
|
|
19
19
|
import { verifyBundle } from './index.js';
|
|
20
|
-
const VERSION = '0.1
|
|
20
|
+
const VERSION = '0.3.1';
|
|
21
21
|
function printUsage(stream) {
|
|
22
22
|
stream.write(`vorim-verify ${VERSION} — offline verifier for Vorim audit bundles
|
|
23
23
|
|
package/dist/index.d.ts
CHANGED
|
@@ -58,9 +58,11 @@ export declare function canonicalPayloadV1(event: BundleEvent): string;
|
|
|
58
58
|
*/
|
|
59
59
|
export declare function jcsCanonicalise(value: unknown): string;
|
|
60
60
|
/**
|
|
61
|
-
* Verify the SHA-256 manifest over `{ events, agents }`.
|
|
62
|
-
* the bundle has no manifest field (older exports).
|
|
63
|
-
* `sha256:<hex>` to match the server's
|
|
61
|
+
* Verify the SHA-256 manifest over `{ events, agents, delegation_tokens }`.
|
|
62
|
+
* Returns null if the bundle has no manifest field (older exports).
|
|
63
|
+
* Manifest format is `sha256:<hex>` to match the server's
|
|
64
|
+
* `exportAuditBundle`. delegation_tokens defaults to [] so that bundles
|
|
65
|
+
* with no chains still produce the same bytes the server hashed.
|
|
64
66
|
*/
|
|
65
67
|
export declare function verifyManifest(bundle: AuditBundle): {
|
|
66
68
|
ok: boolean | null;
|
|
@@ -97,4 +99,24 @@ export declare function verifyEventSignature(event: BundleEvent, publicKeyPem: s
|
|
|
97
99
|
* reader can make their own call.
|
|
98
100
|
*/
|
|
99
101
|
export declare function verifyBundle(bundle: AuditBundle): VerifyReport;
|
|
102
|
+
/**
|
|
103
|
+
* Verify a single delegation chain token against the bundle's agent
|
|
104
|
+
* public keys. Walks every link, checking signature, parent_link_hash,
|
|
105
|
+
* depth, scope subset, expiry, and delegator-known-to-bundle.
|
|
106
|
+
*
|
|
107
|
+
* Returns a `DelegationChainResult` with a single verdict. Verdicts are
|
|
108
|
+
* surfaced in priority order — the FIRST failure encountered while
|
|
109
|
+
* walking links in depth order, with signature checks evaluated BEFORE
|
|
110
|
+
* structural / scope / expiry checks so a real forgery is never masked
|
|
111
|
+
* by a downstream chain_broken or expired marker on the same link:
|
|
112
|
+
*
|
|
113
|
+
* 1. delegation_unverifiable (no links / no claims)
|
|
114
|
+
* 2. delegation_unknown_agent (delegator pubkey missing)
|
|
115
|
+
* 3. delegation_invalid_signature (sig over claims does not verify)
|
|
116
|
+
* 4. delegation_chain_broken (depth / parent_link_hash / chain_id mismatch)
|
|
117
|
+
* 5. delegation_scope_exceeded (link scopes ⊄ parent scopes)
|
|
118
|
+
* 6. delegation_expired (valid_until < now - skew)
|
|
119
|
+
* 7. delegation_valid (clean)
|
|
120
|
+
*/
|
|
121
|
+
export declare function verifyDelegationChain(token: import('./types.js').DelegationChainTokenBundleEntry, agentMap: Map<string, import('./types.js').BundleAgent>, now?: Date): import('./types.js').DelegationChainResult;
|
|
100
122
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,WAAW,EAEX,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAST;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAG7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4BtD;AAYD
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,WAAW,EAEX,WAAW,EAEX,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAST;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAG7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4BtD;AAYD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG;IACnD,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CASA;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,WAAW,EAClB,YAAY,EAAE,MAAM,GACnB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA6BlC;AAYD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,CA8O9D;AAeD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,YAAY,EAAE,+BAA+B,EAC3D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,WAAW,CAAC,EACvD,GAAG,GAAE,IAAiB,GACrB,OAAO,YAAY,EAAE,qBAAqB,CAqG5C"}
|
package/dist/index.js
CHANGED
|
@@ -97,14 +97,20 @@ function canonicalBytesForEvent(event) {
|
|
|
97
97
|
return form === 'v1' ? canonicalPayloadV1(event) : canonicalPayloadV0(event);
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
|
-
* Verify the SHA-256 manifest over `{ events, agents }`.
|
|
101
|
-
* the bundle has no manifest field (older exports).
|
|
102
|
-
* `sha256:<hex>` to match the server's
|
|
100
|
+
* Verify the SHA-256 manifest over `{ events, agents, delegation_tokens }`.
|
|
101
|
+
* Returns null if the bundle has no manifest field (older exports).
|
|
102
|
+
* Manifest format is `sha256:<hex>` to match the server's
|
|
103
|
+
* `exportAuditBundle`. delegation_tokens defaults to [] so that bundles
|
|
104
|
+
* with no chains still produce the same bytes the server hashed.
|
|
103
105
|
*/
|
|
104
106
|
export function verifyManifest(bundle) {
|
|
105
107
|
if (!bundle.manifest)
|
|
106
108
|
return { ok: null, expected: null, actual: null };
|
|
107
|
-
const body = JSON.stringify({
|
|
109
|
+
const body = JSON.stringify({
|
|
110
|
+
events: bundle.events,
|
|
111
|
+
agents: bundle.agents,
|
|
112
|
+
delegation_tokens: bundle.delegation_tokens ?? [],
|
|
113
|
+
});
|
|
108
114
|
const actual = 'sha256:' + createHash('sha256').update(body).digest('hex');
|
|
109
115
|
return { ok: actual === bundle.manifest, expected: bundle.manifest, actual };
|
|
110
116
|
}
|
|
@@ -248,6 +254,35 @@ export function verifyBundle(bundle) {
|
|
|
248
254
|
};
|
|
249
255
|
for (const r of events)
|
|
250
256
|
counts[r.verdict]++;
|
|
257
|
+
// Surface advisories on v0-signed events that carry v1-only fields.
|
|
258
|
+
// v0 canonical bytes only cover six fields, so any of the
|
|
259
|
+
// replayable-evidence or delegation-context metadata on a v0 event
|
|
260
|
+
// could have been tampered with post-signing without invalidating
|
|
261
|
+
// the signature. The verdict stays `verified` (the actual
|
|
262
|
+
// signature does verify) but the reader is told what isn't covered.
|
|
263
|
+
const V1_ONLY_FIELDS = [
|
|
264
|
+
'model_version',
|
|
265
|
+
'tool_catalogue_hash',
|
|
266
|
+
'system_prompt_hash',
|
|
267
|
+
'prev_event_hash',
|
|
268
|
+
'on_behalf_of',
|
|
269
|
+
'delegator_agent_id',
|
|
270
|
+
'delegation_chain_id',
|
|
271
|
+
'delegation_depth',
|
|
272
|
+
];
|
|
273
|
+
for (let i = 0; i < (bundle.events ?? []).length; i++) {
|
|
274
|
+
const raw = (bundle.events ?? [])[i];
|
|
275
|
+
const form = raw.canonical_form ?? 'v0';
|
|
276
|
+
if (form !== 'v0' || events[i].verdict !== 'verified')
|
|
277
|
+
continue;
|
|
278
|
+
const present = V1_ONLY_FIELDS.filter(k => raw[k] !== undefined && raw[k] !== null && raw[k] !== '');
|
|
279
|
+
if (present.length > 0) {
|
|
280
|
+
events[i].advisories = [
|
|
281
|
+
`v0 signature does not cover: ${present.join(', ')}. ` +
|
|
282
|
+
'These fields are advisory; re-sign with canonical_form=v1 to cover them.',
|
|
283
|
+
];
|
|
284
|
+
}
|
|
285
|
+
}
|
|
251
286
|
// ── Hash-chained ingest validation ─────────────────────────────────
|
|
252
287
|
//
|
|
253
288
|
// For each agent's chain (events in bundle order), check whether the
|
|
@@ -262,14 +297,26 @@ export function verifyBundle(bundle) {
|
|
|
262
297
|
// from the final report.
|
|
263
298
|
const rawEvents = bundle.events ?? [];
|
|
264
299
|
const chainCounts = { intact: 0, restart: 0, broken: 0 };
|
|
265
|
-
|
|
300
|
+
// Treat empty-string and null as equivalent: a bundle rewrite that
|
|
301
|
+
// overwrites every prev_event_hash with '' must NOT be able to
|
|
302
|
+
// bypass the chain check by exploiting `'' != null` (true) +
|
|
303
|
+
// `if (prevField)` (false). Normalise here so anyChained and the
|
|
304
|
+
// per-event branch agree.
|
|
305
|
+
const hasPrev = (e) => {
|
|
306
|
+
const v = e.prev_event_hash;
|
|
307
|
+
return typeof v === 'string' && v.length > 0;
|
|
308
|
+
};
|
|
309
|
+
const anyChained = rawEvents.some(hasPrev);
|
|
266
310
|
const lastBytesHashByAgent = new Map();
|
|
267
311
|
for (let i = 0; i < rawEvents.length; i++) {
|
|
268
312
|
const e = rawEvents[i];
|
|
269
313
|
const agentId = eventAgentId(e);
|
|
270
314
|
if (!agentId)
|
|
271
315
|
continue;
|
|
272
|
-
const
|
|
316
|
+
const prevRaw = e.prev_event_hash;
|
|
317
|
+
const prevField = typeof prevRaw === 'string' && prevRaw.length > 0
|
|
318
|
+
? prevRaw
|
|
319
|
+
: undefined;
|
|
273
320
|
const previousHash = lastBytesHashByAgent.get(agentId);
|
|
274
321
|
if (prevField) {
|
|
275
322
|
if (!previousHash) {
|
|
@@ -291,6 +338,14 @@ export function verifyBundle(bundle) {
|
|
|
291
338
|
chainCounts.broken++;
|
|
292
339
|
}
|
|
293
340
|
}
|
|
341
|
+
else if (typeof prevRaw === 'string' && prevRaw.length === 0 && previousHash) {
|
|
342
|
+
// Explicit empty-string prev_event_hash after a real predecessor
|
|
343
|
+
// is suspicious — flag as broken so a chain-rewrite attempt
|
|
344
|
+
// can't masquerade as a restart.
|
|
345
|
+
events[i].chain = 'chain_broken';
|
|
346
|
+
events[i].reason = events[i].reason ?? 'prev_event_hash is empty string after predecessor; treat as malformed';
|
|
347
|
+
chainCounts.broken++;
|
|
348
|
+
}
|
|
294
349
|
else if (previousHash && anyChained) {
|
|
295
350
|
// Predecessor exists but this event has no prev_event_hash:
|
|
296
351
|
// SDK restart or chainEvents toggled off mid-stream. Only count
|
|
@@ -308,10 +363,25 @@ export function verifyBundle(bundle) {
|
|
|
308
363
|
// Update the per-agent rolling hash with this event's canonical bytes.
|
|
309
364
|
lastBytesHashByAgent.set(agentId, sha256Hex(canonicalBytesForEvent(e)));
|
|
310
365
|
}
|
|
366
|
+
// ── Delegation chain verification (VAIP -02 § 5) ───────────────────
|
|
367
|
+
const tokens = bundle.delegation_tokens ?? [];
|
|
368
|
+
const delegations = tokens.map(t => verifyDelegationChain(t, agentMap));
|
|
369
|
+
const delegationCounts = { valid: 0, invalid: 0, unverifiable: 0 };
|
|
370
|
+
for (const d of delegations) {
|
|
371
|
+
if (d.verdict === 'delegation_valid')
|
|
372
|
+
delegationCounts.valid++;
|
|
373
|
+
else if (d.verdict === 'delegation_unverifiable')
|
|
374
|
+
delegationCounts.unverifiable++;
|
|
375
|
+
else if (d.verdict === 'delegation_unknown_agent')
|
|
376
|
+
delegationCounts.unverifiable++;
|
|
377
|
+
else
|
|
378
|
+
delegationCounts.invalid++;
|
|
379
|
+
}
|
|
311
380
|
const manifest = verifyManifest(bundle);
|
|
312
381
|
const ok = counts.bad_signature === 0 &&
|
|
313
382
|
counts.malformed_signature === 0 &&
|
|
314
383
|
chainCounts.broken === 0 &&
|
|
384
|
+
delegationCounts.invalid === 0 &&
|
|
315
385
|
manifest.ok !== false;
|
|
316
386
|
const base = {
|
|
317
387
|
bundle_version: typeof bundle.bundle_version === 'string' ? bundle.bundle_version : null,
|
|
@@ -332,10 +402,163 @@ export function verifyBundle(bundle) {
|
|
|
332
402
|
base.chain_restart = chainCounts.restart;
|
|
333
403
|
base.chain_broken = chainCounts.broken;
|
|
334
404
|
}
|
|
405
|
+
if (tokens.length > 0) {
|
|
406
|
+
base.delegations = delegations;
|
|
407
|
+
base.delegation_valid = delegationCounts.valid;
|
|
408
|
+
base.delegation_invalid = delegationCounts.invalid;
|
|
409
|
+
base.delegation_unverifiable = delegationCounts.unverifiable;
|
|
410
|
+
}
|
|
335
411
|
return base;
|
|
336
412
|
}
|
|
337
413
|
/** Synchronous SHA-256 hex digest of a UTF-8 string, prefixed `sha256:`. */
|
|
338
414
|
function sha256Hex(s) {
|
|
339
415
|
return 'sha256:' + createHash('sha256').update(s).digest('hex');
|
|
340
416
|
}
|
|
417
|
+
// ─── Delegation chain verification (VAIP -02 § 5) ─────────────────────────
|
|
418
|
+
/** Standard JWT-style 60s leeway on delegation expiry, so a chain that
|
|
419
|
+
* expires the instant a verifier picks it up doesn't fail-closed on a
|
|
420
|
+
* clock skew of a few seconds. Operators who need stricter behaviour
|
|
421
|
+
* can override by passing `now` to `verifyDelegationChain`. */
|
|
422
|
+
const DELEGATION_EXPIRY_SKEW_MS = 60_000;
|
|
423
|
+
/**
|
|
424
|
+
* Verify a single delegation chain token against the bundle's agent
|
|
425
|
+
* public keys. Walks every link, checking signature, parent_link_hash,
|
|
426
|
+
* depth, scope subset, expiry, and delegator-known-to-bundle.
|
|
427
|
+
*
|
|
428
|
+
* Returns a `DelegationChainResult` with a single verdict. Verdicts are
|
|
429
|
+
* surfaced in priority order — the FIRST failure encountered while
|
|
430
|
+
* walking links in depth order, with signature checks evaluated BEFORE
|
|
431
|
+
* structural / scope / expiry checks so a real forgery is never masked
|
|
432
|
+
* by a downstream chain_broken or expired marker on the same link:
|
|
433
|
+
*
|
|
434
|
+
* 1. delegation_unverifiable (no links / no claims)
|
|
435
|
+
* 2. delegation_unknown_agent (delegator pubkey missing)
|
|
436
|
+
* 3. delegation_invalid_signature (sig over claims does not verify)
|
|
437
|
+
* 4. delegation_chain_broken (depth / parent_link_hash / chain_id mismatch)
|
|
438
|
+
* 5. delegation_scope_exceeded (link scopes ⊄ parent scopes)
|
|
439
|
+
* 6. delegation_expired (valid_until < now - skew)
|
|
440
|
+
* 7. delegation_valid (clean)
|
|
441
|
+
*/
|
|
442
|
+
export function verifyDelegationChain(token, agentMap, now = new Date()) {
|
|
443
|
+
const chainId = token.chain_id;
|
|
444
|
+
const depth = token.links.length;
|
|
445
|
+
if (depth === 0) {
|
|
446
|
+
return {
|
|
447
|
+
chain_id: chainId,
|
|
448
|
+
verdict: 'delegation_unverifiable',
|
|
449
|
+
depth: 0,
|
|
450
|
+
reason: 'no signed links in chain (server-side enforcement only)',
|
|
451
|
+
};
|
|
452
|
+
}
|
|
453
|
+
// Walk links in depth order. Signature checks come BEFORE structural
|
|
454
|
+
// checks so a real forgery never masquerades as a downstream
|
|
455
|
+
// chain_broken / scope_exceeded / expired condition that happens to
|
|
456
|
+
// match the (forged) claims on the same link.
|
|
457
|
+
for (let i = 0; i < token.links.length; i++) {
|
|
458
|
+
const { claims, signature } = token.links[i];
|
|
459
|
+
// Signature — must verify before we trust any claim value.
|
|
460
|
+
const delegatorAgent = agentMap.get(claims.delegator);
|
|
461
|
+
if (!delegatorAgent) {
|
|
462
|
+
return {
|
|
463
|
+
chain_id: chainId, depth, verdict: 'delegation_unknown_agent',
|
|
464
|
+
reason: `delegator ${claims.delegator} not in bundle.agents[]; cannot verify link ${i + 1}`,
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
const sigOk = verifyDelegationSignatureWithKey(claims, signature, delegatorAgent.public_key);
|
|
468
|
+
if (!sigOk.ok) {
|
|
469
|
+
return {
|
|
470
|
+
chain_id: chainId, depth, verdict: 'delegation_invalid_signature',
|
|
471
|
+
reason: `link ${i + 1} signature does not verify: ${sigOk.reason}`,
|
|
472
|
+
};
|
|
473
|
+
}
|
|
474
|
+
// Chain identity sanity.
|
|
475
|
+
if (claims.chain_id !== chainId) {
|
|
476
|
+
return {
|
|
477
|
+
chain_id: chainId, depth, verdict: 'delegation_chain_broken',
|
|
478
|
+
reason: `link ${i + 1}'s claims.chain_id (${claims.chain_id}) does not match bundle chain_id (${chainId})`,
|
|
479
|
+
};
|
|
480
|
+
}
|
|
481
|
+
// Depth sanity.
|
|
482
|
+
if (claims.depth !== i + 1) {
|
|
483
|
+
return {
|
|
484
|
+
chain_id: chainId, depth, verdict: 'delegation_chain_broken',
|
|
485
|
+
reason: `link ${i + 1} has claims.depth=${claims.depth}; expected ${i + 1}`,
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
// Parent link hash.
|
|
489
|
+
if (i === 0) {
|
|
490
|
+
if (claims.parent_link_hash !== null) {
|
|
491
|
+
return {
|
|
492
|
+
chain_id: chainId, depth, verdict: 'delegation_chain_broken',
|
|
493
|
+
reason: `root link must have parent_link_hash=null; got ${claims.parent_link_hash}`,
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
else {
|
|
498
|
+
const parentClaims = token.links[i - 1].claims;
|
|
499
|
+
const expectedParentHash = sha256Hex(jcsCanonicalise(parentClaims));
|
|
500
|
+
if (claims.parent_link_hash !== expectedParentHash) {
|
|
501
|
+
return {
|
|
502
|
+
chain_id: chainId, depth, verdict: 'delegation_chain_broken',
|
|
503
|
+
reason: `link ${i + 1}.parent_link_hash mismatch (expected ${expectedParentHash}, got ${claims.parent_link_hash})`,
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
// Scope subset: this link's scopes ⊆ parent's scopes, with
|
|
507
|
+
// multiset semantics so duplicate-padding can't widen scopes
|
|
508
|
+
// past the signed parent set.
|
|
509
|
+
const parentScopeCount = new Map();
|
|
510
|
+
for (const s of parentClaims.scopes) {
|
|
511
|
+
parentScopeCount.set(s, (parentScopeCount.get(s) ?? 0) + 1);
|
|
512
|
+
}
|
|
513
|
+
for (const scope of claims.scopes) {
|
|
514
|
+
const remaining = parentScopeCount.get(scope) ?? 0;
|
|
515
|
+
if (remaining <= 0) {
|
|
516
|
+
return {
|
|
517
|
+
chain_id: chainId, depth, verdict: 'delegation_scope_exceeded',
|
|
518
|
+
reason: `link ${i + 1} grants scope "${scope}" which parent did not have (or beyond multiset count)`,
|
|
519
|
+
};
|
|
520
|
+
}
|
|
521
|
+
parentScopeCount.set(scope, remaining - 1);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
// Expiry — with a small leeway so a chain that expires the instant
|
|
525
|
+
// a verifier picks it up doesn't fail-closed on a small clock skew.
|
|
526
|
+
if (claims.valid_until) {
|
|
527
|
+
const expiresAt = new Date(claims.valid_until).getTime();
|
|
528
|
+
if (expiresAt + DELEGATION_EXPIRY_SKEW_MS < now.getTime()) {
|
|
529
|
+
return {
|
|
530
|
+
chain_id: chainId, depth, verdict: 'delegation_expired',
|
|
531
|
+
reason: `link ${i + 1} (delegator=${claims.delegator}) expired at ${claims.valid_until}`,
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
return { chain_id: chainId, verdict: 'delegation_valid', depth };
|
|
537
|
+
}
|
|
538
|
+
function verifyDelegationSignatureWithKey(claims, signature, publicKeyPem) {
|
|
539
|
+
const stripped = signature.startsWith('ed25519:') ? signature.slice('ed25519:'.length) : signature;
|
|
540
|
+
let sigBytes;
|
|
541
|
+
try {
|
|
542
|
+
sigBytes = Buffer.from(stripped, 'base64');
|
|
543
|
+
}
|
|
544
|
+
catch {
|
|
545
|
+
return { ok: false, reason: 'malformed base64 signature' };
|
|
546
|
+
}
|
|
547
|
+
if (sigBytes.length === 0)
|
|
548
|
+
return { ok: false, reason: 'empty signature' };
|
|
549
|
+
let pubKey;
|
|
550
|
+
try {
|
|
551
|
+
pubKey = createPublicKey(publicKeyPem);
|
|
552
|
+
}
|
|
553
|
+
catch (e) {
|
|
554
|
+
return { ok: false, reason: `unparseable public key: ${e.message}` };
|
|
555
|
+
}
|
|
556
|
+
const payload = Buffer.from(jcsCanonicalise(claims), 'utf-8');
|
|
557
|
+
try {
|
|
558
|
+
return { ok: cryptoVerify(null, payload, pubKey, sigBytes) };
|
|
559
|
+
}
|
|
560
|
+
catch (e) {
|
|
561
|
+
return { ok: false, reason: `verify error: ${e.message}` };
|
|
562
|
+
}
|
|
563
|
+
}
|
|
341
564
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,14 +11,48 @@ export interface AuditBundle {
|
|
|
11
11
|
manifest?: string;
|
|
12
12
|
events: BundleEvent[];
|
|
13
13
|
agents: BundleAgent[];
|
|
14
|
+
/**
|
|
15
|
+
* Signed delegation chain tokens (VAIP -02 § 5). One entry per
|
|
16
|
+
* unique delegation_chain_id referenced by events in the bundle.
|
|
17
|
+
* A chain with empty `links` is one that was created without a
|
|
18
|
+
* signed link (server-side enforced but not offline-verifiable);
|
|
19
|
+
* the verifier reports such chains as `delegation_unverifiable`.
|
|
20
|
+
*/
|
|
21
|
+
delegation_tokens?: DelegationChainTokenBundleEntry[];
|
|
14
22
|
event_count?: number;
|
|
15
23
|
agent_count?: number;
|
|
24
|
+
delegation_chain_count?: number;
|
|
16
25
|
from?: string;
|
|
17
26
|
to?: string;
|
|
18
27
|
org_id?: string;
|
|
19
28
|
generated_at?: string;
|
|
20
29
|
[key: string]: unknown;
|
|
21
30
|
}
|
|
31
|
+
/** One delegation chain token as embedded in a bundle. */
|
|
32
|
+
export interface DelegationChainTokenBundleEntry {
|
|
33
|
+
v: 0;
|
|
34
|
+
chain_id: string;
|
|
35
|
+
links: DelegationSignedLink[];
|
|
36
|
+
}
|
|
37
|
+
/** A signed link inside a delegation chain token. */
|
|
38
|
+
export interface DelegationSignedLink {
|
|
39
|
+
claims: DelegationLinkClaims;
|
|
40
|
+
signature: string;
|
|
41
|
+
}
|
|
42
|
+
/** Claims structure (VAIP -02 § 5). Mirrors `@vorim/shared-types`. */
|
|
43
|
+
export interface DelegationLinkClaims {
|
|
44
|
+
v: 0;
|
|
45
|
+
type: 'vaip-delegation-link';
|
|
46
|
+
chain_id: string;
|
|
47
|
+
depth: number;
|
|
48
|
+
delegator: string;
|
|
49
|
+
delegate: string;
|
|
50
|
+
scopes: string[];
|
|
51
|
+
max_chain_depth: number;
|
|
52
|
+
valid_from: string;
|
|
53
|
+
valid_until: string | null;
|
|
54
|
+
parent_link_hash: string | null;
|
|
55
|
+
}
|
|
22
56
|
export interface BundleEvent {
|
|
23
57
|
event_id?: string;
|
|
24
58
|
agent_id_str?: string;
|
|
@@ -41,6 +75,10 @@ export interface BundleEvent {
|
|
|
41
75
|
* compatibility with events signed before v1 was registered.
|
|
42
76
|
*/
|
|
43
77
|
canonical_form?: 'v0' | 'v1' | null;
|
|
78
|
+
on_behalf_of?: string | null;
|
|
79
|
+
delegator_agent_id?: string | null;
|
|
80
|
+
delegation_chain_id?: string | null;
|
|
81
|
+
delegation_depth?: number | null;
|
|
44
82
|
[key: string]: unknown;
|
|
45
83
|
}
|
|
46
84
|
export interface BundleAgent {
|
|
@@ -53,6 +91,16 @@ export interface BundleAgent {
|
|
|
53
91
|
export type EventVerdict = 'verified' | 'unsigned' | 'bad_signature' | 'unknown_agent' | 'malformed_signature';
|
|
54
92
|
/** Per-agent chain validation outcome (independent of signature verdict). */
|
|
55
93
|
export type ChainVerdict = 'chain_intact' | 'chain_restart' | 'chain_broken';
|
|
94
|
+
/** Per-delegation-chain validation outcome (VAIP -02 § 5). */
|
|
95
|
+
export type DelegationChainVerdict = 'delegation_valid' | 'delegation_invalid_signature' | 'delegation_chain_broken' | 'delegation_scope_exceeded' | 'delegation_expired' | 'delegation_unknown_agent' | 'delegation_unverifiable';
|
|
96
|
+
export interface DelegationChainResult {
|
|
97
|
+
chain_id: string;
|
|
98
|
+
verdict: DelegationChainVerdict;
|
|
99
|
+
/** Depth of the chain (number of links). */
|
|
100
|
+
depth: number;
|
|
101
|
+
/** When the verdict is not `delegation_valid`, the human-readable reason. */
|
|
102
|
+
reason?: string;
|
|
103
|
+
}
|
|
56
104
|
export interface EventResult {
|
|
57
105
|
event_id?: string;
|
|
58
106
|
agent_id: string | null;
|
|
@@ -65,6 +113,15 @@ export interface EventResult {
|
|
|
65
113
|
* otherwise undefined (no chain to validate).
|
|
66
114
|
*/
|
|
67
115
|
chain?: ChainVerdict;
|
|
116
|
+
/**
|
|
117
|
+
* Non-fatal warnings — fields present on the event whose values are
|
|
118
|
+
* NOT covered by the event's signature, and so could have been
|
|
119
|
+
* tampered with post-signing without the signature catching it.
|
|
120
|
+
* Common case: a v0-signed event that carries v1-only metadata
|
|
121
|
+
* (replayable-evidence fields, delegation context). Empty / absent
|
|
122
|
+
* when nothing is advisory.
|
|
123
|
+
*/
|
|
124
|
+
advisories?: string[];
|
|
68
125
|
}
|
|
69
126
|
export interface VerifyReport {
|
|
70
127
|
bundle_version: string | null;
|
|
@@ -96,6 +153,20 @@ export interface VerifyReport {
|
|
|
96
153
|
* bundle.
|
|
97
154
|
*/
|
|
98
155
|
chain_broken?: number;
|
|
156
|
+
/**
|
|
157
|
+
* Per-delegation-chain verdicts (one per unique delegation_chain_id
|
|
158
|
+
* referenced by events in the bundle). Suppressed when the bundle
|
|
159
|
+
* has no delegation chains. A `delegation_invalid_signature`,
|
|
160
|
+
* `delegation_chain_broken`, `delegation_scope_exceeded`, or
|
|
161
|
+
* `delegation_expired` verdict on any chain fails the bundle;
|
|
162
|
+
* `delegation_unknown_agent` and `delegation_unverifiable` do not
|
|
163
|
+
* (they are surfaced for the reader to make their own call).
|
|
164
|
+
*/
|
|
165
|
+
delegations?: DelegationChainResult[];
|
|
166
|
+
/** Convenience counts. */
|
|
167
|
+
delegation_valid?: number;
|
|
168
|
+
delegation_invalid?: number;
|
|
169
|
+
delegation_unverifiable?: number;
|
|
99
170
|
events: EventResult[];
|
|
100
171
|
ok: boolean;
|
|
101
172
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC;;;;OAIG;IACH,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,UAAU,GACV,eAAe,GACf,eAAe,GACf,qBAAqB,CAAC;AAE1B,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GACpB,cAAc,GACd,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|