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

@nexeraid/identity-sdk

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nexeraid/identity-sdk

Nexera ID Identity Verification SDK

  • 1.1.19
  • npm
  • Socket score

Version published
Weekly downloads
971
increased by189.85%
Maintainers
1
Weekly downloads
 
Created

NexeraID Identity SDK

  • NexeraID Identity SDK, written in TypeScript.

How to install

$ npm install @nexeraid/identity-sdk

First steps

  • You need to provide NexeraID Team with the Web App domain and a Webhook
  • You need to provide NexeraID with the required rules
  • NexeraID Team will provide to you with an API_KEY and a RULE_ID

How to use

Server app
  /*
   * Get access token
   * This has to be done from secured server, to avoid leaking API_KEY
   */
  const response = await fetch('https://api.nexera.id/kyc/auth/access-token', {
    body: JSON.stringify({ publicAddress }),
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${API_KEY}`
    },
    method: 'POST'
  })
  const { accessToken } = await response.json()

  /*
   * Handle data from webhook
   * At the defined webhook endpoint, each time an user shares data with you, data with format
   * {
   *   address: '0x0000000000000000000000000000000000000000',
   *   data: {
   *     ...
   *   } 
   *  }
   */

  // Assuming you have this data in some variable named input 
  const response = await fetch('https://api.nexera.id/compliance/rules/execute', {
    body: JSON.stringify({
      inputData: input.data,
      address: input.address,
      policyId: `${POLICY_ID}`,
    }),
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${API_KEY}`
    },
    method: 'POST'
  })
  /*
   * Validation result structure could vary according the required rules defined, but it will
   * have the necessary flags that determine whether or not the user meets the requirements. 
   */
  const validationResult = await response.json()
Web app
  // instantiate IdentityClient
  // onSignPersonalData is optional, since can be defined as shown below
  const IDENTITY_CLIENT = new IdentityClient({ onSignPersonalData: async (data: string) => {
    return await signMessageAsync({ message: data });
  }});

  // configure identity flow callbacks

  // mandatory onSignPersonalData callback
  IDENTITY_CLIENT.onSignPersonalData(async (data: string) => {
    // make user sign data with wallet, and return result
    return await signMessageAsync({ message: data })
  })

  // optional onZkCallback (mandatory if zk flow will be used)
  IDENTITY_CLIENT.onZkCallback(async (data) => {
    // make wallet user send transaction, using data from identity app, and returning transaction hash
    const tx = await signer.data.sendTransaction(data);
    return tx.hash;
  });

  // build signing message, needed to safety store identity in user's browser
  const signingMessage = IdentityClient.buildSignatureMessage(address)
  const signature = await signMessageAsync({ message: signingMessage })
  // here you need to get access token from your server, which will call our backend as we explained in the Server app section
  const accessToken = getAccessTokenFromYourServer(address)
  // finally, once accessToken, signingMessage and signature ready, IdentityClient flow can be triggered
  IDENTITY_CLIENT.startVerification({
    accessToken: accessToken,
    signature: signature,
    signingMessage: signingMessage,
  });

  IDENTITY_CLIENT.startManagement({
    accessToken: accessToken,
    signature: signature,
    signingMessage: signingMessage,
  });

Keep Updated

For the latest changes, see the CHANGELOG.

FAQs

Package last updated on 19 Aug 2023

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