Supported SDKs
| SDK | Runtime | Package/Module | Status |
|---|---|---|---|
| TypeScript | Node.js >= 20 | @sigilum/sdk | Supported |
| Python | Python >= 3.11 | sigilum | Supported |
| Go | Go 1.23 | sigilum.local/sdk-go | Supported |
| Java | JDK 21 | id.sigilum:sdk-java | Not yet supported |
Common Contract
All supported SDKs implement the same RFC 9421-style signing profile:Signing Algorithm
- Algorithm: Ed25519 signatures
- Headers: RFC 9421-style
Signature-InputandSignature - Components: Signs method, URI, and custom Sigilum headers
Required Sigilum Headers
Every signed request includes these headers:sigilum-namespace- The namespace that owns the agent identitysigilum-subject- The principal who triggered this action (user/system ID)sigilum-agent-key- The agent’s Ed25519 public key (ed25519:...)sigilum-agent-cert- Base64url-encoded agent certificate (version, namespace, DID, keyId, proof)
Body Integrity
Requests with a body include:content-digest- SHA-256 digest in RFC 9421 format:sha-256=:base64digest:- The
content-digestheader is included in signed components for tamper detection
Subject Semantics
sigilum-subject is not decorative—it identifies who triggered this action:
- Use a stable principal ID (for example:
customer-12345,system-scheduler) - Gateway policy can apply subject-level controls using this value
- If omitted, SDKs default to the signer’s namespace for backward compatibility
- Platforms/integrations are responsible for setting this value accurately
Identity Hierarchy
Sigilum uses a DID-based identity model:did:sigilum:{namespace}:{service}#{agent}#{subject}
Example: did:sigilum:mfs:narmi#davis-agent#customer-12345
This hierarchy enables:
- Fine-grained audit trails
- Subject-level policy enforcement
- Service isolation within namespaces
- Agent-specific access controls
Signature Verification
All SDKs provide server-side verification with deterministic failure metadata:Error Codes
Verification failures return machine-readable codes:| Code | Meaning |
|---|---|
SIG_CONTENT_DIGEST_MISMATCH | Request body was tampered with |
SIG_VERIFICATION_FAILED | Signature cryptographically invalid |
SIG_CERT_INVALID | Agent certificate proof failed |
SIG_TIMESTAMP_OUT_OF_RANGE | Signature expired or not yet valid |
SIG_REPLAY_DETECTED | Nonce already seen (replay attack) |
SIG_NAMESPACE_MISMATCH | Namespace header doesn’t match cert |
SIG_SUBJECT_MISSING | Required subject header missing |
Replay Protection
SDKs support nonce-based replay detection:Retry Helpers
All SDKs provide portable retry helpers for idempotent operations:- Function:
retryWithBackoff/retry_with_backoff/RetryWithBackoff - Status codes: Retries 429, 502, 503, 504 by default
- Backoff: Exponential with jitter
- Safety: Requires
idempotent: truewhenattempts > 1
CLI Tools
Supported SDKs ship with CLI tools for identity management:Initialize Identity
List Identities
Authentication Model
Signed headers prove agent identity and authenticity. Some endpoints require additional auth:- Signed headers: Required on all protected endpoints (
/v1/*,/.well-known/*) - Bearer tokens: Some endpoints also require
Authorization: Bearer <service_api_key> - Example:
POST /v1/claimsrequires both signed headers AND service API key
Test Vectors
Shared conformance test vectors ensure cross-SDK compatibility:sdks/test-vectors/http-signatures-rfc9421.json- RFC 9421 signing conformancesdks/test-vectors/identity-record-v1.json- Identity record compatibility
- Fragment stripping from URLs
- Method/body component profile checks
- Replay/timestamp strictness
- Tamper detection (method/header/body)
- Forward-compatible identity record loading
Next Steps
TypeScript SDK
Install and use the TypeScript/Node.js SDK
Python SDK
Install and use the Python SDK
Go SDK
Install and use the Go SDK