Affinidi SDKs and Developer toolkit — Open Source Announcement

Affinidi Pte. Ltd.
4 min readOct 12, 2020

--

We are excited to announce the first open source launch of Affinidi. Affinidi is a decentralized identity ecosystem that currently powers multiple startups & enterprise pilots around the world. This week, we open sourced our core stack, which we have built in collaboration with the SSI community. Visit our Github & documentation portal to learn more!

What are we open sourcing?

Credential Types & Utilities

The vc-common package implements VC and VP types and utility functions that help with type-safe credential issuance and verification. It is an un-opinionated library because it supports a wider variety of DIDs and VCs as long as they conform to the core data model.

Documentation: https://docs.affinidi.com/common/getting-started

Github:https://github.com/affinityproject/affinidi-core-sdk/tree/master/common-libs/vc-common — Connect to preview

NPM: https://www.npmjs.com/package/@affinidi/vc-common

Credential Schemas

The vc-data package contains schema helpers and building blocks to issue JSON-LD credentials. The vc-data utilities also specify a process through which developers can propose additions or request assistance in schema development. This package currently supports a wide variety of common VC types, in addition to FHIR compliant medical data schemas.

Documentation: https://docs.affinidi.com/schemas/schema-governance

Github:https://github.com/affinityproject/affinidi-core-sdk/tree/master/sdk/vc-data — Connect to preview

NPM: https://www.npmjs.com/package/@affinidi/vc-data

Client SDKs

The client sdk packages implement the common logic for account registration & management, credential issuance & verification and more.

The main entry point is a class called CommonNetworkMember. This class can be initialized with specific service endpoints, or if left to its defaults will use Affinidi’s staging environment.

Browser, Expo, and React-Native packages extend the wallet-core-sdk logic with client specific implementations for crypto operations. As a result of crypto operations being platform specific, this package implements the logic to communicate with the encrypted data vault for VC storage.

The main entry point is a class called AffinidiWallet. Similar to CommonNetworkMember, the class can be initialized with specific service endpoints, or can be left to use Affinidi’s staging environment by default.

Documentation: https://docs.affinidi.com/common/getting-started

Github: Core, Browser, Expo, React-Native

NPM: Core, Browser, Expo, React-Native

API gateways are coming soon to get you up and running even quicker!

Common Affinidi Utilities

The common package implements DID, VC, and VP utilities that are used throughout Affinidi libraries and services. This package is considered more opinionated because it supports DID methods and VC proofs that Affinidi actively supports.

The main entry point to this package is a class called Affinidi. In this class you will find utilities for handling JSON-LD, DIDs, VCs, VPs, JWTs, and legacy credential types from early MVPs.

Github:https://github.com/affinityproject/affinidi-core-sdk/tree/master/common-libs/common — Connect to preview

NPM: https://www.npmjs.com/package/@affinidi/common

Encrypted Data Vault

Affinidi’s custodial wallet uses the Bloom implementation of Encrypted Data Vaults to store encrypted user credentials.

Github:https://github.com/hellobloom/bloom-vault — Connect to preview

Affinidi’s Service Structure

How to get started

Check out these workshops & tutorials to start building using Affinidi’s stack.

Credential Schema & Issuance Workshop — https://docs.affinidi.com/issuance/issuance-workshop

Building a React browser app — https://docs.affinidi.com/client-sdks/integrating-with-react-web

Affinidi is ready for collaboration

Over the last year, Affinidi has been working with Bloom to develop common SSI utilities and schemas. As the first external partner, Bloom has been helping Affinidi achieve interoperability & standards compliance. Potential collaborators are welcome to test their capability to interoperate with Affinidi SDKs at the interoperability testing site.

Site Link: https://api.affinidi.com/interop

Swagger: https://api.staging.affinity-project.org/interop/v1/api-docs/

Documentation: https://docs.affinidi.com/interop/

This is only the beginning! We intend to open source the interoperability test harness soon, and solicit community support to extend the DIDs, VCs, VPs, and credential handling to work with any implementation.

Thank you to the community

Affinidi does not intend to build an entire SSI stack on our own. Over the last year we have pieced together a minimum viable SSI stack from open source contributors throughout the ecosystem, contributing where we needed to fill in the gaps. We would like to take this launch announcement as an opportunity to thank the following contributors on our first release of the Affinidi ecosystem.

Jolocom — DID Method & credential exchange protocol

Element — A Sidetree implementation on Ethereum, started by Transmute

BloomEncrypted data vault, credential schemas

W3C CCG & VC-WG — VC data model

Digital BazaarRevocationList2020 and much more

and everyone at the Decentralized Identity Foundation

Call for collaboration, partners & feedback

In our first phase of Affinidi’s public launch, we are joining existing working groups, and intend to start new ones to foster community support for our open source libraries. Affinidi has already started to be involved with the following groups.

W3C CCG

DIF — Claim & Credentials

DIF — Interop

DIF — Secure Data Store

Join our community slack here

To get involved with Affinidi, reach out to us via email: bizdev@affinidi.com or twitter: @affinidi

--

--

Affinidi Pte. Ltd.

Reclaim your data, Reclaim your Identity, Reclaim Yourself