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.1.1

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.1.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-1.1.1-py3-none-win_amd64.whl (3.7 MB view details)

Uploaded Python 3Windows x86-64

ciris_verify-1.1.1-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-1.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.1.1-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.1.tar.gz.

File metadata

  • Download URL: ciris_verify-1.1.1.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-1.1.1.tar.gz
Algorithm Hash digest
SHA256 20e503d9a3c3df1cc0f7d0711568741eb82744ecf647bd411419a259849da0c5
MD5 500980d71999ef1755ae7ee381736242
BLAKE2b-256 eaea8027ab10c58f2aeb42e557ff72b2e98bb15b1d4e36167ecf4d7d8f9015d7

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: ciris_verify-1.1.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.7 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.1.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 e5e3f6cebd72e7252b0b6ee287a05afebb6a03f9c7da6a29d736b38c75dae0c7
MD5 cb7558619dc030f5e54a1857a4b3572f
BLAKE2b-256 7f2430a95df8ae04a913358fa4abee3e05332db73eb869cd84df35898292ee0a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c720c32deafaf2e105a7b8b99aa5574e1fea07177efba44980ebccbaa7bebd46
MD5 0fb6dead8edb8c38f78928d33f6765f9
BLAKE2b-256 9bd84a8edf706d427f2df5d569dd9b2c72eb830f63fb8c2ac073e5e62f81c0ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 967084a0a53293e86b848d55e49c379684f459340bf4788a852962ec3ec0a180
MD5 4691aac34346c1c0a9ccce5816c3ea79
BLAKE2b-256 e391911bd29ef2eb18c9b7246a8d2fd9a45c9a3c43d54dd94ee12f81048c12db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b69a2a4a3274847a0b8cbeb16e535cb9de2f7dac4f11ee000158dbdb71357e68
MD5 cfefeb57409d95c273d55f9aff7766ce
BLAKE2b-256 7a04c8ba3e68de748760ea144956b4e633f4c89f62f485ab30a4f27c10793063

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.1.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c4af93213d468276634b18f2996f48568728ec149f808be1a1cc230a2856ffbd
MD5 9eb6bc116dd746a10d81ed31908023e5
BLAKE2b-256 80391204c2bbbd5ba79eca08ea4245949e5e1700269e2f3be5801c05b5eb960b

See more details on using hashes here.

Provenance

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