@dwn-protocol/id-sdk
Version:
SDK for accessing the features and capabilities
84 lines • 2.99 kB
JavaScript
;
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