Skip to main content

DIDComm Messaging implemented with swappable backends.

Project description

didcomm-messaging-python

This is a minimal but flexible implementation of DIDComm Messaging. To learn more about DIDComm Messaging, check out the spec or visit didcomm.org to learn about DIDComm Messaging protocols defined by the community.

Usage

https://github.com/Indicio-tech/didcomm-messaging-python/blob/53a9a33e9bc503f13020dd9744d0a2763955af12/example.py#L1-L51

Overview

didcomm-messaging-python layer cake

This library has the following core components (as outlined in the layer cake architecture diagram above):

CryptoService

The CryptoService provides the core cryptographic capabilities needed to encrypt and decrypt DIDComm Messages. This service is designed to be implemented by users of this library; however, an implementation using Aries Askar is available as an extra (install the askar extra to use it). Additional implementations may be added as extras in the future (i.e. an implementation using Authlib's JWE implementation or perhaps an implementation backed by an HSM). The service is seprate from but closely coupled with the SecretsManager. Both must use the same public and private key representations.

[!WARNING] TODO:

  • More details on implementing your own CryptoService
  • More details on using the included Askar CryptoService

SecretsManager

The SecretsManager is responsible for retrieving secrets for use by the CryptoService. It is notable that the secret value need not literally contain the value of a private key. For example, in the included Askar implementation, an Askar Key value is retrieved. This object in python does permit you to retrieve the bytes of the secret key from Askar if you choose; however, this is not necessary for the operation of the library. This enables Askar to keep the private key value down in the Rust layer where it can better ensure security of the key (zeroizing memory, etc.). This is not so distant from interacting with an HSM; as long as the SecretKey value retrieved by the SecretsManager can be used by the CryptoService to perform the required cryptographic operations, exactly what is stored inside of the SecretKey object is irrelevant.

[!WARNING] TODO:

  • More details on implementing your own SecretsManager
  • More details on the included AskarSecretsManager

DIDResolver

This component provides a fairly generic DID Resolution interface. Users of this library will provide a resolver implementation for the DID Methods they care about. Implementations of did:peer:2 and did:peer:4 are included as part of the did_peer extra.

[!WARNING] TODO:

  • More details on PrefixResolver
  • More details on implementing your own DIDResolver

PackagingService

The PackagingService is responsible for the core functions of packing and unpacking messages. It depends on the CryptoService, the SecretsManager, and the DIDResolver to accomplish this.

[!WARNING] TODO:

  • More details on PackagingService

RoutingService

The RoutingService is responsible for preparing messages for forwarding to a mediator. It depends on the PackagingService and the DIDResolver to accomplish this.

[!WARNING] TODO:

  • More details on RoutingService

DIDCommMessaging

The DIDCommMessaging interface is the main entrypoint for interacting with this library. It utilizes all the layers below to prepare messages for other parties.

[!WARNING] TODO:

  • More details on DIDCommMessaging

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

didcomm_messaging-0.1.1a0.tar.gz (31.4 kB view details)

Uploaded Source

Built Distribution

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

didcomm_messaging-0.1.1a0-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file didcomm_messaging-0.1.1a0.tar.gz.

File metadata

  • Download URL: didcomm_messaging-0.1.1a0.tar.gz
  • Upload date:
  • Size: 31.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.15.0 CPython/3.10.12 Linux/6.5.0-1018-azure

File hashes

Hashes for didcomm_messaging-0.1.1a0.tar.gz
Algorithm Hash digest
SHA256 79e4fcbe3d96ad3c8e052bfef2fc2953d01e72ff88824ec7e7f104993c13d812
MD5 6b035eab11f906ff8976a2d448a28c6c
BLAKE2b-256 46903e12fbe547620e6981c85024437cb4ec95d6f687db547c345de0c9ed6efc

See more details on using hashes here.

File details

Details for the file didcomm_messaging-0.1.1a0-py3-none-any.whl.

File metadata

  • Download URL: didcomm_messaging-0.1.1a0-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: pdm/2.15.0 CPython/3.10.12 Linux/6.5.0-1018-azure

File hashes

Hashes for didcomm_messaging-0.1.1a0-py3-none-any.whl
Algorithm Hash digest
SHA256 ea254b5540ae34c046eec5f030dec8fff153ea94c4f5eade7bfe08325f9734b9
MD5 3372f965c3baea1f250b8b4c7fc9dbbc
BLAKE2b-256 93c320bb6e33ee828bbc0788c6def4f1ad0e56ea2547b0c35807ac116e39c3a6

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