Skip to main content

Python bindings for CIRISVerify hardware-rooted license verification

Project description

CIRISVerify Python Bindings

Python bindings for CIRISVerify, the hardware-rooted license verification module for the CIRIS ecosystem.

Installation

pip install ciris-verify

Note: The CIRISVerify binary must be installed separately. See the CIRISVerify documentation for installation instructions.

Quick Start

import os
from ciris_verify import CIRISVerify, LicenseStatus

# Initialize the verifier
verifier = CIRISVerify()

# Get license status with a fresh nonce
status = await verifier.get_license_status(
    challenge_nonce=os.urandom(32)
)

# Check if professional capabilities are available
if status.allows_licensed_operation():
    print("Professional license verified!")
    print(f"Tier: {status.license.tier}")
    print(f"Capabilities: {status.license.capabilities}")
else:
    print("Running in community mode")

# IMPORTANT: Always display the mandatory disclosure
print(status.mandatory_disclosure.text)

Mandatory Disclosure

Per the CIRIS ecosystem rules, agents MUST display the mandatory_disclosure.text to users. This ensures transparency about the agent's capabilities and licensing status.

# The disclosure MUST be shown to users
disclosure = status.mandatory_disclosure
print(f"[{disclosure.severity.upper()}] {disclosure.text}")

Capability Checking

For frequent capability checks, use the fast path:

result = await verifier.check_capability("medical:diagnosis")
if result.allowed:
    # Capability is available
    pass
else:
    print(f"Capability denied: {result.reason}")

Testing

For testing without the actual binary, use MockCIRISVerify:

from ciris_verify import MockCIRISVerify, LicenseStatus

# Create a mock that returns community mode
verifier = MockCIRISVerify(
    mock_status=LicenseStatus.UNLICENSED_COMMUNITY
)

# Use exactly like the real client
status = await verifier.get_license_status(os.urandom(32))
assert status.status == LicenseStatus.UNLICENSED_COMMUNITY

Error Handling

from ciris_verify import (
    CIRISVerifyError,
    BinaryNotFoundError,
    BinaryTamperedError,
    VerificationFailedError,
)

try:
    verifier = CIRISVerify()
    status = await verifier.get_license_status(os.urandom(32))
except BinaryNotFoundError as e:
    # Binary not installed
    print(f"CIRISVerify not found: {e.path}")
except BinaryTamperedError:
    # CRITICAL: Binary has been modified
    # Halt all operations immediately
    raise SystemExit("SECURITY ALERT: Binary integrity compromised")
except VerificationFailedError as e:
    # Verification failed - operate in restricted mode
    print(f"Verification failed: {e}")

License Status Codes

Status Code Description
LICENSED_PROFESSIONAL 100 Full professional license active
LICENSED_PROFESSIONAL_GRACE 101 License valid, in offline grace period
UNLICENSED_COMMUNITY 200 Community mode, no professional capabilities
RESTRICTED_* 300-399 Restricted mode due to verification issues
ERROR_* 400-499 Error states (revoked, expired, etc.)
LOCKDOWN_* 500+ Critical security failure, halt operations

Thread Safety

The client is thread-safe and can be used from multiple threads or async tasks concurrently.

License

AGPL-3.0-or-later - See LICENSE file in the CIRISVerify repository.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

ciris_verify-1.2.4.tar.gz (32.3 kB view details)

Uploaded Source

Built Distributions

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

ciris_verify-1.2.4-py3-none-win_amd64.whl (3.8 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-1.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-1.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-1.2.4-py3-none-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.2.4-py3-none-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file ciris_verify-1.2.4.tar.gz.

File metadata

  • Download URL: ciris_verify-1.2.4.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ciris_verify-1.2.4.tar.gz
Algorithm Hash digest
SHA256 1689b4658ab5baca5a0196daf9df0c3690a1fdc7ded9896190ee4b5aaf27bf4a
MD5 f71fd1b5ca1f39947150632842aeff98
BLAKE2b-256 884bafd89d49f46c2e7f9fec2d26914e1ca89737adc79be7a76375b08ddbf35e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-1.2.4.tar.gz:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-1.2.4-py3-none-win_amd64.whl.

File metadata

  • Download URL: ciris_verify-1.2.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ciris_verify-1.2.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b5a30e72a18d22dc8de0685e6776211f67a3b27b7b72fbf94045729ecb1c383a
MD5 92deaff8a9693bf76261b9642e2319d6
BLAKE2b-256 28b4742774052272cb423b8e5c1d5a1c35351ea594ced87440010ca81770f429

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-1.2.4-py3-none-win_amd64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-1.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-1.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2923bbe29d027402841e3d171a9a4508ff41d88ee02ce584a4304ab55a40053d
MD5 f487ce9a4d243f973ebe028794091efd
BLAKE2b-256 debe5ea05cd4b984d17579ac8770413f17a666e5f39b4f78fccc7fa45c83999c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-1.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-1.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ciris_verify-1.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d89ffb1bdcb86bb45c38f2ec7df57e589db4e69d2c077463caf966ff0ad86256
MD5 981a4e7bde86d88165240d5409a15d15
BLAKE2b-256 f8079713ad6324b1c12cb035898c1d135fd2dc209d23f1d424316c1f2c982713

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-1.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-1.2.4-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciris_verify-1.2.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf943253aae362edf4fd7049cf9766a9badcbc87565cc099dc73615a9cdbc128
MD5 bdea47718eada9b5a47ca0af3f6cc4ab
BLAKE2b-256 3a131488d63d8a7f8f9cc9096a4640c4a7be7db7848579e932cf337a66c31599

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-1.2.4-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ciris_verify-1.2.4-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-1.2.4-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 faf2a5009c38a7b267169f90266337ace87fb6a18928792d4e84c5039b710f2e
MD5 4b7c98e96e4d270d27c86dee41b44f2f
BLAKE2b-256 5f3ca6a593138a7c4eff5d9397b3c48f6d457ef814eab62c077f3e0e44ac4fe2

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-1.2.4-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on CIRISAI/CIRISVerify

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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