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

Uploaded Python 3Windows x86-64

ciris_verify-5.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-5.11.0-py3-none-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-5.11.0-py3-none-macosx_10_12_x86_64.whl (5.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-5.11.0.tar.gz
  • Upload date:
  • Size: 72.4 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.11.0.tar.gz
Algorithm Hash digest
SHA256 9021fa0b2441e16ed8e2c020f578b946eea51f0f02209685709aa21f5525c199
MD5 dcab32cfedddce12693d91c8b8952859
BLAKE2b-256 c33d5cb5a6b51a8dfe49345c26abd2f6f2abbe22d9d58a21aa870c91b910eb08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-5.11.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6f7e3d081b5193f4200735e6ab425e175ba20d3422fd40de025123aed11b1585
MD5 3b292be09f6a28cbc0794d865077b7ee
BLAKE2b-256 a9729b14c0f2bd6392eb24a9bc116ebb95e095b032a70f9caa20067d772ed20b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-5.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0512223bb9a9ad005e38ab4e6770dd4a6e29b52d828c288be87010e19f8ae19b
MD5 e4dd99e8a24a65f6640f4b708e40d9ea
BLAKE2b-256 cf28b5f480efa417e2a69ec12e18a021fb192055fb3735a2d297324a1443a9d9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-5.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 137e01f38e7a8fdccc3dfa559ff4bbd60044e80185e9fa8d0db7adc3445efb9f
MD5 96beb0de1511fa7164b9e5a2276a0a41
BLAKE2b-256 b4817dc6149c160e75f17abd507bacdae7d3c33e9d24be934ccb70b0e2a97650

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-5.11.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f51adabe1e7e940de0160eb056fbdc03af816c419403585276aaf0f975f6bd83
MD5 fcc2b6d6886943e37126b872ea7cfa15
BLAKE2b-256 07708f08f164eb3b9f1df1a70c14ed0bdadc8b638658ca2c768efb622a16dd8a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-5.11.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 825bfad791bf4872d9b96bb586a47f2f73114a9a58523ba0f436f6db8d72414c
MD5 7c9ac0e83f8411267e39edab3f6f80ce
BLAKE2b-256 0217edea4732016b52bc21217665ab68aac6e6c1942936d8857237c13ea7a9dd

See more details on using hashes here.

Provenance

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