Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Reason given by maintainers: Not ready for use

our-identity

Decentralized multi-DID identity management with Ed25519 cryptography for the ourochronos ecosystem.

Overview

our-identity implements a decentralized identity system where each node has its own DID (Decentralized Identifier) backed by an Ed25519 keypair. Multiple DIDs can be grouped into an IdentityCluster to represent a single user across devices or contexts. There is no master key — compromising one node doesn't endanger others. Linking is proven through bilateral signatures (both parties must sign).

Install

pip install our-identity

Requires cryptography>=42.0 for Ed25519 operations.

Usage

from our_identity import DIDManager

mgr = DIDManager()

# Create node identities
laptop, laptop_key = mgr.create_node_did(label="laptop")
phone, phone_key = mgr.create_node_did(label="phone")

# Link them (requires both private keys — bilateral proof)
proof = mgr.link_dids(laptop.did, laptop_key, phone.did, phone_key)

# Verify the link proof offline
assert mgr.verify_link_proof(proof)

# Resolve identity from any member DID
cluster = mgr.resolve_identity(laptop.did)
assert len(cluster.nodes) == 2

# Revoke a compromised node (others unaffected)
mgr.revoke_did(phone.did, reason="key compromised")
cluster = mgr.resolve_identity(laptop.did)
assert len(cluster.nodes) == 1  # laptop still active

Cluster Merging

# Two separate clusters merge automatically when cross-linked
mgr.link_dids(a.did, a_key, b.did, b_key)  # cluster 1
mgr.link_dids(c.did, c_key, d.did, d_key)  # cluster 2
mgr.link_dids(b.did, b_key, c.did, c_key)  # merges into one cluster

Pluggable Storage

# Default: in-memory (for tests)
mgr = DIDManager()

# Custom backend: implement the DIDStore protocol
mgr = DIDManager(store=MyPostgresStore())

API

Class Description
DIDManager High-level service: create, link, revoke, resolve, verify
DIDNode A single node identity with Ed25519 keypair and status
IdentityCluster Group of linked DIDs representing one conceptual identity
LinkProof Bilateral cryptographic proof that two DIDs belong together
DIDStore Protocol for pluggable storage backends
InMemoryDIDStore Default in-memory implementation
DIDStatus Enum: ACTIVE, REVOKED, SUSPENDED

Key Properties

  • DIDs are deterministic: derived from Ed25519 public key fingerprint (did:valence:<fingerprint>)
  • Bilateral linking: both parties must sign to establish a link
  • Revocation isolation: revoking one DID leaves other cluster members unaffected
  • Offline verification: link proofs can be verified without an external authority

Development

# Install with dev dependencies
make dev

# Run linters
make lint

# Run tests
make test

# Run tests with coverage
make test-cov

# Auto-format
make format

State Ownership

Owns DID nodes, identity clusters, and link proofs. Default storage is in-memory; persistent backends store to the injected DIDStore implementation.

Part of Valence

This brick is part of the Valence knowledge substrate. See our-infra for ourochronos conventions.

License

MIT

Metadata

Release files for our-identity 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for our-identity 0.1.0
File Size Uploaded Provenance
our_identity-0.1.0.tar.gz 17.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for our-identity 0.1.0
File Interpreter ABI Platform
our_identity-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 31.5 kB

Release files / our_identity-0.1.0.tar.gz

Download URL our_identity-0.1.0.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
8dc6e2d306622f5946bcdd82bb37ec963d36011e06cf4735c2d82f6e415143c8
BLAKE2b-256 checksum
How to use checksums
f41578c39aec5ac02f11cebeb2501f6bd8f93d45b188d410a118c6048ba7d8d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / our_identity-0.1.0-py3-none-any.whl

Download URL our_identity-0.1.0-py3-none-any.whl
Size 13.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00b940524a397deb3a579dfbe56dcf21ad5a64a63351fcea51c73a8248b45de4
BLAKE2b-256 checksum
How to use checksums
86be235ffb6064350f22fea8939f9813d09f7ed8fc0b37b4e8cc035eca304a6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for our-identity 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page