AIP-23 proof kinds: secret-access carries requestHash (the presentation is signed for this exact request), claimedHolder/claimedPresenter, judged, and the allowed values of each field
This commit is contained in:
parent
6110ef2047
commit
316ba7171f
@ -490,41 +490,75 @@
|
|||||||
"type": "digest",
|
"type": "digest",
|
||||||
"note": "sha256 of the content, 0x + 64 hex"
|
"note": "sha256 of the content, 0x + 64 hex"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "requestHash",
|
||||||
|
"type": "hash",
|
||||||
|
"note": "already a 32-byte hash (0x + 64 hex); any other form is refused, not hashed"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "service",
|
"name": "service",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "1 to 256 printable ASCII characters without spaces (the audience of the service)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "secret",
|
"name": "secret",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "a secret name (^[a-z0-9][a-z0-9_-]{0,63}$), \"*\" for list, or null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "version",
|
"name": "version",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "an integer >= 1, or null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "operation",
|
"name": "operation",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "put | get | metadata | rotate | revoke-version | grant | revoke | list"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "verdict",
|
"name": "verdict",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "allowed | refused | failed (failed: allowed and entered, then the change could not be stored)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "rules",
|
"name": "rules",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "a list of rule names (^[a-z][a-z0-9-]{0,63}$), at most 128"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "grant",
|
"name": "grant",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "a grant id (^[A-Za-z0-9][A-Za-z0-9_.:-]{0,63}$), or null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "holder",
|
"name": "holder",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "an aere-id (aere-id: + 40 hex) verified from the presentation, or null"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "presenter",
|
"name": "presenter",
|
||||||
"type": "plain"
|
"type": "plain",
|
||||||
|
"values": "an aere-id verified from the presentation, or null"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "claimedHolder",
|
||||||
|
"type": "plain",
|
||||||
|
"values": "an aere-id the presentation claims and nobody verified, or null"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "claimedPresenter",
|
||||||
|
"type": "plain",
|
||||||
|
"values": "an aere-id the presentation claims and nobody verified, or null"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "judged",
|
||||||
|
"type": "plain",
|
||||||
|
"values": "a list of { grant, rules }, at most 64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "createdAt",
|
||||||
|
"type": "plain",
|
||||||
|
"values": "an RFC 3339 time"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"required": [
|
"required": [
|
||||||
@ -534,7 +568,7 @@
|
|||||||
"presentationHash",
|
"presentationHash",
|
||||||
"createdAt"
|
"createdAt"
|
||||||
],
|
],
|
||||||
"attests": "a secrets service judged one request (put, get, rotate, revoke or grant) on a named secret and version: the verdict and the rules that decided it, the presented identity (presentation digest), the holder and presenter, the grant and the policy (digest); never the value",
|
"attests": "a secrets service judged one request (put, get, metadata, rotate, revoke-version, grant, revoke or list) on a named secret and version: the verdict and the rules that decided it, the presented identity (presentation digest) and the request it was signed for (request digest), the holder and presenter when verified (claimed ones are named as claimed), the grant and the policy (digest); never the value. Its values have a fixed vocabulary (KINDS.json, values)",
|
||||||
"added": "2026-10-18",
|
"added": "2026-10-18",
|
||||||
"vector": "secret-access.json"
|
"vector": "secret-access.json"
|
||||||
},
|
},
|
||||||
|
|||||||
@ -40,7 +40,7 @@ ABSENT). Change one field of a statement and it is INVALID at the integrity leve
|
|||||||
| authorization (added 2026-09-28) | `aere-proof-of-authorization` | `grantor`, `grantee`, `scope`, `createdAt` | a grantor gave a grantee the right to act within a scope, under a policy (digest), until an expiry |
|
| authorization (added 2026-09-28) | `aere-proof-of-authorization` | `grantor`, `grantee`, `scope`, `createdAt` | a grantor gave a grantee the right to act within a scope, under a policy (digest), until an expiry |
|
||||||
| settlement (added 2026-09-28) | `aere-proof-of-settlement` | `chainId`, `txHash`, `blockHash`, `amount`, `asset`, `createdAt` | a settlement on a chain: its transaction and block (32-byte hashes carried as they are, never re-hashed), amount and asset |
|
| settlement (added 2026-09-28) | `aere-proof-of-settlement` | `chainId`, `txHash`, `blockHash`, `amount`, `asset`, `createdAt` | a settlement on a chain: its transaction and block (32-byte hashes carried as they are, never re-hashed), amount and asset |
|
||||||
| provenance (added 2026-09-28) | `aere-proof-of-provenance` | `subjectHash`, `parents`, `createdAt` | an artifact (digest) was produced from a non-empty list of parents (digests), by a process (digest), by an actor |
|
| provenance (added 2026-09-28) | `aere-proof-of-provenance` | `subjectHash`, `parents`, `createdAt` | an artifact (digest) was produced from a non-empty list of parents (digests), by a process (digest), by an actor |
|
||||||
| secret-access (added 2026-10-18) | `aere-proof-of-secret-access` | `service`, `operation`, `verdict`, `presentationHash`, `createdAt` | a secrets service judged one request (put, get, rotate, revoke or grant) on a named secret and version: the verdict and the rules that decided it, the presented identity (presentation digest), the holder and presenter, the grant and the policy (digest); never the value |
|
| secret-access (added 2026-10-18) | `aere-proof-of-secret-access` | `service`, `operation`, `verdict`, `presentationHash`, `createdAt` | a secrets service judged one request (put, get, metadata, rotate, revoke-version, grant, revoke or list) on a named secret and version: the verdict and the rules that decided it, the presented identity (presentation digest) and the request it was signed for (request digest), the holder and presenter when verified (claimed ones are named as claimed), the grant and the policy (digest); never the value. Its values have a fixed vocabulary (KINDS.json, values) |
|
||||||
| ai | `aere-proof-of-ai` | `model.name`, `createdAt` | an AI action: which model and version, which prompt, input and output (digests), which tools, which agent, who asked |
|
| ai | `aere-proof-of-ai` | `model.name`, `createdAt` | an AI action: which model and version, which prompt, input and output (digests), which tools, which agent, who asked |
|
||||||
| agent-decision (added 2026-09-29) | `aere-proof-of-agent-decision` | `policyHash`, `action`, `decision`, `createdAt` | an AI agent action was judged against a policy (by its hash): allowed or refused, and why; the action by the digest of its canonical JSON |
|
| agent-decision (added 2026-09-29) | `aere-proof-of-agent-decision` | `policyHash`, `action`, `decision`, `createdAt` | an AI agent action was judged against a policy (by its hash): allowed or refused, and why; the action by the digest of its canonical JSON |
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user