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.8.10.tar.gz (25.5 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.8.10-py3-none-win_amd64.whl (3.6 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-0.8.10-py3-none-manylinux_2_17_x86_64.whl (4.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.8.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.8.10-py3-none-manylinux_2_17_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.8.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.8.10-py3-none-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.8.10-py3-none-macosx_10_12_x86_64.whl (3.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-0.8.10.tar.gz
  • Upload date:
  • Size: 25.5 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.8.10.tar.gz
Algorithm Hash digest
SHA256 de13a8f9b018a4e02aec6ac76558c0472657c95a08ed4b3bf9d765b81793aa3d
MD5 30638bb8461ae9cf4eb4830e9a73760b
BLAKE2b-256 0fa6a0ef3602e4050fae4a64a8c1915ab35e6ea04bd6dbacef746da01951a561

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1b76b5768cfde0d9e761935e6f65c96a209500f884d76a00302121492eff78f6
MD5 399defa8137c72cb9bcb17fc4cd43094
BLAKE2b-256 f4fde405cdeba2a61c10312f967397c4a154945e2ec406b268052f81e40c9953

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c9361ad1989c2b8aa1bd53aa0681b26b76c8c8a2173307d47543274d019fb325
MD5 2d8d1e4c3b13fc169267e59ebe7fc845
BLAKE2b-256 61061033b31de4a1c6c06302ce57c76fcb88c32c2ac028460f827e7369a28efb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e5f6b35ee617d129bbd1348c427dad242f07055c97121abdd3521fe36a92b42
MD5 aecc1315207e34120e93c0f13444486d
BLAKE2b-256 06e22c655aafe9b177297c0e5e12bea10a68d64a890a737ce15f457fdcf06970

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 35261ee15c20ca3f395f23ea503e732337b7801efeb3c64afb895cd8296431cf
MD5 d8b0759804cdb730ef120e76c40ae027
BLAKE2b-256 e00cc0c8e016e711f9cadb223758ad801dc59c612d737bdaf8cc43f25579d977

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6cd4a238f02ba0bf92b31a2188df8590f898ad4d10e6d616cd6ccbc04300f4d5
MD5 60e6e4af00e7da8d7b27ce103b654d2b
BLAKE2b-256 94be89760195356d0e8eb0e4a1ce13cc24a085129742214fec776cce94d94e2e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2b3043c8226a12e2d13881fcaa3d2eac426c84d112bb92589df4d721b17d519d
MD5 8b4ac3361dfcfadbfa09780f3b82c56b
BLAKE2b-256 f42de1912fd5cc5fdab2e92e3b6147436d901da4ee69d044b9cba31fd9d5ce55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 85d2c4d80becff33fdc737b0bef1d13addae2653bf956e55fb61cd2c4b7a4a8b
MD5 ff6943cceab41aea83bba6b03e2aa222
BLAKE2b-256 c8130c742724c49b1e3b109a8b9190961f81110b7cb4234ef193d0494a9c9bfd

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