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.0cryptography>= 44.0.0 (optional, forcertisigma.crypto)
License
MIT — Ten Sigma Sagl, Lugano, Switzerland
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
certisigma-1.1.1.tar.gz
(11.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
784d670e24290e4915432113605c76c5bc1b00576b426d8afd3cf1d6149d5919
|
|
| MD5 |
74670558a154e0a1e589706fdcb94c4b
|
|
| BLAKE2b-256 |
3ea7aba3a34cf8ec3fd2a7e2cd705e433c19d495034b326a9ea8f0740b07682e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a94de200d308c10c7a2417dac8e5e62399b4f600c27ee41b3554d9cb36d911de
|
|
| MD5 |
7e6e02e988eedd44753af150d434f9b2
|
|
| BLAKE2b-256 |
6a11de63ceb6b16860151472e8310f178dda1633522f7063be30cb85454aad27
|