SDK for affinity DID solution for React Native

Usage no npm install needed!

<script type="module">
  import affinityprojectWalletReactNativeSdk from 'https://cdn.skypack.dev/@affinityproject/wallet-react-native-sdk';


Affinity SDK for React Native.

React Native SDK extends CORE SDK. Make sure to check the CORE SDK documentation.

How to install:

npm i --save @affinityproject/affinity-react-native-sdk


You may need some polyfills as some of the dependencies assume running in a Node environment.

npm install --save vm-browserify stream-browserify @react-native-community/netinfo \
  react-native-crypto react-native-randombytes react-native-get-random-values \
  amazon-cognito-identity-js assert events

Also need to configure your bundler (webpack, parcel, metro, etc.) with aliases for the modules named ..-browserify in metro.config.js:

module.exports = {
  resolver: {
    resolverMainFields: ['react-native', 'browser', 'module', 'main'],
    extraNodeModules: {
      // Polyfills for node libraries
      mobileRandomBytes: require.resolve('@affinityproject/wallet-react-native-sdk/mobileRandomBytes'),
      crypto: require.resolve('react-native-crypto'),
      stream: require.resolve('stream-browserify'),
      vm: require.resolve('vm-browserify'),

Add the line below to your index.js / App.js

import 'react-native-get-random-values'


Initialize from user access token

Returns SDK instance when user is logged in, and throws COR-9 / UnprocessableEntityError if user is logged out.

import { AffinityWallet } from '@affinityproject/wallet-browser-sdk'

const affinityWallet = await AffinityWallet.init(options)

options - optional, if not defined default settings will be used.

Create encrypted message

const encryptedMessage = await commonNetworkMember.createEncryptedMessage(toDid, object)

toDid - DID, string value of document to be resolved

object - value to be encrypted by public key

Read encrypted message

const message = await commonNetworkMember.readEncryptedMessage(encryptedMessage)

encryptedMessage - message to be decrypted

Put credential to VC vault

await wallet.saveCredentials([signedCredential])

accepts array of credentials to store in the vault.

Pull credential from VC vault

const credentials = await wallet.getCredentials(shareRequestToken)

shareRequestToken - optional parameter (if passed - returns VC, which match the request, if not - then returns all VCs).

Delete credential by ID

await affinityWallet.deleteCredential(credentialId)

For example:

const credentials = await affinityWallet.getCredentials() // get all credentials

const credentialId = ... // select credential which should be deleted, f.e `claimId:12345678`

await affinityWallet.deleteCredential(credentialId)