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.7.7.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.7.7-py3-none-win_amd64.whl (3.5 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.7.7-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.7.7-py3-none-manylinux_2_17_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.7.7-py3-none-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.7.7-py3-none-macosx_10_12_x86_64.whl (3.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-0.7.7.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.7.7.tar.gz
Algorithm Hash digest
SHA256 849e027f99de0486531b329d2aefada8a0d0da04e97206908c9a461d99783143
MD5 7836f2f349cfd1d6181afe08767dda45
BLAKE2b-256 14cf113e9159c31d84b4411e698984e189a4b1e8b627e1adc7efe3b6e6d2baed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ciris_verify-0.7.7-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.5 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.7.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 8732f4e7682f7bbf13e7abdd6a4c3c8473286855975eb32153b21b94980a5216
MD5 9f61c84040e367ff98b9d966bd25bcb4
BLAKE2b-256 1f2473834f14525fe6f6e0226e0ad00729af5353a76f2ddffdc735d1f0bcf9cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.7-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2b6994f629b92c6ec70cf0d24a64bc104411c6538eb291cc62282fa1606dca7e
MD5 290caaaaba581f23b49ec1251bf145f9
BLAKE2b-256 57b6a97635d3b53e09f0ecce11a7fd6ac34e4a6cd4009a1f7bf75c5f1010b23a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90a5aa4d5d1e1c4b3e9b792d8b2ca083034cbece3512200bcf80f8cff5219b2d
MD5 5d2751f0ed42a84fe8c75bf64702c71f
BLAKE2b-256 22c5e8e10ae856124b574bab6853d8e6b2bc81ab30355f8a44b87d1eecd068f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.7.7-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 c0a8365fb44df6e12a27019ed9766419ed50083621f0128dc6cd3cd83044c39a
MD5 72e1df6feb33880790d1d6cb82d4e5a8
BLAKE2b-256 503fb317ffec931d85544bb89db019b1ef19328cf5594e66701a79ee19a2d52b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bb25a88d48bbb888d79ec5217115b0293fb813b0dfd15abf769b106c3ca12be7
MD5 fea9996a649cfef3e67a64890b86d159
BLAKE2b-256 d92f1354768a0b11fbc9888b5facb267eeba8b54c471e8f4399767fccc0c074b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.7.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e1be759e767f7f41fe458e83f41e0b4ac6351823a54a2701d8d62e59b2ff3ea
MD5 ac32a9a4b817017177d96ac0e8345273
BLAKE2b-256 099db2d8d94076c0f93298e3a643aae6c091c423c5cab44de6f7fc43e4f5cd55

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 47ce339aef5f9cbefa2ba12ae0a3afb00c9a8466e88d25996565d17009c0a56e
MD5 c5b454685d3e141be9d1e253916c5b54
BLAKE2b-256 224212a9285e0295039fff340ef0a3d0648e9923fd3588aa13cae3808735f0aa

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