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

Uploaded Python 3Windows x86-64

ciris_verify-1.12.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

ciris_verify-1.12.1-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.12.1.tar.gz.

File metadata

  • Download URL: ciris_verify-1.12.1.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.12.1.tar.gz
Algorithm Hash digest
SHA256 91d7a2d6b67ac919bf172080e14fa52e132647a614fa416369142eb58b308288
MD5 e3c5295c9d09868ee3c7737608f8c901
BLAKE2b-256 c054b868e224f167fa7c233961cf5814dcf5ef16dd81ee5eb1364e714be6f448

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1c1c7bd1dd485063630b558c50f815a95250ab512a0957d1766a49021ebf1285
MD5 b0c98de48add50858b504c7a3eb40d94
BLAKE2b-256 fcdbb5c80e41c6bda93073a0cbe236b338491d5d0dcc63493087e188c603bb9e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce6f4112e3643a3c9efe44a6523ef7c2e0edd29d9d5bf718dc45da9b37c061bd
MD5 fbd65b73c5e61be3ef683ea87d2bd7b0
BLAKE2b-256 4c57633c28bce4513f2ffaf457332f98436b34160742af6e10aec43dce38da42

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d15156d27c4edbd78005b13ff9367c1f4e985701a00b026e54c67b3dcd6b5a68
MD5 c269e51ec1686bdaa9188dc1cdb22cde
BLAKE2b-256 7171cc3f10bb1305914d58a6991cd0deb90bab25e9ccb23c3045cf90f0b042fc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 558dce9532fc76426d96c120268be811acb67d0c380c9e9f85a98041ea774668
MD5 1fbbb3230cc070d74459234b8000b087
BLAKE2b-256 bbde059021faa8a8b140d205e05d40a7a6c5449787f2c6caceb2b64029f21b3c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for ciris_verify-1.12.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d1b5e46f10c461f402dd7f6013b67b46d977da8635aa2e0d41c1fc90cf1ba580
MD5 14fbdc9ed0fc28f1552da95590829cac
BLAKE2b-256 7b97f4ff4f3acf6211c83e5a288b29c03559b9ef29c45517d57baed50a453e9d

See more details on using hashes here.

Provenance

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