This SDK enables the management of Decentralized Identifiers (DIDs) and Verifiable Credentials (VCs). It supports creating, verifying, and revoking credentials.
Supported signatures:
- ECDSA
- BBS+
To install the SDK, use yarn:
yarn install
Below is an example on how to issue, verify, and optionally revoke a verifiable credential using the BBS+ signature scheme.
import { BbsDID, createBbsCredential, verifyVC, revokeVC } from "path_to_sdk";
// Issuer's private key and setup
const issuerPrivateKey = "private_key_here";
const issuer = new BbsDID(privateKey);
// Holder's DID
const holderDid = "did:example:b34ca6cd37bbf23";
// Creating a credential with BBS+ signature
const claims = { kyc: "passed" };
const revocationRegistryAddress = "0x77Fb69B24e4C659CE03fB129c19Ad591374C349e";
const didRegistryAddress = "0x312C15922c22B60f5557bAa1A85F2CdA4891C39a";
const provider = new ethers.JsonRpcProvider(process.env.TEST_BLOCKCHAIN_URL);
const options = {
revocationRegistryAddress,
provider,
didRegistryAddress,
} as VerificationOptions;
const credential = await createBbsCredential(issuer, holderDid, claims, ["KYCCredential"], unknown, options );
console.log("Credential Issued:", credential);
// Verifying the credential
const verificationResult = await verifyVC(credential);
console.log("Verification Result:", verificationResult);
// Optionally revoke the credential
await revokeVC(credential.id, issuer.did, issuerPrivateKey);
// wait for 10 seconds for the transaction to be mined onchain
await new Promise((r) => setTimeout(r, 10000));
// And check again: expected failure as credential has been revoked
const verificationResult = await verifyVC(credential);
console.log("Verification Result:", verificationResult);
For local testing, ensure you have Foundry installed and running. This will simulate Ethereum blockchain interactions required for some SDK functions.