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.1.16.tar.gz (28.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-1.1.16-py3-none-win_amd64.whl (3.7 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-1.1.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-1.1.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-1.1.16-py3-none-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.1.16-py3-none-macosx_10_12_x86_64.whl (3.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: ciris_verify-1.1.16.tar.gz
  • Upload date:
  • Size: 28.4 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.1.16.tar.gz
Algorithm Hash digest
SHA256 b3981ce12ebc1a55c9eaeba725dd7bd1f60acb6ee98df59e7411a467d09be4ca
MD5 1c8e77e5c8632a26df15c04ea422a9de
BLAKE2b-256 b431d6353b31c07ed4a23c94892382cd420b88d9d46d752f3cda0a6005f3aaa0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.16-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 cbf2ac03db9d7510e2f52063b602667fd2d49c4697f06ba9c764728326e65e67
MD5 2ae25f2fc7ef719bf88ef6b4960ba262
BLAKE2b-256 320f11330c20f656da981d1d66955f824b90eeac1095306f5d0d33db5ab717d1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.16-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ab27aa0b2c0fa6542ef55eefd6e9c37d6cd02e947d95dee40b9796a719281ee
MD5 fe9c20fed5fad57fa6d615e5c1e97b55
BLAKE2b-256 bffe2b92f9f87b6a6f8e8e2bde98f4c5e58c100f59fa9517347e8737389ce070

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.16-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ff2fb6f8b9b113f3dd1e53d18618a246da301d1fd3b46754f5663d7c94631c0
MD5 0822826c95c65c6d8a1e70f6569907be
BLAKE2b-256 5d4249c6f201ce0575a9264d353a97b14466fa3317f3e217e9019605b142fc3f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.16-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43725e6bf753eeb43a31c2c9b3ca9a11c1e3d19ebfd654a4a54e1f7016bd3ce7
MD5 2f25e04c16fe7647e5d7c0e3d2bec3de
BLAKE2b-256 c4d2f619f3c5c560e27ccc91c0e4fbcfb41f11c689a75b80152e0861e49b6766

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.16-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ae0d50f80b17c9ecd226a4abaf9f7c60926261baef19bf585c78f0399db17cbb
MD5 9ba28d4e8aa5530d7a609e8d71021c18
BLAKE2b-256 a614875cff4645bef2e475eb959a2376f098b497f9f42011f034f67e979e8086

See more details on using hashes here.

Provenance

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