UNPKG

@sphereon/wellknown-dids-client

Version:

Well-known DID client allows to create and verify DID Domain configuration resources

109 lines 9.8 kB
"use strict"; 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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WellKnownDidIssuer = void 0; const ssi_types_1 = require("@sphereon/ssi-types"); const constants_1 = require("../constants"); const utils_1 = require("../utils"); class WellKnownDidIssuer { /** Issuer constructor */ constructor(config) { this.config = config; } /** * Issue a DID configuration resource. * * @param args The arguments for issuance. * @return {IDidConfigurationResource}, issuance result. */ issueDidConfigurationResource(args) { var _a; return __awaiter(this, void 0, void 0, function* () { if (args.configuration && args.origin) { return Promise.reject(Error(constants_1.WDCErrors.CANT_SUPPLY_BOTH_CONFIGURATION_AND_ORIGIN)); } if (!args.issueCallback && (!this.config || !((_a = this.config) === null || _a === void 0 ? void 0 : _a.issueCallback)) && args.issuances.some(issuance => !issuance.issueCallback)) { return Promise.reject(Error(constants_1.WDCErrors.MUST_SUPPLY_ISSUE_CALLBACK)); } if (args.origin && args.issuances.filter(issuance => issuance.origin !== args.origin).length > 0) { return Promise.reject(Error(constants_1.WDCErrors.ISSUANCE_ORIGIN_DOES_NOT_MATCH_PROVIDED_ORIGIN)); } let didConfigurationResource; if (args.configuration) { didConfigurationResource = args.configuration; } else if (args.origin) { didConfigurationResource = yield (0, utils_1.fetchWellKnownDidConfiguration)(args.origin); } else { didConfigurationResource = { '@context': constants_1.CONTEXT_URLS.IDENTITY_FOUNDATION_WELL_KNOWN_DID, 'linked_dids': new Array() }; } const credentials = yield Promise.all(args.issuances.map((item) => { const issuance = (!item.issueCallback ? Object.assign(Object.assign({}, item), { issueCallback: args.issueCallback }) : item); return this.issueDomainLinkageCredential(issuance); })); didConfigurationResource.linked_dids = didConfigurationResource.linked_dids.concat(credentials); return didConfigurationResource; }); } /** * Issue a domain linkage credential. * Return types can be of Linked Data Proof Format or JSON Web Token Proof Format. * * @param args The arguments for issuance. * @return {DomainLinkageCredential}, issuance result. */ issueDomainLinkageCredential(args) { var _a; return __awaiter(this, void 0, void 0, function* () { if (!args.issueCallback && (!this.config || !((_a = this.config) === null || _a === void 0 ? void 0 : _a.issueCallback))) { return Promise.reject(Error(constants_1.WDCErrors.MUST_SUPPLY_ISSUE_CALLBACK)); } const did = (0, ssi_types_1.parseDid)(args.did).did; if (new URL(args.origin).origin !== args.origin) { return Promise.reject(Error(constants_1.WDCErrors.ORIGIN_NOT_VALID)); } if (args.issuanceDate && isNaN(Date.parse(args.issuanceDate))) { return Promise.reject(Error(constants_1.WDCErrors.PROPERTY_ISSUANCE_DATE_NOT_VALID)); } if (isNaN(Date.parse(args.expirationDate))) { return Promise.reject(Error(constants_1.WDCErrors.PROPERTY_EXPIRATION_DATE_NOT_VALID)); } const credential = { "@context": [ constants_1.CONTEXT_URLS.W3C_CREDENTIALS_V1, constants_1.CONTEXT_URLS.IDENTITY_FOUNDATION_WELL_KNOWN_DID ], "issuer": did, "issuanceDate": args.issuanceDate || new Date().toISOString(), "expirationDate": args.expirationDate, "type": [ "VerifiableCredential", "DomainLinkageCredential" ], "credentialSubject": { "id": did, "origin": args.origin }, }; return (args.issueCallback) ? yield args.issueCallback({ credential, proofFormat: args.options.proofFormat }) // @ts-ignore: We know for sure the config is present // eslint-disable-next-line @typescript-eslint/no-non-null-assertion : yield this.config.issueCallback({ credential, proofFormat: args.options.proofFormat }); }); } } exports.WellKnownDidIssuer = WellKnownDidIssuer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2VsbEtub3duRGlkSXNzdWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2lzc3Vlci9XZWxsS25vd25EaWRJc3N1ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsbURBQStDO0FBRS9DLDRDQUF1RDtBQVN2RCxvQ0FBMEQ7QUFFMUQsTUFBYSxrQkFBa0I7SUFHN0IseUJBQXlCO0lBQ3pCLFlBQVksTUFBc0I7UUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDdEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ1UsNkJBQTZCLENBQUMsSUFBd0M7OztZQUNqRixJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDckMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBUyxDQUFDLHlDQUF5QyxDQUFDLENBQUMsQ0FBQTthQUNsRjtZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQSxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLGFBQWEsQ0FBQSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDcEksT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBUyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQTthQUNuRTtZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ2hHLE9BQU8sT0FBTyxDQUFD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