The project's components are organized, conceptually, into 3 layers:
- Controller Bindings: provides APIs for framework users
- Service: handles protocol flows, dispatches to other layers
- Pluggable dependencies: components (DIDs, crypto, etc)
As a user, what do you do:
- Controller Bindings
- initialize the framework (Aries framework object)
- register for events using the Rest API or Native Go API
- handle events
- Pluggable Components
- Create custom plugins for components, inject them into the framework
- Framework: Initializes the framework with user provided or default options.
- Client: Defines DIDComm Protocol APIs for framework consumers.
- Protocol Service: Handles DIDComm Protocol messages including state transitions.
- Message Service: Dynamically handles incoming DIDComm messages by type and purpose.
- Key Management Service: Handles agent key management including creation of keys and signing of messages.
- DID Method: Provides support for DID Methods. Currently, framework supports HTTP and Peer DID Methods.
- Storage: Provides agent data storage options. Currently, LevelDB is supported by default.
- DIDComm Envelope: Supports packing and unpacking of DIDComm message envelopes.
- Verifiable Credential: Defines Verifiable Credentials and Presentations data model.