A Scala/ScalaJS library for DID and DIDcomm. The one of the main goals of this library is to make DID Comm v2 type safety and easy to use. Made for developers by developers.
The future version of DID Comm v2.1 is been track&develop in the branch didcomm-v2.1
More documentation:
Following is a partial list of companies and project using DID Comm to craft applications.
Want to see your project here? [Submit a PR]
Action Menu 2.0
- https://didcomm.org/action-menu/2.0BasicMessage 2.0
- https://didcomm.org/basicmessage/2.0DiscoverFeatures 2.0
- https://didcomm.org/discover-features/2.0MediaSharing 1.0
- https://didcomm.org/media-sharing/1.0MediatorCoordination 2.0
- https://didcomm.org/mediator-coordination/2.0MediatorCoordination 3.0
- https://didcomm.org/mediator-coordination/3.0
diff site/content/protocols/mediator-coordination/3.0 site/content/protocols/mediator-coordination/2.0/
diff did/shared/src/main/scala/fmgp/did/comm/protocol/mediatorcoordination3/MediatorCoordination.scala did/shared/src/main/scala/fmgp/did/comm/protocol/mediatorcoordination2/MediatorCoordination.scala
diff did/shared/src/main/scala/fmgp/did/comm/protocol/mediatorcoordination3/Recipient.scala did/shared/src/main/scala/fmgp/did/comm/protocol/mediatorcoordination2/Keylist.scala
OutOfBand 2.0
- https://didcomm.org/out-of-band/2.0Pickup 3.0
- https://didcomm.org/pickup/3.0QuestionAnswer 1.0
- https://didcomm.org/question-answer/1.0Receipts 1.0
- https://didcomm.org/receipts/1.0ReportProblem 2.0
- https://didcomm.org/report-problem/2.0 - See specsRouting 2.0
- https://didcomm.org/routing/2.0
TrustPing 2.0
- https://didcomm.org/trust-ping/2.0/UserProfile 1.0
- https://didcomm.org/user-profile/1.0Data-agreement 1.0
:
data-agreement-context-decorator
- https://didcomm.org/data-agreement-context-decorator/1.0/data-agreement-negotiation
- https://didcomm.org/data-agreement-negotiation/1.0/data-agreement-proofs
- https://didcomm.org/data-agreement-proofs/1.0/data-agreement-termination
- https://didcomm.org/data-agreement-termination/1.0/data-disclosure-agreement
- https://didcomm.org/data-disclosure-agreement/1.0/DidResolver
PreSetValue
PseudoRandom
from_prior
sub
iss
on JWT https://datatracker.ietf.org/doc/html/rfc7519did:peer.3
and did:peer.4
did:key
did:jwk
https://github.com/quartzjer/did-jwkkty
from ECPublicKey
and OKPPublicKey
. Make custom json encoder/decoderIt would help prevent errors by ensuring that only valid DIDs are used, and that the library does not attempt to perform any invalid operations on them. This could help ensure that the library functions correctly and reliably.
It would make the code easier to read and understand, by making it clear what types of values are being used and what operations are being performed on them. This could make it easier for developers to work with the library and understand its functionality. Speeding up the development of applications
It could make the library more efficient, by allowing the compiler to optimize the code for working with DIDs. This could make the library run faster and more efficiently.
It could improve the reliability and correctness of the library, by catching any errors or bugs related to invalid DIDs or invalid operations at compile time. This could save time and effort in the development process and help prevent potential issues in the final library.
I usually say if it compiles it probably also works!
flowchart BT
zhttp --> zio
did --> zio
zio-json --> zio
did --> zio-json
did-resolver-web ----> zhttp:::JVM
subgraph fmgp libraries
did-resolver-peer --> multibase
subgraph platform specific
did-imp
did-imp-hw:::Others -.-> did-imp
did-imp_js:::JS ==>|compiles together| did-imp
did-imp_jvm:::JVM ==>|compiles together| did-imp
end
did-resolver-peer --> did
did-resolver-web --> did
did-comm-protocols --> did
did-framework --> did
did-framework --> did-comm-protocols
did-imp --> did
end
did-example ----> did
did-example --> did-imp
demo --> did-imp
did-imp_jvm:::JVM ----> nimbus-jose-jwt:::JVM --> google-tink:::JVM
did-imp_jvm:::JVM ---> google-tink
did-imp_js ----> jose:::JS
%% subgraph demo/docs
webapp:::JS --> did-framework
demo --> did-framework
demo --> did-resolver-web
demo --> did-resolver-peer
webapp:::JS --> did-imp_js
webapp:::JS --> did-resolver-web
webapp:::JS --> did-resolver-peer
webapp:::JS --> did-example
demo --> did-example
demo -.->|uses\serves| webapp
demo_jvm(demo_jvm\nA server):::JVM ==>|compiles together| demo
did-example --> did-resolver-peer
did-example --> did-resolver-web
%% end
classDef JVM fill:#141,stroke:#444,stroke-width:2px;
classDef JS fill:#05a,stroke:#444,stroke-width:2px;
classDef Others fill:#222,stroke:#444,stroke-width:2px,stroke-dasharray: 5 5;
NOTES:
did-imp-hw
is a idea how to extend for other implementation. Like a hardware/platform specific or with hardware wallet support.did-resolver-web
& did-resolver-peer
are implementations of the respective did methods.