@agenticprimitives/estate-projection 0.0.0-alpha.17 → 0.0.0-alpha.19
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 +20 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -20,5 +20,25 @@ const pres = makeAuthorityPresentation(projection, 'membership', credentialDiges
|
|
|
20
20
|
const verdict = verifyAuthorityPresentation(pres, rootsReadFromTheRegistry, { subject, nonce, audience, now, maxAgeSeconds: 3600 });
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## The issuer row
|
|
24
|
+
|
|
25
|
+
A credential issuer anchors one more root on the same registry: its **live-credential** set, the credentials it still
|
|
26
|
+
stands behind. The leaf is `credentialDigestOf(jwt)` — keccak over the issuer-signed compact JWT — under a per-leaf
|
|
27
|
+
blind; the row id is `estateIdOf(chainId, issuerSA)` and the row is tagged `ISSUER_ROW_TAG`, so a verifier tells it
|
|
28
|
+
from an estate's. Revoking a credential is retiring its leaf: the next root is anchored without it, and every status
|
|
29
|
+
presentation built at an older sequence is stale against the chain. No chain is asked about a credential's liveness;
|
|
30
|
+
the issuer's own ledger decides it.
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
import { buildIssuerProjection, credentialDigestOf, makeCredentialStatusPresentation, verifyCredentialStatusPresentation } from '@agenticprimitives/estate-projection';
|
|
34
|
+
|
|
35
|
+
const row = buildIssuerProjection({ chainId, issuer, sequence, liveCredentials }); // anchored by the issuer's projector
|
|
36
|
+
const status = makeCredentialStatusPresentation(row, credentialDigestOf(jwt), { nonce, audience });
|
|
37
|
+
const verdict = verifyCredentialStatusPresentation(status, issuerRootsReadFromTheRegistry, { nonce, audience, now, maxAgeSeconds });
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
A status presentation names no subject. It is linkable to the credential's leaf, which is why a verifier asks for it
|
|
41
|
+
only where the alternative is phoning a status list.
|
|
42
|
+
|
|
23
43
|
Evidence, never authority: whether the receiving estate lets the agent act is its own mandate, verified per step.
|
|
24
44
|
An inclusion proof over the live set, deliberately — a revocation is a removal and a new root.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agenticprimitives/estate-projection",
|
|
3
|
-
"version": "0.0.0-alpha.
|
|
3
|
+
"version": "0.0.0-alpha.19",
|
|
4
4
|
"description": "An estate's public projection of its authority (spec 410 §4): the live-grant root and the membership root over blinded commitments, anchored on public ground; the authority presentation a verifier in another estate checks against them, learning that a grant is live or an agent is a member and nothing else.",
|
|
5
5
|
"homepage": "https://agenticprimitives.dev",
|
|
6
6
|
"bugs": {
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"viem": "^2.52.2",
|
|
38
|
-
"@agenticprimitives/content-primitives": "1.0.0-alpha.
|
|
39
|
-
"@agenticprimitives/types": "1.0.0-alpha.
|
|
38
|
+
"@agenticprimitives/content-primitives": "1.0.0-alpha.40",
|
|
39
|
+
"@agenticprimitives/types": "1.0.0-alpha.44"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"vitest": "^4.1.11",
|