Skip to main content

Standalone verifier for Signed Verification Receipts (SVR). No engine dependency required.

Project description

svr-verify

Standalone verifier for Signed Verification Receipts (SVR).

Trust infrastructure for the agent economy. Every agent action should leave a receipt.

No SATYA engine required. No SIGMA dependency. Just the receipt and the public key.

Install

pip install svr-verify

Verify a Receipt

Command Line

svr-verify receipt.svr.json

Output:

============================================================
SVR Verification Report
============================================================

  Receipt ID:      SATYA-20260518-4C2388CC
  SVR Version:     1.0
  Receipt Type:    compliance
  Verdict:         contradicted
  Items Checked:   12
  Items Passed:    7
  Items Failed:    5

  Signature:       VALID
  Structure:       VALID

  RESULT: VALID

============================================================

Machine-Readable Output

svr-verify receipt.svr.json --json

CI/CD Integration

svr-verify receipt.svr.json --quiet
# Prints VALID or INVALID
# Exit code 0 = valid, 1 = invalid, 2 = file error

Python API

from svr_verify import verify

result = verify("receipt.svr.json")
print(result["valid"])            # True/False
print(result["signature_valid"])  # True/False
print(result["structure_errors"]) # [] if clean

Low-Level API

import json
from svr_verify import canonical_bytes, verify_signature, validate_receipt

with open("receipt.svr.json") as f:
    receipt = json.load(f)

# Verify Ed25519 signature
sig_ok = verify_signature(receipt)

# Validate structure (required fields, count invariant)
errors = validate_receipt(receipt)

# Get canonical byte sequence (what was signed)
payload = canonical_bytes(receipt)

What It Checks

  1. Signature: Recomputes the canonical serialization per SVR Spec Section 4, then verifies the Ed25519 signature against the embedded public key.

  2. Structure: Validates all 22 required fields, the count invariant (items_checked == items_passed + items_failed + items_excluded), per-item required fields, and enum constraints.

  3. Canonical Hash: Produces a SHA-256 digest of the canonical payload for fingerprinting.

What Is an SVR?

A Signed Verification Receipt is a cryptographically signed, point-in-time attestation that a verification engine audited a specific input against specific sources and produced a specific result.

SVRs are:

  • Portable: not locked to any platform
  • Signed: Ed25519, unforgeable
  • Independently verifiable: anyone with this library can check one
  • Vendor-neutral: any compliant engine may issue SVRs
  • IANA-registered: application/vnd.svr.receipt+json (IANA media types)

Specification

License

MIT. Use it anywhere. Embed it in your platform. The whole point is adoption.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

svr_verify-1.0.2.tar.gz (19.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

svr_verify-1.0.2-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file svr_verify-1.0.2.tar.gz.

File metadata

  • Download URL: svr_verify-1.0.2.tar.gz
  • Upload date:
  • Size: 19.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for svr_verify-1.0.2.tar.gz
Algorithm Hash digest
SHA256 b077a6802007e7a647c8cf6ba6ab16327e33dccac263c0f3adc8027a7f749ca5
MD5 f5a8e73baa05ed3d9b5cf2b887c7f5f3
BLAKE2b-256 0d05a2e466da693c7979689c993bb9e268e7e4f87eb37deb32832939f7105f34

See more details on using hashes here.

File details

Details for the file svr_verify-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: svr_verify-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for svr_verify-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 10cbe236ac5adacbb8157c95452e87975d6b70c43d765714a306f62da67de94a
MD5 28ca4fb534d0d7583e710db4c73affa9
BLAKE2b-256 f385f45dab66130de362546654070506a774d0ded7dfd4e84e041cbb19aa31cb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page