scrollcase-consumer
scrollcase-consumer is the typed Python API for verifying, preparing, and running a
caller-supplied local Scrollcase box:
python -m pip install scrollcase-consumer
from scrollcase_consumer import run_box
result = run_box(
"release.json",
public_key_path="trusted-key.json",
archive="box.zip",
args=("--input", "sample.json"),
)
The public operations are verify_and_extract_box, attach_extracted_box,
verify_extracted_payload, run_extracted_box, and run_box. Verification always precedes
execution, and the child application runs with the box's own interpreter through an argument array,
never a shell.
Every operation that verifies a signed release takes exactly one trust source: public_key_path, or
trusted_keys for keys the caller already holds. parse_trusted_keys(source) turns either the
single-key JSON shape or a {"keys": [...]} bundle from text or bytes into the latter, without
requiring a temporary key file. Malformed trust JSON or entries raise
Invalid trusted ed25519 key file.; an empty bundle or an unusable PEM cannot verify a signature
and reaches the common no-valid-signature error.
Every verification, attachment, payload-check, and run result carries environment_report.
Release-declared values override inherited host and caller values; no inherited variable is
filtered. Host values are masked by default. Pass env_report=True to include every name and
env_report_values=True only when revealing host values in logs is intentional. The report is a
local diagnostic snapshot, not a signed guarantee of the box. Release and caller values are never
masked, so do not log a report containing caller-supplied secrets.
A receipt is bound to the process that produced it, so an application that installs a box once and
runs it across restarts calls attach_extracted_box on each later launch: it re-identifies the
extracted directory against the signed release without the archive and without re-reading original
payload file contents. It still enumerates paths, measures metadata, requires the native target, and
verifies on-demand assets. The returned receipt says status == "attached"; a freshly extracted
receipt says "prepared".
verify_extracted_payload is the separate, opt-in check that the installed bytes are still the ones
the release describes. It verifies the signed payload-digest.v1 list before parsing it, then hashes
only the files and links that list names. Extra application output and on-demand assets are ignored;
embedded assets are listed and may make the check read tens of gigabytes. Modes and timestamps are
not part of the commitment.
The result is point-in-time integrity, not protection against later changes or a live local
attacker. The build collector excludes __pycache__ directories and *.pyc files, so the digest
never makes an assertion about compiled Python caches. Protect an installation with operating-system
permissions and the embedding application's ownership policy.
This package does not select channels, download boxes or on-demand assets, update installations, publish, promote, revoke, or manage application lifecycle. The caller supplies local release, archive, trust-key, destination, and asset paths.
The repository's src/contract/schema/ directory is the format authority. Run
python scripts/sync_schemas.py after an intentional schema change and
python scripts/sync_schemas.py --check in verification; the bundled files are generated copies,
not a second Python contract.
Repository verification:
python -m unittest discover -s tests -t .
mypy src
python scripts/sync_schemas.py --check
python -m build
python scripts/check_distribution.py dist/*
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scrollcase_consumer-0.4.1.tar.gz.
File metadata
- Download URL: scrollcase_consumer-0.4.1.tar.gz
- Upload date:
- Size: 35.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93bb30b8ac761825e515aaed9bba4f3ee402e78255bac32f3af9e1055ab8c25e
|
|
| MD5 |
a41744b799779d131c70f3235c5e381a
|
|
| BLAKE2b-256 |
a797e8bdd15ac3a4d9a556f0a73ef91ba5a81c03d05544a9511b211b0af62e75
|
Provenance
The following attestation bundles were made for scrollcase_consumer-0.4.1.tar.gz:
Publisher:
publish-python.yml on suffro/scrollcase
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scrollcase_consumer-0.4.1.tar.gz -
Subject digest:
93bb30b8ac761825e515aaed9bba4f3ee402e78255bac32f3af9e1055ab8c25e - Sigstore transparency entry: 2388644177
- Sigstore integration time:
-
Permalink:
suffro/scrollcase@952140656f50a1d50d0b9feb409d227c7acaecfb -
Branch / Tag:
refs/tags/python-v0.4.1 - Owner: https://github.com/suffro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@952140656f50a1d50d0b9feb409d227c7acaecfb -
Trigger Event:
push
-
Statement type:
File details
Details for the file scrollcase_consumer-0.4.1-py3-none-any.whl.
File metadata
- Download URL: scrollcase_consumer-0.4.1-py3-none-any.whl
- Upload date:
- Size: 40.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af64a0970ec039875eb6a357905fa950cd50af44223145e14fa079ff697b453c
|
|
| MD5 |
60d2a9424e136cf3a11c4d0b50512425
|
|
| BLAKE2b-256 |
3ada7b92543be2615e2dc8cec8946045e52b432a2ea32dcd18bc587215721f36
|
Provenance
The following attestation bundles were made for scrollcase_consumer-0.4.1-py3-none-any.whl:
Publisher:
publish-python.yml on suffro/scrollcase
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scrollcase_consumer-0.4.1-py3-none-any.whl -
Subject digest:
af64a0970ec039875eb6a357905fa950cd50af44223145e14fa079ff697b453c - Sigstore transparency entry: 2388644186
- Sigstore integration time:
-
Permalink:
suffro/scrollcase@952140656f50a1d50d0b9feb409d227c7acaecfb -
Branch / Tag:
refs/tags/python-v0.4.1 - Owner: https://github.com/suffro
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@952140656f50a1d50d0b9feb409d227c7acaecfb -
Trigger Event:
push
-
Statement type: