Introducing SSI SDK

We are very excited to announce the SSI SDK! This is a monorepo that contains all of Bloom's SSI related libraries. The SSI SDK provides everything you need to integrate Bloom into your system.

Current Libraries

VC

@bloomprotocol/vc is a base library that issues and verifies Verifiable Credentials (VCs) and Verifiable Presentations (VPs) in compliance with the VC Data Model specification. Implementation of the JSON-LD Signatures specification is used to create Linked Data Proofs.

The TypeScript types which are exported from the library are built with json-schema-to-ts, so in addition to receiving static analysis, you can use the verify functions to leverage these schemas at run time.

EcdsaSecp256k1Signature2019 & EcdsaSecp256k1VerificationKey2019

@bloomprotocol/ecdsa-secp256k1-signature-2019 and @bloomprotocol/ecdsa-secp256k1-verification-key-2019 implement the Ecdsa Secp256k1 Signature 2019 specification. These can be used to sign and verify VCs and VPs with the @bloomprotocol/vc library above.

Element DID (Legacy and Non-anchored)

@bloomprotocol/elem-did-legacy-non-anchored is a small library for creating and resolving legacy Element DIDs. Bloom is currently using an older version of the Element spec. We will be updating to the latest version in the future but first, we want to ensure that integrators can handle the DIDs of our users.

You can create an Element DID with key pairs or a mnemonic phrase, or you can simply generate a fresh DID.

WACI Core & WACI jose

@bloomprotocol/waci-core and @bloomprotocol/waci-jose are libraries for the WACI spec, which Bloom has recently donated to DIF. (Look for a blog post about WACI soon!) waci-core  exports TypeScript types and schemas to be used by any other implementation, and waci-jose uses waci-core to sign and verify JWTs with jose. A library that uses jsonwebtokens, in lieu of jose, would also be able to use waci-core.

WACI Kit React

@bloomprocotol/waci-kit-react is the UI part of the WACI flow. Those who have used our old (now deprecated) @bloomprotocol/share-kit-react will find this interface familiar. This library renders either a QR Code or a link, depending on the platform, that starts an interaction with our mobile app.

Get the mobile app here!

Presentation Exchange

@bloomprotocol/presentation-exchange contains TypeScript types and JSON schemas for the different objects in the Presentation Exchange specification. In the future, this library will also contain implementations of the behavior aspects of the spec (e.g. filtering credentials, pulling credentials out of a Presentation Submission, etc.)

Credential Manifest

@bloomprotocol/credential-manifest contains TypeScript types and JSON schemas for the different objects in the frozen working copy of the Credential Manifest specification. Once the Credential Manifest specification is finalized, this library will be updated.

Future Work

EcdsaSecp256k1Signature2020 & EcdsaSecp256k1VerificationKey2020

While the 2019 versions help to ensure that we have better future interoperability, we still must implement the 2020 versions. In the more current version, key pairs are encoded in the "multibase" format rather than in base58. Beyond this, little has changed between the two iterations.

VC Taxonomy

This library will provide TypeScript Types, JSON-LD contexts, and JSON schemas for specific types of VCs, as well as for building on top of VC.

Documentation

We need proper documentation setup. We want to create a Docusaurus package within the SSI SDK repo and host it on GitHub pages. The package will include walkthroughs, examples, and any other resources  that we believe can help integrators. If you have any ideas for how to enhance this documentation package, please share your thoughts here.