UNPKG

@dwn-protocol/id-sdk

Version:

SDK for accessing the features and capabilities

84 lines 2.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VcApi = void 0; const index_js_1 = require("./common/index.js"); const index_js_2 = require("./crypto/index.js"); const credential_js_1 = require("./credentials/credential.js"); const presentation_js_1 = require("./credentials/presentation.js"); /** * The VC API is used to issue, present and verify VCs * * @beta */ class VcApi { constructor(options) { this.agent = options.agent; this.connectedDid = options.connectedDid; } async createCredential(issuer, subject, data, type) { const vc = credential_js_1.VerifiableCredential.create({ issuer, subject, data, type, }); return vc; } async signCredential(vc, signOptions) { return await vc.sign(signOptions); } async createJWT(payload, signOptions) { return await (0, credential_js_1.createJwt)(payload, signOptions); } async decodeJWT(jwt) { return (0, credential_js_1.decodeJwt)(jwt); } async parseJWT(jwt) { return await credential_js_1.VerifiableCredential.parseJwt(jwt); } async verifyJWT(jwt) { try { credential_js_1.VerifiableCredential.verify(jwt); return true; } catch (e) { console.log('verifyJWT error', e); return false; } } async createPresentation(vcJwts, presentationDefinition) { return presentation_js_1.PresentationExchange.createPresentationFromCredentials(vcJwts, presentationDefinition); } async satisfiesPresentation(vcJwts, presentationDefinition) { try { presentation_js_1.PresentationExchange.validateDefinition(presentationDefinition); presentation_js_1.PresentationExchange.satisfiesPresentationDefinition(vcJwts, presentationDefinition); return true; } catch (err) { return false; } } async decodePresentation(jwt) { const [encodedHeader, encodedPayload, encodedSignature] = jwt.split('.'); return { header: index_js_1.Convert.base64Url(encodedHeader).toObject(), payload: index_js_1.Convert.base64Url(encodedPayload).toObject(), signature: encodedSignature }; } async evaluatePresentation(presentationDefinition, presentationResult) { return presentation_js_1.PresentationExchange.evaluatePresentation(presentationDefinition, presentationResult.presentation); } async validateSubmission(presentationSubmission) { return presentation_js_1.PresentationExchange.validateSubmission(presentationSubmission); } EdDsaSigner(privateKey) { return async (data) => { const signature = await index_js_2.Ed25519.sign({ data, key: privateKey }); return signature; }; } } exports.VcApi = VcApi; //# sourceMappingURL=vc-api.js.map