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

Uploaded Python 3Windows x86-64

ciris_verify-1.10.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.10.0-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.10.0.tar.gz.

File metadata

  • Download URL: ciris_verify-1.10.0.tar.gz
  • Upload date:
  • Size: 42.6 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.10.0.tar.gz
Algorithm Hash digest
SHA256 4c588a4be0d67758b2ea26a9ffcbd2fd3f597770745b129dd2c8bd00945fd28e
MD5 39e7f8d221371c140847ea5c52f7c505
BLAKE2b-256 58f1d6fa24c067a199ad7a7905977b2c48b7ff88ab88175f13f4974d672272a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.10.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1b5f23721b7cc9436d3ef5483bc0c50931bfe391792da78c605db38a59957ff0
MD5 5c77e7562690c7d5f9063057c5995b85
BLAKE2b-256 57d2684a9f4fde56018e662bc39a92476d2d552b336548df7764cc810414d40f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.10.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ee89a12eb5dc6d69b58c3e733c795ed0673f372735942464a3c816ee4b77945
MD5 4e739239a702a85a7132254370122998
BLAKE2b-256 96551d45e973e243d554ae6a148444b8ef2b15248e0c9748e70c21e582e12d3a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.10.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a4b49e7329ee45c573d1489c2ded61943f5347c8bc37efccb0ca205f52eb283
MD5 9c072f4e19ebb72d3c5df8d61ce70e75
BLAKE2b-256 41f1e4d92e2fdde1ece999003beacd6e4bd4a3f2d7bc0f021b5ec5960531d3dd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.10.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f49fb6d9b354a231453427c918e3d0b3b3e3ce33798667d4a64e81d9b985bc7
MD5 ee13330cf05f221f31949503948ed311
BLAKE2b-256 267831780454af6684d8681bf7f0deaea89edaa0ab431e903ce7de5cafdf4198

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.10.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c607415139598c9c75a78abe5809a7690f34a171f0c7d676a1392dafefd382e8
MD5 9cc34adc1080d1e9ad6e8490a99e8c81
BLAKE2b-256 1df556c014ba228e4950c20a56089f614e4cd978dd4aaaa6b22793e6a81b0b35

See more details on using hashes here.

Provenance

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