🚨 Shai-Hulud Strikes Again:834 Packages Compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

@rarimo/rarime-connector

Package Overview
Dependencies
Maintainers
6
Versions
71
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rarimo/rarime-connector

Facilitates interaction between a DApp and RariMe MetaMask snap

Source
npmnpm
Version
3.0.0-rc.1
Version published
Maintainers
6
Created
Source

RariMe Connector

RariMe connector is used to install snap and exposes methods for calling snap on dApps and other applications.

Getting started

Installation

npm install @rarimo/rarime-connector
yarn add @rarimo/rarime-connector

Create a snap connector instance

import { ZkpSnap } from '@rarimo/rarime-connector';

export const zkpSnap = new ZkpSnap();

Establish connection

await zkpSnap.enable();

Check connection status

const isInstalled = await zkpSnap.isInstalled();

Additional helpers

import { isMetamaskInstalled } from '@rarimo/rarime-connector';

const init = async () => {
  const isInstalled = await isMetamaskInstalled();

  if (isInstalled) {
    // ...
  }
};

ZKP quick examples

Establish connection

import { ZkpSnap } from '@rarimo/rarime-connector';

const zkpSnap = new ZkpSnap();

await zkpSnap.enable();

Create/import identity

Create an identity

const { identityIdString, identityIdBigIntString } =
  await zkpSnap.createIdentity();

console.log(identityIdString, identityIdBigIntString);

Or import identity

const { identityIdString, identityIdBigIntString } =
  await zkpSnap.createIdentity({
    privateKeyHex: '0x...',
  });

console.log(identityIdString, identityIdBigIntString);

Show private key in metamask dialog

await zkpSnap.exportIdentity();

Get identity pubKey and it's bigInt representation

const { identityIdString, identityIdBigIntString } =
  await zkpSnap.getIdentity();
console.log(identityIdString, identityIdBigIntString);

Check Verifiable Credentials existence or save new one to the private store

If you want to save Verifiable Credentials to private store, then first things first get your ClaimOffer, for example from issuer api.

claimOffer - is a challenge for generating AuthV2 proof

const claimOffer: SaveCredentialsRequestParams = await api.get(
  `/example/issuer/api/${identityIdString}/[claim-type]`,
);

After that, you can save Verifiable Credential to the private store

const { type, issuer } = await zkpSnap.saveCredentials(claimOffer);

Or if you sure, that you have a saved Verifiable Credential in your private store, you can use query based request to ensure that it exists

const proofRequest: CreateProofRequestParams = {
  circuitId: CircuitId.AtomicQueryMTPV2OnChain,
  accountAddress: 'your_metamask_address' as string,
  issuerDid: '...',

  query: {
    allowedIssuers: ['*'],
    credentialSubject: {
      yourProperty: {
        $eq: 1,
      },
    },
    type: ['VerifiableCredential', 'YourCredentialType'],
  },
};

const { type, issuer } = await zkpSnap.checkCredentialExistence({
  claimOffer,
  proofRequest,
});
console.log(type, issuer);

Remove Verifiable Credentials from the private store

await zkpSnap.removeCredentials({
  ids: ['id1', 'id2'],
});

Get All Verifiable Credentials

const vcs = await zkpSnap.getCredentials();
console.log(vcs);

important!

Note that calling removeCredentials and getCredentials methods in @rarimo/rarime snap are stricted to domain origins whitelist

Check if state contract on Rarimo chain is synced with the lightweight state contract on current connected chain in metamask

const isStateSynced = await zkpSnap.checkStateContractSync();

Find credentials by query, Generate Proof and return proof data within state update details if it necessary

const proofRequest: CreateProofRequestParams = {
  circuitId: CircuitId.AtomicQueryMTPV2OnChain,
  accountAddress: 'your_metamask_address' as string,
  issuerDid: '...',

  query: {
    allowedIssuers: ['*'],
    credentialSubject: {
      yourProperty: {
        $eq: 1,
      },
    },
    type: ['VerifiableCredential', 'YourCredentialType'],
  },
};

const { updateStateDetails, updateStateTx, zkpProof, statesMerkleData } =
  await zkpSnap.createProof(proofRequest);

FAQs

Package last updated on 02 Aug 2024

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