@atrib/verify 0.8.1 → 0.8.3
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 +1 -1
- package/dist/authority.d.ts +32 -0
- package/dist/authority.d.ts.map +1 -0
- package/dist/authority.js +72 -0
- package/dist/authority.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -483,7 +483,7 @@ This is what makes verification possible: the merchant's local recalculation is
|
|
|
483
483
|
|
|
484
484
|
Per the absolute invariant (also enforced in `@atrib/mcp` and `@atrib/agent`), atrib failures never break the host:
|
|
485
485
|
|
|
486
|
-
- Missing or invalid `merchantKey` → constructor logs `atrib: ...` warning, `merchantPrivateKey = null`,
|
|
486
|
+
- Missing or invalid `merchantKey` → constructor logs an `atrib: ...` warning, sets `merchantPrivateKey = null`, and does not throw.
|
|
487
487
|
- `verify()` errors during signature resolution, graph fetch, or calculation are caught and surfaced as `warnings: string[]` with `valid = false`.
|
|
488
488
|
- `calculate({ signWith: 'merchant' })` with a missing key returns an unsigned document plus a warning, rather than throwing.
|
|
489
489
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Ordered authority lattice. Lower ordinal is less authority. */
|
|
2
|
+
export type AuthorityLevel = 'untrusted' | 'agent' | 'trusted';
|
|
3
|
+
export interface AuthorityPolicy {
|
|
4
|
+
/** Authority granted to a record based on its own signer/origin. Called for each record. */
|
|
5
|
+
originAuthority: (record: AuthorityRecord) => AuthorityLevel;
|
|
6
|
+
/** Max lineage hops to walk. Default 16. Guards against pathological graphs. */
|
|
7
|
+
maxDepth?: number;
|
|
8
|
+
}
|
|
9
|
+
/** The minimal shape this module needs. */
|
|
10
|
+
export interface AuthorityRecord {
|
|
11
|
+
record_hash: string;
|
|
12
|
+
informed_by?: string[];
|
|
13
|
+
}
|
|
14
|
+
export interface AuthorityResult {
|
|
15
|
+
/** Effective authority after non-malleable propagation. */
|
|
16
|
+
authority: AuthorityLevel;
|
|
17
|
+
/** Authority this record would have had from its own origin alone. */
|
|
18
|
+
ownAuthority: AuthorityLevel;
|
|
19
|
+
/** True when lineage lowered the authority below ownAuthority. */
|
|
20
|
+
loweredByLineage: boolean;
|
|
21
|
+
/** record_hash of the least-authoritative ancestor that set the result. Self if none lower. */
|
|
22
|
+
limitingRecord: string;
|
|
23
|
+
/** Hashes walked, in visit order. Useful for explaining a verdict. */
|
|
24
|
+
visited: string[];
|
|
25
|
+
/** informed_by refs that could not be resolved in the supplied graph. */
|
|
26
|
+
unresolved: string[];
|
|
27
|
+
/** True when maxDepth stopped the walk before exhausting lineage. */
|
|
28
|
+
truncated: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function minAuthority(a: AuthorityLevel, b: AuthorityLevel): AuthorityLevel;
|
|
31
|
+
export declare function evaluateAuthority(record: AuthorityRecord, graph: ReadonlyMap<string, AuthorityRecord>, policy: AuthorityPolicy): AuthorityResult;
|
|
32
|
+
//# sourceMappingURL=authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority.d.ts","sourceRoot":"","sources":["../src/authority.ts"],"names":[],"mappings":"AAEA,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,eAAe,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,cAAc,CAAA;IAC5D,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,SAAS,EAAE,cAAc,CAAA;IACzB,sEAAsE;IACtE,YAAY,EAAE,cAAc,CAAA;IAC5B,kEAAkE;IAClE,gBAAgB,EAAE,OAAO,CAAA;IACzB,+FAA+F;IAC/F,cAAc,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,yEAAyE;IACzE,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,qEAAqE;IACrE,SAAS,EAAE,OAAO,CAAA;CACnB;AAQD,wBAAgB,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,GAAG,cAAc,CAEjF;AAOD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,MAAM,EAAE,eAAe,GACtB,eAAe,CA4EjB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
const AUTHORITY_ORDINAL = {
|
|
3
|
+
untrusted: 0,
|
|
4
|
+
agent: 1,
|
|
5
|
+
trusted: 2,
|
|
6
|
+
};
|
|
7
|
+
export function minAuthority(a, b) {
|
|
8
|
+
return AUTHORITY_ORDINAL[a] <= AUTHORITY_ORDINAL[b] ? a : b;
|
|
9
|
+
}
|
|
10
|
+
export function evaluateAuthority(record, graph, policy) {
|
|
11
|
+
const ownAuthority = policy.originAuthority(record);
|
|
12
|
+
const maxDepth = policy.maxDepth ?? 16;
|
|
13
|
+
const queue = [{ record, depth: 0 }];
|
|
14
|
+
const seen = new Set([record.record_hash]);
|
|
15
|
+
const visited = [];
|
|
16
|
+
const unresolved = [];
|
|
17
|
+
let authority = ownAuthority;
|
|
18
|
+
let limitingRecord = record.record_hash;
|
|
19
|
+
let limitingDepth = 0;
|
|
20
|
+
let truncated = false;
|
|
21
|
+
const considerLimit = (level, hash, depth) => {
|
|
22
|
+
const nextAuthority = minAuthority(authority, level);
|
|
23
|
+
if (nextAuthority !== authority) {
|
|
24
|
+
authority = nextAuthority;
|
|
25
|
+
limitingRecord = hash;
|
|
26
|
+
limitingDepth = depth;
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Self remains limiting whenever its own authority is already the minimum.
|
|
30
|
+
if (level === authority &&
|
|
31
|
+
ownAuthority !== authority &&
|
|
32
|
+
depth > limitingDepth) {
|
|
33
|
+
limitingRecord = hash;
|
|
34
|
+
limitingDepth = depth;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
for (let index = 0; index < queue.length; index += 1) {
|
|
38
|
+
const current = queue[index];
|
|
39
|
+
visited.push(current.record.record_hash);
|
|
40
|
+
if (current.depth > 0) {
|
|
41
|
+
considerLimit(policy.originAuthority(current.record), current.record.record_hash, current.depth);
|
|
42
|
+
}
|
|
43
|
+
for (const ancestorHash of current.record.informed_by ?? []) {
|
|
44
|
+
if (seen.has(ancestorHash))
|
|
45
|
+
continue;
|
|
46
|
+
seen.add(ancestorHash);
|
|
47
|
+
const ancestorDepth = current.depth + 1;
|
|
48
|
+
if (current.depth >= maxDepth) {
|
|
49
|
+
truncated = true;
|
|
50
|
+
considerLimit('untrusted', ancestorHash, ancestorDepth);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const ancestor = graph.get(ancestorHash);
|
|
54
|
+
if (ancestor === undefined) {
|
|
55
|
+
unresolved.push(ancestorHash);
|
|
56
|
+
considerLimit('untrusted', ancestorHash, ancestorDepth);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
queue.push({ record: ancestor, depth: ancestorDepth });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
authority,
|
|
64
|
+
ownAuthority,
|
|
65
|
+
loweredByLineage: AUTHORITY_ORDINAL[authority] < AUTHORITY_ORDINAL[ownAuthority],
|
|
66
|
+
limitingRecord,
|
|
67
|
+
visited,
|
|
68
|
+
unresolved,
|
|
69
|
+
truncated,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority.js","sourceRoot":"","sources":["../src/authority.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export { introspectOAuthToken, oauthEvidenceFromIntrospectionResult, } from './o
|
|
|
14
14
|
export type { OAuthIntrospectionClientAuthentication, OAuthIntrospectionOptions, OAuthIntrospectionResult, } from './oauth-introspection.js';
|
|
15
15
|
export { handoffClaimsFromEvidencePacket, verifyHandoffClaims } from './handoff.js';
|
|
16
16
|
export type { HandoffBodyVerification, HandoffClaimsFromEvidenceOptions, HandoffClaimInput, HandoffClaimVerification, HandoffEvidenceEntry, HandoffEvidencePacket, HandoffProofVerification, HandoffRejectionReason, HandoffVerificationResult, VerifyHandoffClaimsOptions, } from './handoff.js';
|
|
17
|
+
export { evaluateAuthority, minAuthority } from './authority.js';
|
|
18
|
+
export type { AuthorityLevel, AuthorityPolicy, AuthorityRecord, AuthorityResult, } from './authority.js';
|
|
17
19
|
export { ATRIB_PROFILE_BASE, ATRIB_PROFILE_REGISTRY, ATRIB_PROFILE_URIS, EVIDENCE_CONSTRAINT_STATUSES, EVIDENCE_REF_KINDS, EVIDENCE_TIERS, FROZEN_LEGACY_PROTOCOLS, LEGACY_PROTOCOL_TO_PROFILE, SHA256_REF_PATTERN, assessReproducibility, atribProfileUri, classifyProfile, envelopeFromEvidenceBlock, envelopeIdentityKey, fromLegacyEvidenceBlock, isRelayIdentitySwap, isValidEnvelope, jcsSha256, mapLegacyEvidenceBlock, orderEnvelopeInstances, rawSha256, renderEnvelopeOpaque, tierRank, validateEnvelope, } from './evidence-envelope.js';
|
|
18
20
|
export type { AtribProfileName, EnvelopeReproducibility, EnvelopeValidation, EvidenceEnvelope, EvidenceEnvelopePayload, EvidenceEnvelopeRef, EvidenceEnvelopeResult, EvidenceEnvelopeVerifier, EvidenceConstraintStatus, EvidenceRefKind, EvidenceTier, FrozenLegacyProtocol, LegacyEvidenceBlock, OpaqueEnvelopeRender, ProfileClassification, } from './evidence-envelope.js';
|
|
19
21
|
export { calculate, DEFAULT_POLICY, isValidPolicy } from './calculate.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,eAAe,CAAA;AAKtB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,6BAA6B,CAAA;AACpC,YAAY,EACV,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,kCAAkC,EAClC,+BAA+B,EAC/B,sCAAsC,EACtC,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,oBAAoB,EACpB,+BAA+B,EAC/B,eAAe,GAChB,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,gCAAgC,EAChC,8BAA8B,EAC9B,qCAAqC,EACrC,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAA;AACtE,YAAY,EACV,eAAe,EACf,aAAa,EACb,+BAA+B,EAC/B,sCAAsC,EACtC,qBAAqB,EACrB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,6BAA6B,EAC7B,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,oBAAoB,EACpB,oCAAoC,GACrC,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,sCAAsC,EACtC,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AACnF,YAAY,EACV,uBAAuB,EACvB,gCAAgC,EAChC,iBAAiB,EACjB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,8 @@ export { introspectOAuthToken, oauthEvidenceFromIntrospectionResult, } from './o
|
|
|
16
16
|
// record_hash claim plus private body material from another agent and must
|
|
17
17
|
// decide whether to link its next record through informed_by.
|
|
18
18
|
export { handoffClaimsFromEvidencePacket, verifyHandoffClaims } from './handoff.js';
|
|
19
|
+
// Verifier-side authority policy over informed_by lineage.
|
|
20
|
+
export { evaluateAuthority, minAuthority } from './authority.js';
|
|
19
21
|
// Universal evidence envelope (§5.5.7, D137). Verifier-layer attachment model;
|
|
20
22
|
// never touches signed bytes or verifyRecord().valid. The legacy §5.5.6
|
|
21
23
|
// EvidenceVerificationBlock shape stays the mapped compatibility view.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,+CAA+C;AAE/C,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAO7C,8DAA8D;AAC9D,8EAA8E;AAC9E,+EAA+E;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AASjD,sFAAsF;AACtF,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,6BAA6B,CAAA;AAmBpC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,oBAAoB,CAAA;AAc3B,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAA;AAmBtE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAQ/B,OAAO,EACL,oBAAoB,EACpB,oCAAoC,GACrC,MAAM,0BAA0B,CAAA;AAOjC,yEAAyE;AACzE,2EAA2E;AAC3E,8DAA8D;AAC9D,OAAO,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAcnF,+EAA+E;AAC/E,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,4BAA4B,EAC5B,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,SAAS,EACT,oBAAoB,EACpB,QAAQ,EACR,gBAAgB,GACjB,MAAM,wBAAwB,CAAA;AAmB/B,uEAAuE;AACvE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAEzE,sDAAsD;AACtD,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAE5B,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAE7D,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAE5F,6BAA6B;AAC7B,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG3E,6EAA6E;AAC7E,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AA6B7B,0DAA0D;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAgCvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAA;AAEvD,yEAAyE;AACzE,uEAAuE;AACvE,iCAAiC;AACjC,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAA;AAaxB,8EAA8E;AAC9E,iEAAiE;AACjE,OAAO,EACL,mBAAmB,EAAE,+BAA+B,EACpD,mBAAmB,EAAE,qBAAqB,EAAE,wBAAwB,GACrE,MAAM,uBAAuB,CAAA;AAO9B,2EAA2E;AAC3E,2EAA2E;AAC3E,uEAAuE;AACvE,OAAO,EACL,6CAA6C,EAC7C,iCAAiC,EACjC,kCAAkC,EAClC,mCAAmC,EACnC,oBAAoB,EACpB,iCAAiC,EACjC,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,mCAAmC,EACnC,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atrib/verify",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@sd-jwt/sd-jwt-vc": "0.19.0",
|
|
37
37
|
"canonicalize": "^3.0.0",
|
|
38
38
|
"jose": "6.2.3",
|
|
39
|
-
"@atrib/mcp": "0.
|
|
39
|
+
"@atrib/mcp": "0.20.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/node": "^25.9.3",
|