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

Uploaded Python 3Windows x86-64

ciris_verify-0.10.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ciris_verify-0.10.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.10.13-py3-none-macosx_11_0_arm64.whl (3.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.10.13-py3-none-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for ciris_verify-0.10.13.tar.gz
Algorithm Hash digest
SHA256 d7fb313dfea7a86a602b7d8bc8e84b63893428f2be9b31babb18a0c276cd2885
MD5 a4421f4d94bf1871a43842f054f358c3
BLAKE2b-256 8ed0b3e5ce458ac5a90a043586addbba19cd119bc0309e95845c4405933d38e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.10.13-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1efabff2b3bed1a10ac3773c7326bb1f3f5b05803178e3874bfdf1c10a646d0d
MD5 8eeee4db5615e94295cee052bc12bf29
BLAKE2b-256 651ace955687ce276083ae4430d3552a5721b025b838b8bbb58dc3de65a4f766

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.10.13-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 157e30572fa71807e5204f4133d19a5cb84364ba63554461556d9778fc4b5a6b
MD5 08390e554cc69b2fe565bef7d17b5e3c
BLAKE2b-256 b03b8fba85a6aa17d504f3c6b5a797898ba5f92dcda66c61710ca80f00cee117

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.10.13-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8932fe93fe3dd50d1b230dbf95cc92dafcc4145c9aaf8fdd4881aa10c96824df
MD5 3bb346be636f64e3cd02edb1e08d340f
BLAKE2b-256 5f795c930491a2b776bbf8f8166c0bda5744528f9f9f1304469fe026aab33c81

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.10.13-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 981c1b4d6fd793ee54f88976cb8c0b81ec9b4d89c5b200528a4fcc8a70f42d10
MD5 0da8bad0729826afb3ec5a3edb8c4e92
BLAKE2b-256 034c1f863f652687de82308b20cc6d9e9981ca6d69d04d5c842ebcd15285b2b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.10.13-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 41cd0109a7f06e9682b14d3c613f09ee2f4755365c8cff03070d061528c9eb8d
MD5 799e180d6471e91e5603f08d2f01f978
BLAKE2b-256 d307a8191a0f2f9dd4e39b1924b8b939ba90346ff0e602870ae93954fdca654f

See more details on using hashes here.

Provenance

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