a2spa 2.4.1__tar.gz → 2.4.2__tar.gz
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.
- {a2spa-2.4.1/sdk/a2spa.egg-info → a2spa-2.4.2}/PKG-INFO +1 -1
- {a2spa-2.4.1 → a2spa-2.4.2}/README.md +1 -1
- {a2spa-2.4.1 → a2spa-2.4.2}/pyproject.toml +1 -1
- {a2spa-2.4.1 → a2spa-2.4.2/sdk/a2spa.egg-info}/PKG-INFO +1 -1
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_evidence.py +4 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/LICENSE +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/MANIFEST.in +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/README.md +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/__init__.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/delegation.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/ephemeral_agents.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/evidence.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/policy_constraints.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/py.typed +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa/state_integrity.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa.egg-info/SOURCES.txt +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa.egg-info/dependency_links.txt +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa.egg-info/requires.txt +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa.egg-info/top_level.txt +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_delegation.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_operation_ledger.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_policy_constraints.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_policy_usage_ledger.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_receipt_verifier.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/sdk/a2spa_state_integrity.py +0 -0
- {a2spa-2.4.1 → a2spa-2.4.2}/setup.cfg +0 -0
|
@@ -16,7 +16,7 @@ A2SPA does not prove target-side execution, commit, or exactly-once effects unle
|
|
|
16
16
|
|
|
17
17
|
## Hosted Service 2.4
|
|
18
18
|
|
|
19
|
-
The hosted GA contract uses product and Python/npm package version `2.4.
|
|
19
|
+
The hosted GA contract uses product and Python/npm package version `2.4.2`, protocol `v1.0`, and canonical `/v1` API routes. Existing `/api` runtime routes remain compatibility aliases during the documented migration window. The machine-readable API contract is published at `/A2SPA/openapi.json`.
|
|
20
20
|
|
|
21
21
|
Enterprise/on-prem A2SPA is a separately sold product with its own release process and is not part of the hosted-service release contract.
|
|
22
22
|
|
|
@@ -168,6 +168,10 @@ def _resolve_receipt_trust(
|
|
|
168
168
|
receipt_key_id = str(receipt.get("key_id") or "") if isinstance(receipt, dict) else ""
|
|
169
169
|
if not key and isinstance(key_registry, dict) and receipt_key_id:
|
|
170
170
|
registered = key_registry.get(receipt_key_id)
|
|
171
|
+
if isinstance(registered, dict) and (
|
|
172
|
+
registered.get("revoked") is True or registered.get("status") in {"revoked", "disabled"}
|
|
173
|
+
):
|
|
174
|
+
return None, "trusted receipt key is revoked or disabled"
|
|
171
175
|
key = registered.get("public_key_pem") if isinstance(registered, dict) else registered
|
|
172
176
|
|
|
173
177
|
pins = _receipt_fingerprint_pins(external_policy)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|