@dwn-protocol/id-sdk
Version:
SDK for accessing the features and capabilities
111 lines (110 loc) • 4.26 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { Convert } from './common/index.js';
import { Ed25519 } from './crypto/index.js';
import { createJwt, decodeJwt, VerifiableCredential } from './credentials/credential.js';
import { PresentationExchange } from './credentials/presentation.js';
/**
* The VC API is used to issue, present and verify VCs
*
* @beta
*/
export class VcApi {
constructor(options) {
this.agent = options.agent;
this.connectedDid = options.connectedDid;
}
createCredential(issuer, subject, data, type) {
return __awaiter(this, void 0, void 0, function* () {
const vc = VerifiableCredential.create({
issuer,
subject,
data,
type,
});
return vc;
});
}
signCredential(vc, signOptions) {
return __awaiter(this, void 0, void 0, function* () {
return yield vc.sign(signOptions);
});
}
createJWT(payload, signOptions) {
return __awaiter(this, void 0, void 0, function* () {
return yield createJwt(payload, signOptions);
});
}
decodeJWT(jwt) {
return __awaiter(this, void 0, void 0, function* () {
return decodeJwt(jwt);
});
}
parseJWT(jwt) {
return __awaiter(this, void 0, void 0, function* () {
return yield VerifiableCredential.parseJwt(jwt);
});
}
verifyJWT(jwt) {
return __awaiter(this, void 0, void 0, function* () {
try {
VerifiableCredential.verify(jwt);
return true;
}
catch (e) {
console.log('verifyJWT error', e);
return false;
}
});
}
createPresentation(vcJwts, presentationDefinition) {
return __awaiter(this, void 0, void 0, function* () {
return PresentationExchange.createPresentationFromCredentials(vcJwts, presentationDefinition);
});
}
satisfiesPresentation(vcJwts, presentationDefinition) {
return __awaiter(this, void 0, void 0, function* () {
try {
PresentationExchange.validateDefinition(presentationDefinition);
PresentationExchange.satisfiesPresentationDefinition(vcJwts, presentationDefinition);
return true;
}
catch (err) {
return false;
}
});
}
decodePresentation(jwt) {
return __awaiter(this, void 0, void 0, function* () {
const [encodedHeader, encodedPayload, encodedSignature] = jwt.split('.');
return {
header: Convert.base64Url(encodedHeader).toObject(),
payload: Convert.base64Url(encodedPayload).toObject(),
signature: encodedSignature
};
});
}
evaluatePresentation(presentationDefinition, presentationResult) {
return __awaiter(this, void 0, void 0, function* () {
return PresentationExchange.evaluatePresentation(presentationDefinition, presentationResult.presentation);
});
}
validateSubmission(presentationSubmission) {
return __awaiter(this, void 0, void 0, function* () {
return PresentationExchange.validateSubmission(presentationSubmission);
});
}
EdDsaSigner(privateKey) {
return (data) => __awaiter(this, void 0, void 0, function* () {
const signature = yield Ed25519.sign({ data, key: privateKey });
return signature;
});
}
}