SD-JWT-VC format based on the core functions
Check the detail description in our github repo.
To install this project, run the following command:
# using npm
npm install @sd-jwt/sd-jwt-vc
# using yarn
yarn add @sd-jwt/sd-jwt-vc
# using pnpm
pnpm install @sd-jwt/sd-jwt-vc
Ensure you have Node.js installed as a prerequisite.
Here's a basic example of how to use this library:
import { DisclosureFrame } from '@sd-jwt/sd-jwt-vc';
// identifier of the issuer
const iss = 'University';
// issuance time
const iat = new Date().getTime() / 1000;
//unique identifier of the schema
const vct = 'University-Degree';
// Issuer defines the claims object with the user's information
const claims = {
firstname: 'John',
lastname: 'Doe',
ssn: '123-45-6789',
id: '1234',
};
// Issuer defines the disclosure frame to specify which claims can be disclosed/undisclosed
const disclosureFrame: DisclosureFrame<typeof claims> = {
_sd: ['firstname', 'lastname', 'ssn'],
};
// Issuer issues a signed JWT credential with the specified claims and disclosure frame
// returns an encoded JWT
const credential = await sdjwt.issue(
{ iss, iat, vct, ...claims },
disclosureFrame,
);
// Holder may validate the credential from the issuer
const valid = await sdjwt.validate(credential);
// Holder defines the presentation frame to specify which claims should be presented
// The list of presented claims must be a subset of the disclosed claims
const presentationFrame = ['firstname', 'ssn'];
// Holder creates a presentation using the issued credential and the presentation frame
// returns an encoded SD JWT.
const presentation = await sdjwt.present(credential, presentationFrame);
// Verifier can verify the presentation using the Issuer's public key
const verified = await sdjwt.verify(presentation);
Check out more details in our documentation or examples
To add revocation capabilities, you can use the @sd-jwt/jwt-status-list
library to create a JWT Status List and include it in the SD-JWT-VC.
- @sd-jwt/core
- @sd-jwt/types
- @sd-jwt/utils
- @sd-jwt/jwt-status-list