Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

jesse-rif-id-daf

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jesse-rif-id-daf

RIF Identity - DAF

  • 0.0.24
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6
increased by100%
Maintainers
1
Weekly downloads
 
Created
Source

logo

rif-id-daf

RIF Identity - DAF

npm

npm i @rsksmart/rif-id-daf

Extensions for uPort DAF agent.

Features

Support for RIF Identity key model

uPort DAF provides an Identity provider module that is responsible for the creation of keys and derivation of the respective identity. Each time an identity is created, a new private key is generated. RIF model proposes to use deterministic derivation for private keys, making all the identities associated with a single mnemonic phrase.

The model uses a wallet account like derivation for identity keys:

  1. Create a mnemonic phrase to derive identities from
  2. Use BIP32 to derive private keys using TBD derivation path

For a better developer experience the extension also provides BIP-44 support. Use mnemonic phrase instead of hex keys.

To use this interface we provide:

  1. New ORM Entity: IdentityMnemonic. Now used to store one single mnemonic.
  2. SeedStore class - interface to store a seed
  3. RIFIdKeyManagementSystem class - wrapper for a daf AbstractKeyManagementSystem - responsible for creating private keys derived from the mnemonic's seed.
  4. RIFIdentityProvider class - Extension for daf IdentityProvider enabling to import a mnemonic

All this modules can be plugged to uPort agent as explained in usage to provide uPort agent of this capabilities.

The identity recovery model is to be defined

Usage

To setup a DAF agent using RIF identity provider implementation:

import { Connection } from 'typeorm'
import { KeyStore, IdentityStore, Agent } from 'daf-core'
import { SecretBox, KeyManagementSystem } from 'daf-libsodium' // change for daf-react-native-libsodioum for React Native support
import { Entities, MnemonicStore, RIFIdKeyManagementSystem, RIFIdentityProvider } from '@rsksamrt/rid-id-daf'

const dbConnection = createConnection({
  type: 'sqlite',
  database: 'rif-identity.sqlite',
  entities: [...Entities, ...DAFEntities],
  logging: false,
  synchronize: true
})

// key store
const secretKey = '0f3c04d7416607ba306997f9fd1920474aff39beb23b847da5c21215076cc9b3' // set your own secret key
const secretBox = new SecretBox(secretKey)
const keyStore = new KeyStore(dbConnection, secretBox)
const mnemonicStore = new MnemonicStore(dbConnection, secretBox)

// key management system
const keyManagementSystem = new KeyManagementSystem(keyStore)
const rifIdKeyManagementSystem = new RIFIdKeyManagementSystem(keyManagementSystem, keyStore, mnemonicStore)

// rif identity provider
const identityStore = new IdentityStore('rsk-testnet-ethr', dbConnection)

const rifIdentityProvider = new RIFIdentityProvider({
    kms: rifIdKeyManagementSystem,
    identityStore,
    network: 'rsk',
    rpcUrl: 'http://localhost:8545'
})

const agent = new Agent({
    dbConnection,
    identityProviders: [rifIdentityProvider],
    didResolver: null
})

const mnemonic = generateMnemonic(12)

await rifIdentityProvider.importMnemonic(mnemonic)

const identity = await agent.identityManager.createIdentity()

Extend

  • Enable multiple mnemonics

Test

From base repo directory run npm test or any of the described test script variants.

References

Keywords

FAQs

Package last updated on 30 Sep 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc