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

This version

1.4.3

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.4.3.tar.gz (34.6 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.4.3-py3-none-win_amd64.whl (3.9 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-1.4.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-1.4.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-1.4.3-py3-none-macosx_11_0_arm64.whl (3.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.4.3-py3-none-macosx_10_12_x86_64.whl (4.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ciris_verify-1.4.3.tar.gz
Algorithm Hash digest
SHA256 c46d4b6788d5d2ee9876da796bb6f8a4484ada4a9d7c9a750e6023739f0c5b43
MD5 c3d3cdd09de14d55820d42ab47d3a05b
BLAKE2b-256 7a6d4e6ab9154de9dacfa442e06520a770479cfd83301d112c50d72690307f0e

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ciris_verify-1.4.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ciris_verify-1.4.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 25be2ee9f666976e1bbe25874c1a22967e0b63b54f4fa1880a8a493570cbf84e
MD5 f5c9312767a986aa8fd20576c4fae412
BLAKE2b-256 c9c0237f1ed85e66dce9c8300fa8384a263da1db610054387d2b13f379742316

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.4.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43e79b2d9428c69f80afa50bfb2b9ae91a835616013541ed65ffb03eb642046d
MD5 bbee32dcddd226c8b2128200bf392c61
BLAKE2b-256 f4c1a6b5916cc9edb7692aab330aac77adcb09748aff3edbdc519c1bcaab0b40

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.4.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51bd895cbe84ba8851cb2254dadd462e74f58965e9562ce6688a8f8d00705644
MD5 246390ce52583649ce3d2fe5979e7c34
BLAKE2b-256 ed9a6a46d38a3d6ff42325eaa4a4b12bd2b768edfc74674f3f70584caca8cdb5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.4.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e786981fb68bdfb642b3804f5c9160748813b1be8cab18f9963c68b854ec77d2
MD5 a2aa09bee9011da9b6782ddf7db32641
BLAKE2b-256 a2093b8254a0e7294843f870c5ad5aa9f004153e20d709d9304224d7eae1169e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.4.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 627689dcadebb472db66791d54baa7ab3e6bc6d0e842e08cbd0464678b9398d5
MD5 0cbf4bcf7aa3b2fc97db3021f77d70b0
BLAKE2b-256 5aa5e73c1b02c90c60bb92755e8d0ee73d06b2a55dcaf242b83c69ec0a4b2fd6

See more details on using hashes here.

Provenance

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