Skip to main content

Official Python SDK for the CertiSigma attestation & verification API

Project description

CertiSigma Python SDK

Official Python client for the CertiSigma cryptographic attestation API.

Installation

pip install certisigma

Or from source:

cd sdk/python
pip install -e .

Quick Start

from certisigma import CertiSigmaClient

client = CertiSigmaClient(api_key="cs_live_your_key_here")

# Attest a SHA-256 hash
result = client.attest("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
print(f"Attestation: {result.id} at {result.timestamp}")
print(f"ECDSA signature: {result.signature}")

# Verify
check = client.verify("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
print(f"Exists: {check.exists}, Level: {check.level}")

File Hashing Helper

result = client.attest_file("/path/to/document.pdf")
print(f"Attested: {result.hash_hex}")

Async Support

import asyncio
from certisigma import AsyncCertiSigmaClient

async def main():
    async with AsyncCertiSigmaClient(api_key="cs_live_xxx") as client:
        result = await client.attest("abcdef..." * 4 + "0" * 16)
        print(result.id)

asyncio.run(main())

Batch Operations

# Attest up to 100 hashes in one call
batch = client.batch_attest(
    ["aabb..." * 4, "ccdd..." * 4],
    source="monthly-invoices"
)
print(f"Created: {batch.created}, Existing: {batch.existing}")

# Verify batch
results = client.batch_verify(["aabb..." * 4, "ccdd..." * 4])
print(f"Found: {results.found}/{results.count}")

Metadata Management

# Update claim metadata
result = client.update_metadata("att_1234", source="pipeline-v2", extra_data={"project": "alpha"})

# Soft-delete claim
client.delete_metadata("att_1234")

# Get evidence
evidence = client.get_evidence("att_1234")
print(evidence.level, evidence.t0)

Client-Side Encryption (Zero Knowledge)

Requires: pip install certisigma[crypto]

from certisigma.crypto import generate_key, encrypt_metadata, decrypt_metadata

# Generate a key (store securely — server never sees it)
key = generate_key()

# Encrypt before sending
encrypted = encrypt_metadata({"secret": "classified"}, key)
result = client.attest(hash_hex, extra_data=encrypted, client_encrypted=True)

# Decrypt after retrieving
plaintext = decrypt_metadata(result.extra_data, key)

Error Handling

from certisigma import (
    CertiSigmaError,
    AuthenticationError,
    RateLimitError,
    QuotaExceededError,
)

try:
    client.attest(hash_hex)
except AuthenticationError:
    print("Invalid API key")
except RateLimitError as e:
    print(f"Rate limited, retry after {e.retry_after}s")
except QuotaExceededError:
    print("Monthly quota reached")
except CertiSigmaError as e:
    print(f"API error {e.status_code}: {e}")

Configuration

Parameter Default Description
api_key (required) Bearer token (cs_live_...)
base_url https://api.certisigma.ch API endpoint
timeout 30.0 Request timeout in seconds

Requirements

  • Python 3.10+
  • httpx >= 0.25.0
  • cryptography >= 44.0.0 (optional, for certisigma.crypto)

License

MIT — Ten Sigma Sagl, Lugano, Switzerland

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

certisigma-1.1.1.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

certisigma-1.1.1-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file certisigma-1.1.1.tar.gz.

File metadata

  • Download URL: certisigma-1.1.1.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for certisigma-1.1.1.tar.gz
Algorithm Hash digest
SHA256 784d670e24290e4915432113605c76c5bc1b00576b426d8afd3cf1d6149d5919
MD5 74670558a154e0a1e589706fdcb94c4b
BLAKE2b-256 3ea7aba3a34cf8ec3fd2a7e2cd705e433c19d495034b326a9ea8f0740b07682e

See more details on using hashes here.

File details

Details for the file certisigma-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: certisigma-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for certisigma-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a94de200d308c10c7a2417dac8e5e62399b4f600c27ee41b3554d9cb36d911de
MD5 7e6e02e988eedd44753af150d434f9b2
BLAKE2b-256 6a11de63ceb6b16860151472e8310f178dda1633522f7063be30cb85454aad27

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