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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.7.10-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.10-py3-none-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.7.10-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.10.tar.gz.

File metadata

  • Download URL: ciris_verify-0.7.10.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.10.tar.gz
Algorithm Hash digest
SHA256 84955293a018f1b38b726e3883cb0de742330b2ecada2bfec3ae5e0d10abeaf1
MD5 a38f9e29c52212b7c976bdcef74e50e0
BLAKE2b-256 1e93d9b35a28349b031b87eb5b06bdc92923d59d8365b2fa2e62fd57450263b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a9820520946d942eae512eab6aa513598a4e90287055c73bc7dd397e5ffa4dbe
MD5 bea8245e27d85c066a8f16d8647c71db
BLAKE2b-256 174cb9398c8ef5927e18d4ba9def2d826bb68a51d4a4e570aa9c415809db25a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 8b6804bce96c0c8bd2efad7031b8cd5d74721555a233c3e153f58b2cf4421126
MD5 74d28211e64ad69e1b39b686b860f873
BLAKE2b-256 48963353aa3dbb761a646846da15ae02236805845419c78ee633954d5de6d07c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5095562ecc119a2f3ceaa68d357f8a079fa1fabe45607fde9905c8c26fe96cbf
MD5 fa25f3d9ee01b14287494d6d6aec1491
BLAKE2b-256 1ca11c25f76a3e874e1787b7123be7cf530c54ebd94ab1e5bc1315c1dd7586b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 cee2e422292f603d1ac957ad23373bbd69ce5d4888eb6e806f5a9a37079295bc
MD5 e4c59f8aa18c4f17278ab1b3e9ead5ed
BLAKE2b-256 de29f9cf8117da2a68599505233e075100f2c1e07c21386f613ba4f3768b5337

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0ff684a97a6dbc865d33c000729172080d55ccaa1177f2326ae33e8e37889c04
MD5 288e0fca2552e80bf95e4647daa8b616
BLAKE2b-256 a50403eb21ba36d2108698c5fa541cd0253e609920c7866eb5953243c9201fd8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 573a8db0767209350901cc37352c933fb7654e144c2dd3d3a03844e361f490dc
MD5 9cf2eef54ff4085dbc981aab5499bbf7
BLAKE2b-256 87f34dc4fba3e86306f4f94ffe4c75be6b6406375d4cb800345f0bfb6ae253ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 30f4a1aae7daa205c71cf0269e18535f4d54e959a1cfa674223aff8c64c00038
MD5 6bd960b62977354c96b29c89fecc3e49
BLAKE2b-256 f1d956f2ab72e1caf06a26cc2aa412893f4d46ef47b695b98336ef8e56f78d5d

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