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-5.3.1.tar.gz (72.1 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-5.3.1-py3-none-win_amd64.whl (6.3 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-5.3.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-5.3.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-5.3.1-py3-none-macosx_11_0_arm64.whl (5.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-5.3.1-py3-none-macosx_10_12_x86_64.whl (5.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ciris_verify-5.3.1.tar.gz
Algorithm Hash digest
SHA256 2dcd15c8a1206e6a04044bdab5a8ff1e3a76b82afbba4b20404c621c112c5f36
MD5 96d40f500f4f06a49e4a7f8add008508
BLAKE2b-256 df8b41d13ab28fee1ac20adc022859efd500e46c639d56b06f9c088e9b398d6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.3.1.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-5.3.1-py3-none-win_amd64.whl.

File metadata

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

File hashes

Hashes for ciris_verify-5.3.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9bb720b338292efd271b47c3e700d87f16202289998cbb7f1706006f8cddb575
MD5 cd61ff820f408e586f518ab1f289b0d4
BLAKE2b-256 8f96afaa535f30f772f270802e96fad90a253d1667cf6316e4c76ef85f0f6682

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.3.1-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-5.3.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.3.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 64cc5eda09aff9531383eb30d150cb036a0bd6d63650b90ee325439b2fb74d2a
MD5 79bc01590e3be6d8b1feef885a8176aa
BLAKE2b-256 6abe019fe112a3ea1cfbddf07ea45bf73144fd05ead31db6c4c51a98a386d823

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.3.1-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-5.3.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.3.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 38e54c40e33d2d1116dde0e87c07bc8e127fde4ecf6fa796dc5a335259180c6a
MD5 0fe7d151b17bf1309bbc515fabeb2ad1
BLAKE2b-256 6bf92ef2c64fb43076fd3007a313639ef69042bb746acb13350efc140fdce947

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.3.1-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-5.3.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.3.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c71e51db99a82c69aed5a310294329236d0ea5b0d1fafee6cba8119598522ec6
MD5 0b21504366009335f94ff34f704ec793
BLAKE2b-256 819a74b73c868bae03e8bbd5c74d5aa3508e457d179378a51b1b0d12c26046e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.3.1-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-5.3.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-5.3.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 53110e1d273832d85d38d9faf53ded15d8d8d46d4a4a639c52912efd6b315b15
MD5 8a4e4e153c7e37255fc85d34ab864ef0
BLAKE2b-256 44d10b610f8e33512e5444b40cd3bf26f2e77b3f76ace0e6472bf6dbebd24074

See more details on using hashes here.

Provenance

The following attestation bundles were made for ciris_verify-5.3.1-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