Skip to main content

sign-and-verify

Python library implementing the Sign-and-Verify methodology: SAVSigner (owns a KERI AID, issues Foreign Artifact Wrapper and Dossier credentials, validates external AIDs' signatures) and SAVVerifier (cryptographically verifies a presented Dossier CESR stream).

Install

pip install sign-and-verify

Requires Python 3.12+ and the native libsodium library (needed by keri).

Setup (development)

  1. Install dependencies: uv sync --group dev
  2. Run the test suite (no network/witness pool required): uv run pytest
  3. To actually issue credentials against a real keystore:
    • Start a kli witness demo pool and a vlei-server serving the FAW/Dossier schemas (see the vLEI repo's schema/acdc/foreign-artifact-wrapper.json and schema/acdc/dossier.json — these must be saidified and published first).
    • Run scripts/incept-signer-aid.sh once (with SIGNER_NAME, SIGNER_BASE, SIGNER_ALIAS, SIGNER_PASS set) to incept the signer's AID and its two credential registries.
    • See examples/basic_usage.py.
  4. To verify a presented Dossier CESR stream (built via export_credential, see below): SAVVerifier(VerifierConfig(...)).verify_presentation(cesr, said) — a fresh, throwaway local KERI store; a verifier controls no AID and issues nothing, so VerifierConfig needs only schema_oobis beyond the keystore location.

Package layout

  • src/sign_and_verify/signer.py — SAVSigner, the issuance-side public facade.
  • src/sign_and_verify/verifying.py — SAVVerifier: verify_presentation() (crypto validity via keripy's Parser/Verifier) and check_revocation() (direct witness TEL query; does not cryptographically verify the revocation event itself — see its docstring for why that's an intentional, precedented choice).
  • src/sign_and_verify/utils.py — export_credential(): serializes a credential's full CESR proof (KEL + TEL + chained edge credentials, recursively, each edge fully introduced before anything that references it + the credential's own ACDC last) into one presentable stream.
  • src/sign_and_verify/dossier.py — generic Dossier reading and checking (read_dossier, check_dossier, check_authority_edge) and file-to-FAW matching (match_files); no vLEI, no project policy.
  • src/sign_and_verify/store.py — CredentialStore protocol and its keripy-backed KeriCredentialStore.
  • src/sign_and_verify/vlei.py — optional vLEI ECR chain rules (verify_authority_chain); the core never imports it.
  • src/sign_and_verify/environment.py, verifier_environment.py — open an existing signer/verifier keystore (never incepts an AID).
  • src/sign_and_verify/doers.py, issuance.py, resolvers.py, validation.py — supporting modules for the issue-and-wait pattern, schema/OOBI resolution, and signature validation.
  • src/sign_and_verify/config.py, verifier_config.py, errors.py — settings and error types.
  • scripts/ — kli-based AID/registry inception tooling.

Metadata

Release files for sign-and-verify 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sign-and-verify 2.0.0
File Size Uploaded Provenance Actions
sign_and_verify-2.0.0.tar.gz 40.5 kB With provenance Details for sign_and_verify-2.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for sign-and-verify 2.0.0
File Interpreter ABI Platform Actions
sign_and_verify-2.0.0-py3-none-any.whl Python 3 none any Details for sign_and_verify-2.0.0-py3-none-any.whl

Total release size: 68.3 kB

Release files / sign_and_verify-2.0.0.tar.gz

Download URL sign_and_verify-2.0.0.tar.gz
Size 40.5 kB
Tags Source
SHA-256 checksum
How to use checksums
328d9c056428be8b8a38bbe2cb8bc559fe8de26f6478d6b8b9b5f39ab03532f4
BLAKE2b-256 checksum
How to use checksums
8c81d8b1c29dc8714d00a6c6608969fca0ee4450b09e3f55af9cf10fe8b1f4ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / sign_and_verify-2.0.0-py3-none-any.whl

Download URL sign_and_verify-2.0.0-py3-none-any.whl
Size 27.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
818ad6e846ff0936608e094cc1d4b13a958c62eef65de722cc2a002a1694bfb5
BLAKE2b-256 checksum
How to use checksums
1524b515d1935556e93fd769e69b979ac8fd590d71b0b42514dbf1050fb4c1fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for sign-and-verify 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for sign_and_verify-2.0.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page