Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@trustalliance/vc

TrustAllianceNZ9GPL-3.0-or-later0.0.1-alpha.31TypeScript support: included

Verifiable Credentials js sdk

DID, DID document, Verifiable Credential, Verifiable Presentation, W3C, Substrate, Polkadot, Web3, TrustAlliance, Blockchain, Cryptography, Self Sovereign Identity

readme

ExpTrustAlliance Logo

TrustAlliance VC SDK TrustAlliance VC SDK Build Node Version Lerna

TrustAlliance SDK for Verifiable Credentials & Presentations

This sdk handles for issuing and verifying verifying Credentials and Presentations that adhere to W3C standards.

IMPORTANT!

  • This is a minimum viable product suite with limited functionality.
  • Please do not use this for production
  • This is a part of SDKs for Verifiable Credentials, Verifiable Credential Presentations, DID Keys, Self Sovereign Identity and Decentralised Identifiers

Installation

yarn install

TrustAlliance Verifiabe Credentials

Architecture

Usage

Importing Verifiable Credentials

ES Modules import


import { VC } from '@trustalliance/vc'

CommonJS import


const { VC } = require('@trustalliance/vc');

Validate Verifiable Credentials


const vc = new VC();

const result = vc.validate({
                '@context': ['https://www.w3.org/2018/credentials/v1'],
                "type": ["VerifiableCredential"],
                "credentialSubject": {},
                "issuer": "did:trustalliance:issuer/1234"
            });

// true

Verifiable Credentials create JWT

import { JsonWebKey2020 } from '@trustalliance/key';
import { VC } from '@trustalliance/vc'


const vc = new VC();
const keyPair = await JsonWebKey2020.generate();

const credential = {
    '@context': ['https://www.w3.org/2018/credentials/v1'],
    "type": ["VerifiableCredential"],
    "issuanceDate": "2010-01-01T19:23:24Z",
    "credentialSubject": {},
    "issuer": "did:trustalliance:issuer/1234"
}
const jwt = await vc.issueJWT({ keyPair, credential })

Verifiable Credentials validate JWT

import { JsonWebKey2020 } from '@trustalliance/key';
import { VC } from '@trustalliance/vc'


const vc = new VC();
const keyPair = await JsonWebKey2020.generate();

const credential = {
    '@context': ['https://www.w3.org/2018/credentials/v1'],
    "type": ["VerifiableCredential"],
    "issuanceDate": "2010-01-01T19:23:24Z",
    "credentialSubject": {},
    "issuer": "did:trustalliance:issuer/1234"
}
const jwt = await vc.issueJWT({ keyPair, credential })

const result = await vc.verifyJWT(jwt, { keyPair, credential })

// true

Presentation

importing Verifiable Presentation


import { VP } from '@trustalliance/vc'

Verifiable Presentation create jwt

import { JsonWebKey2020 } from '@trustalliance/key';
import { VP } from '@trustalliance/vc'

const vp = new VP();

const keyPair = await JsonWebKey2020.generate();

const presentation = {
    '@context': ['https://www.w3.org/2018/credentials/v1'],
    "type": ["VerifiablePresentation"],
    verifiableCredential: [{
        '@context': ['https://www.w3.org/2018/credentials/v1'],
        "type": ["VerifiableCredential"],
        "credentialSubject": {},
        "issuer": "did:trustalliance:issuer/1234"


    }]
}

const jwt = await vp.issueJWT({ keyPair, presentation })


// jwt

Verifiable Presentation validate jwt

import { JsonWebKey2020 } from '@trustalliance/key';
import { VP } from '@trustalliance/vc'

const vp = new VP();

// example json web key
const key = {
    id: 'did:trustalliance:key:SBQyXxAUa41yrBP9YJ-mPsCtESFjmzbOIUrzGI3-oWs#SBQyXxAUa41yrBP9YJ-mPsCtESFjmzbOIUrzGI3-oWs',
    type: 'JsonWebKey2020',
    controller: 'did:trustalliance:key:SBQyXxAUa41yrBP9YJ-mPsCtESFjmzbOIUrzGI3-oWs',
    publicKeyJwk: {
        crv: 'Ed25519',
        x: 'VBB9DDDSl3IMPNGlx5f4h-NY2AVKpOMauKqVSm3LYcU',
        kty: 'OKP',
        alg: 'EdDSA'
    },
    privateKeyJwk: {
        crv: 'Ed25519',
        d: 'nVlVbr0cfTf0KxIfha2LsOt3x4G7rJ2mRc_TbYXsscY',
        x: 'VBB9DDDSl3IMPNGlx5f4h-NY2AVKpOMauKqVSm3LYcU',
        kty: 'OKP',
        alg: 'EdDSA'
    }
}

// import key
const keyPair = JsonWebKey2020.from(key);

const JWT = `eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCIsImtpZCI6ImRpZDp0cmFja2JhY2s6a2V5OlNCUXlYeEFVYTQxeXJCUDlZSi1tUHNDdEVTRmptemJPSVVyekdJMy1vV3MjU0JReVh4QVVhNDF5ckJQOVlKLW1Qc0N0RVNGam16Yk9JVXJ6R0kzLW9XcyJ9.eyJuYmYiOjE2MzQ2ODA2MDksInZwIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZVByZXNlbnRhdGlvbiJdLCJ2ZXJpZmlhYmxlQ3JlZGVudGlhbCI6W3siQGNvbnRleHQiOlsiaHR0cHM6Ly93d3cudzMub3JnLzIwMTgvY3JlZGVudGlhbHMvdjEiXSwidHlwZSI6WyJWZXJpZmlhYmxlQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6e30sImlzc3VlciI6ImRpZDp0cmFja2JhY2s6aXNzdWVyLzEyMzQifV19fQ.mZLZIH-BOd3r72ryGEkfs7UBfIQ5_fSRchUo9h7DgIwd9L2BE3fhIviJW2X9YMIyEVeAi8C2Yz1m8ETT9pmHBw`

const presentation = {
    '@context': ['https://www.w3.org/2018/credentials/v1'],
    "type": ["VerifiablePresentation"],
    verifiableCredential: [{
        '@context': ['https://www.w3.org/2018/credentials/v1'],
        "type": ["VerifiableCredential"],
        "credentialSubject": {},
        "issuer": "did:trustalliance:issuer/1234"
    }]
}

const result = await vp.verifyJWT(JWT, { keyPair, presentation })

// true

changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

0.0.1-alpha.31 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.30 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.29 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.28 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.27 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.26 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.25 (2022-01-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.24 (2021-11-25)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.23 (2021-11-25)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.22 (2021-11-25)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.21 (2021-11-25)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.20 (2021-11-25)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.19 (2021-11-25)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.18 (2021-11-24)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.17 (2021-11-24)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.16 (2021-11-24)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.15 (2021-11-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.14 (2021-11-23)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.13 (2021-11-18)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.12 (2021-11-18)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.11 (2021-11-18)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.10 (2021-11-18)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.9 (2021-11-17)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.8 (2021-11-16)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.7 (2021-11-15)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.6 (2021-10-28)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.5 (2021-10-28)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.4 (2021-10-28)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.3 (2021-10-28)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.2 (2021-10-26)

Note: Version bump only for package @trustalliance/vc

0.0.1-alpha.1 (2021-10-26)

Note: Version bump only for package @trustalliance/vc