Observed since 20 Oct, 20:55 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
aetherproof-verify
Offline verifier for AetherProof v1 signed manifests (Ed25519 + RFC 8785 JCS)
Offline, zero-trust verifier for AetherProof v1 signed manifests.
AetherProof is a cryptographic provenance system for AI-generated code. Every code artifact produced by an AetherProof-enabled pipeline is paired with a signed manifest containing the exact SHA-256 of the code, the prompt that generated it, the verifier gate evidence, the provider attestation, and the timestamp — all signed with an Ed25519 key and canonicalized per RFC 8785 (JCS).
This package lets any auditor, buyer, or third party verify those manifests entirely offline, without contacting any AetherProof server.
pip install aetherproof-verify
All wheels published to PyPI are signed with PEP 740 attestations via PyPI Trusted Publishers (OIDC → Sigstore), bound to this package's public GitHub repository. See Supply-chain posture below.
You need three inputs to verify a manifest:
https://api.aetherlang.online/v1/manifests/{id}, or delivered out-of-band.https://keys.aetherlang.online/keys.json and converted to PEM, or pinned out-of-band.aetherproof-verify check \
--manifest ./manifest.json \
--pubkey ./key.pem \
--fingerprint sha256:f95a45bdc15db8f6ef61fa853366e860726aefe16474e943ebe79b132a17e022
Or via module invocation (equivalent):
python -m aetherproof_verify check --manifest ./m.json --pubkey ./k.pem
from pathlib import Path
from aetherproof_verify.__main__ import check
rc = check(Path("manifest.json"), Path("key.pem"), expected_fpr=None)
assert rc == 0 # EXIT_OK
You can also import the Pydantic schema directly for custom integrations:
from aetherproof_verify.schema import AetherProofManifest
| Code | Meaning |
|---|---|
0 | OK — signature valid and fingerprint matches |
1 | Signature mismatch — payload was tampered or wrong key used |
2 | Fingerprint mismatch — wrong key or silent rotation |
3 | Schema validation error — malformed manifest |
4 | File I/O error — cannot read manifest or key |
{request_id, manifest, canonical_bytes_len} envelope returned by
api.aetherlang.online).extra="forbid", frozen=True).public_key_fpr embedded in the manifest. If
--fingerprint is passed, additionally pin-checks against it.signature field removed, and
verifies the Ed25519 signature.No network calls. No telemetry. No side channels.
AetherProof operates four independent trust boundaries:
| Boundary | Role |
|---|---|
github.com/contrario/aetherproof-verify | Source of this verifier |
keys.aetherlang.online | Public key distribution (keys.json) |
releases.aetherlang.online | Reproducible demo bundle (tarball) |
api.aetherlang.online | Manifest lookup (/v1/manifests/{id}) |
A compromise of any one boundary does not grant control of the others. Buyers should verify each independently.
pyproject.toml; cryptography>=46.0.7 (no known CVEs at release time).cryptography library built
against your OpenSSL.keys.aetherlang.online with a modern CA root bundle, or out-of-band
delivery).If any of these assumptions fail, verification results are meaningless. Verify your chain of custody before relying on verification output.
git clone https://github.com/contrario/aetherproof-verify
cd aetherproof-verify
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest
Apache License 2.0 — see LICENSE.
Report vulnerabilities privately to security@aetherlang.online.
Do not open public issues for suspected security flaws.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
cryptographyEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | cryptography<47,>=46.0.7 | runtime |
jcsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | jcs==0.2.1 | runtime |
pydanticEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pydantic<3,>=2.13 | runtime |
buildEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | build>=1.2; extra == "dev" | runtime |
pip-auditEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pip-audit>=2.7; extra == "dev" | runtime |
pytest-covEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-cov>=5.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0; extra == "dev" | runtime |
ruffEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | ruff>=0.6; extra == "dev" | runtime |
bdist_wheel · 10.98 KB · Python py3
sdist · 11.69 KB · Python source
Shared repository data · GitHub
Observed since 20 Oct, 20:55 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:d8d3890df6e25dae8262fdb58882f15f8eee1d24e2c5d40c3208eb34dccd9efb