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-1.12.2.tar.gz (44.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-1.12.2-py3-none-win_amd64.whl (6.0 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-1.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-1.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-1.12.2-py3-none-macosx_11_0_arm64.whl (5.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.12.2-py3-none-macosx_10_12_x86_64.whl (6.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-1.12.2.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ciris_verify-1.12.2.tar.gz
Algorithm Hash digest
SHA256 22bae8271aa640b941823ca1a3fc036b900bec3cadafdc111c4f97ea57f12d19
MD5 d217bc58219e50a5f43467689a413369
BLAKE2b-256 87be242ba52a857018d90695df4ffdd5d99a446c3434d5532ed1350684e9deb6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7cdc14392be0069d05e2caf00a92671b4146c20a38c4842b74155b4f1ba4fa4b
MD5 ce11c59b79cd70d8316aedffd415b874
BLAKE2b-256 c09e400feb488a6d528849380aec88908533192d13bdc9f36fabd5f08e39a523

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9af8e87ad2f341e967bf126260b423725e40e92eea0b462fb12a60c2e011608d
MD5 efd41de387f5a7744273a3f5e561a758
BLAKE2b-256 03f2d6d924084223b9a44a1fe27ea9bba36a857ebc77e0a71f4dad9920462270

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 97003aee6e158f9b784518d069246dd90fa9fa6fa628b2e91ddcd4a08bd06642
MD5 425df2a3da83119a2748b7b4c99f261f
BLAKE2b-256 5c51d79ae8df05a56ee1c8d3663e14c03df4a6b0f12e41c9db99698feb4d8cab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.2-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a2ad0ef0be65ee6465676e834d1cf74fcdba7ddff1c8c4e4b9a10731a241eab
MD5 da86314b687781793e23a7f65675c9d9
BLAKE2b-256 8dcddc7d3f9dfa1d405c75a953a1cbdc83f1a7e9af71722fe48710b108283e47

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 47166a0c9628ce4034e72961fcf26c783b4b5c6e14c0cd587d52bd9aacad0f78
MD5 ac875246d9e92d33d6588ce65961303e
BLAKE2b-256 b0751b3a3f6623537fc71d5be1a0e74988ac09f1a3de767518129de7771f0633

See more details on using hashes here.

Provenance

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