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

Uploaded Python 3Windows x86-64

ciris_verify-0.7.5-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.5-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.5-py3-none-manylinux_2_17_aarch64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.7.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

ciris_verify-0.7.5-py3-none-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-0.7.5-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.5.tar.gz.

File metadata

  • Download URL: ciris_verify-0.7.5.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.5.tar.gz
Algorithm Hash digest
SHA256 2032f0d4655c8eb5ed816a1ee00e8cf0b9117dedc1f4d074ced4bdc05fe72f28
MD5 48e16783a5801fafa201a4416cb50131
BLAKE2b-256 037a54ac081aac90ffe4cdd5d0f5242858de5416c86ef2a6ccf0a01f3dcd5dd8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ciris_verify-0.7.5-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for ciris_verify-0.7.5-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 220676f074c54c2529a30131578855f53a2f72b102f1de2b0944271ffa13e66d
MD5 1f2ecf420db697a8664cef2a948d7271
BLAKE2b-256 eb92a75af8554d2aa83853000f39b1b159f002603adabbb6e8d81329b7a6675b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.5-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7a5b004eb1dfc6e9525ac41bee0e849405be1f1180b05103cd9759352c13dd5f
MD5 464593be13ff9170a20674bd44052a88
BLAKE2b-256 d7086114dfb962fc2ef6709ef192ae504dc51f78417da997d9cd6ded4454ac19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9b07bafd1ea39dcf2cfb0d32144a1b1481fff1dcd0a5f45e18d42ad4e750f047
MD5 e870bfa18920267936bbe78b6973b0dd
BLAKE2b-256 7fe2fc9d18cb93997ac5d68b3736208deb0e31d182dc1dd95db90f949ce9bd29

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.7.5-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 453e887d5b03d2c9d62a547240c50c1e9e64155627865ad41e72de83235b06cf
MD5 a4e13375849088880fd5ed9346dc1ea1
BLAKE2b-256 1e78c45dd940ba3da8809ea457348853ff10cc5a5d233456a09a2c31c2dc3949

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7b73b4b23249d8cf9266345722ae4ff9ffb3b1e25bb4e3c7743f42bb24d3bd10
MD5 efdfbcbafd0b66f973b3ea97f70d3592
BLAKE2b-256 72dfa07f9135bd55ba091c4beb4ba9d068fee28b38bd79b3e7486ddf512e5ccd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-0.7.5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 26b94ddbd9cf4d06be7b35fa323750095d78f419eb8e86eadbf408b26d0a3e41
MD5 5c5b5a07f97b1651357c25178e8aaf33
BLAKE2b-256 7c151928382054c113c9889fe6c4667cfa4d6ace391f2962eb40e812f720389e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ciris_verify-0.7.5-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e14ca62bf22c8d954138e63aa70382c53194102d5e312cbd4d64592128998e59
MD5 19471a23f347eaee42fc3dc451dc1a52
BLAKE2b-256 c9731fe6147c7182de7e78322c1f7cc088dade9a897dc2880174655d2d5cf179

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