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-0.6.10.tar.gz (21.4 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-0.6.10-py3-none-win_amd64.whl (2.5 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-0.6.10-py3-none-manylinux_2_17_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.6.10-py3-none-manylinux_2_17_aarch64.whl (2.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.6.10-py3-none-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.6.10-py3-none-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-0.6.10.tar.gz
  • Upload date:
  • Size: 21.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ciris_verify-0.6.10.tar.gz
Algorithm Hash digest
SHA256 746eebf663a2056cc4daec8c18d35af76bdcea4bb6c55cd4cff5d5f8c2946e63
MD5 a5b0b8c1e51fa29b20d6ee97ef53b931
BLAKE2b-256 206fa85b6f6b6ddaf7e925d8e3d389c28549949328bd89251cab4750c376e480

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.6.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1b085dcd699d74adb668d59685e8e047a98570c012b6425d703e9af5e90201ba
MD5 d037fe991f440d1aefe1a9e6aaaf5bba
BLAKE2b-256 05229c8f3514a98001d8d24df7d4f3441c19364eda2c899a6488b5686c2f1829

See more details on using hashes here.

File details

Details for the file ciris_verify-0.6.10-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for ciris_verify-0.6.10-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 60253d39c32fb7457d2b0e5e91ff6052525e1fec3f8366102172d774f71fe3d7
MD5 53bcc3e85b820083090713b865ceb8ba
BLAKE2b-256 f8f6b5c2e2fd88ecf5ff79a36a503fffd5799d9c170a8801a778932e3867723a

See more details on using hashes here.

File details

Details for the file ciris_verify-0.6.10-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for ciris_verify-0.6.10-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 4e8cb26e3d11e02929a3322aa65fd1adf9f8a249ad0a84e49da93071b4d74d8c
MD5 55056063da3029e274232e79bc9da440
BLAKE2b-256 b7dc4841774f9dbeed4cd3f9888fe7f6989cf65046ce0b7ca1e71c63b3734685

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.6.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 391b8159856860d442c85552e1a3d7edf55dcc0250deafb22b745978bfd9af35
MD5 736efcaed357bc0cbaf680486d522cb6
BLAKE2b-256 66b1da36e4ba716b3f529b8205fa2373d036251446e33ed371cc26fbe3d5739b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.6.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 74f6df34ac414168242b5e833a15003181593192e95b64c5fce4179aa45ac9e8
MD5 4844f0cd7781d4ac13341dbe84b39595
BLAKE2b-256 1daef93803a23d4fd616df37c8147cd74c87a530f4e72dcb18431aab135d5dca

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