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

Uploaded Python 3Windows x86-64

ciris_verify-0.8.1-py3-none-manylinux_2_17_x86_64.whl (4.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.8.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.8.1-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.1-py3-none-macosx_11_0_arm64.whl (3.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.8.1-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.1.tar.gz.

File metadata

  • Download URL: ciris_verify-0.8.1.tar.gz
  • Upload date:
  • Size: 24.3 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.1.tar.gz
Algorithm Hash digest
SHA256 7d9610bc128e99dcb7c0cc1f5635de2166db67001d8dac42957b3c7802ce5a3f
MD5 0388f434dd9380c79919b0e5a83a1f51
BLAKE2b-256 935f7e7ed8e38d082f66a23ab7226060315576d155c895b2e1baf960f2c9d79d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ciris_verify-0.8.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ciris_verify-0.8.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7aa9c22618d46dcb3dd62dcae388685e464a0a6ed9ccd11622f5e5c29f9d7e5b
MD5 c97e504c6e5b83147e6f02d1c0a77ff4
BLAKE2b-256 96314815ee2da361b528166faa08f00acc14a19eefd11cd0ee3cb5233d13a611

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.1-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c6e29277689705aadd798bb20fa1de26c005a20e03ff1d45bd75bb5f96664f83
MD5 4e5bde2e1a14576b179681f2a6b69882
BLAKE2b-256 c449f431f9331f5797427c41d2138c7255b512c4fb554b5a3d138c62d1617e79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a96c0f1ed28411264667ed8520544f165f348b644abb69295caf9d7801a429d
MD5 8f921803be118f5ec872adc5b5370c63
BLAKE2b-256 d71a070ea323366326699bbcda528d0a123285d1f57a2627fb57839a869b6dce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.1-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 c454a31814510a560b0cc154079067589c493e6d7462c75797eba14f6bdf72b9
MD5 244c3fb47a9d7f48061b9a69d60d09d2
BLAKE2b-256 651e59745de39a37f530938f2a1e9014bf5f0f23ebb6137ef6a625fdae97c498

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4f1c1975808bd7f35ad7f2d631e64cf3bd29ed5d24e6f259723cc42e62dcb524
MD5 f756247116984335ba572ce9edc9e53d
BLAKE2b-256 9e2ad8451a2f071147b0bce70a3856e8d1970d7e0f1719f98b1d79217e7541ba

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.8.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ee65b5ded3615252422a7e85acf0f9fa6598bd61b958749fed15b50023edd2c
MD5 bcf7133b651138f6ad75f8f5048457c7
BLAKE2b-256 0cf2f756a4b0291bd943b5b68237068f3d8c0230587de4cad3606ca89d216e4a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.8.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8bb5e523ff98b813dbc61479164f887418ab8eebd28a865bf9bc50c1c5aa7406
MD5 f2f34df3b4a8cf6391ef62e9f24e4b79
BLAKE2b-256 f7c1e3e6d2d38fa62702bf9ef4af4de2bc5065683c47173a93562e9d0d7c04b0

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