UNPKG

@sphereon/ssi-sdk.siopv2-oid4vp-rp-auth

Version:

139 lines • 6.32 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.RPInstance = void 0; const functions_1 = require("./functions"); const uuid_1 = require("uuid"); const ssi_sdk_ext_identifier_resolution_1 = require("@sphereon/ssi-sdk-ext.identifier-resolution"); class RPInstance { constructor({ rpOpts, pexOpts }) { this._rpOptions = rpOpts; this._pexOptions = pexOpts; } get(context) { return __awaiter(this, void 0, void 0, function* () { if (!this._rp) { const builder = yield (0, functions_1.createRPBuilder)({ rpOpts: this._rpOptions, pexOpts: this._pexOptions, context, }); this._rp = builder.build(); } return this._rp; }); } get rpOptions() { return this._rpOptions; } get pexOptions() { return this._pexOptions; } hasDefinition() { return this.definitionId !== undefined; } get definitionId() { var _a; return (_a = this.pexOptions) === null || _a === void 0 ? void 0 : _a.definitionId; } getPresentationDefinition(context) { return __awaiter(this, void 0, void 0, function* () { var _a; return this.definitionId ? yield context.agent.pexStoreGetDefinition({ definitionId: this.definitionId, tenantId: (_a = this.pexOptions) === null || _a === void 0 ? void 0 : _a.tenantId, }) : undefined; }); } createAuthorizationRequestURI(createArgs, context) { return __awaiter(this, void 0, void 0, function* () { var _a, _b; const { correlationId, claims, requestByReferenceURI, responseURI, responseURIType } = createArgs; const nonce = (_a = createArgs.nonce) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)(); const state = (_b = createArgs.state) !== null && _b !== void 0 ? _b : correlationId; let jwtIssuer; const idOpts = this.rpOptions.identifierOpts.idOpts; const resolution = yield (0, ssi_sdk_ext_identifier_resolution_1.ensureManagedIdentifierResult)(idOpts, context); if ((0, ssi_sdk_ext_identifier_resolution_1.isManagedIdentifierDidResult)(resolution)) { jwtIssuer = { didUrl: resolution.kid, method: 'did', alg: (0, functions_1.getSigningAlgo)(resolution.key.type) }; } else if ((0, ssi_sdk_ext_identifier_resolution_1.isManagedIdentifierX5cResult)(resolution)) { if (!resolution.issuer) { return Promise.reject('missing issuer in idOpts'); } jwtIssuer = { issuer: resolution.issuer, x5c: resolution.x5c, method: 'x5c', alg: (0, functions_1.getSigningAlgo)(resolution.key.type), }; } else { return Promise.reject(Error(`JWT issuer method ${resolution.method} not yet supported`)); } return yield this.get(context).then((rp) => rp.createAuthorizationRequestURI({ version: (0, functions_1.getRequestVersion)(this.rpOptions), correlationId, nonce, state, claims, requestByReferenceURI, responseURI, responseURIType, jwtIssuer, })); }); } createAuthorizationRequest(createArgs, context) { return __awaiter(this, void 0, void 0, function* () { var _a, _b; const { correlationId, claims, requestByReferenceURI, responseURI, responseURIType } = createArgs; const nonce = (_a = createArgs.nonce) !== null && _a !== void 0 ? _a : (0, uuid_1.v4)(); const state = (_b = createArgs.state) !== null && _b !== void 0 ? _b : correlationId; const idOpts = this.rpOptions.identifierOpts.idOpts; const resolution = yield (0, ssi_sdk_ext_identifier_resolution_1.ensureManagedIdentifierResult)(idOpts, context); let jwtIssuer; if ((0, ssi_sdk_ext_identifier_resolution_1.isManagedIdentifierX5cResult)(resolution) && resolution.issuer) { jwtIssuer = { method: resolution.method, alg: (0, functions_1.getSigningAlgo)(resolution.key.type), x5c: resolution.x5c, issuer: resolution.issuer, }; } else if ((0, ssi_sdk_ext_identifier_resolution_1.isManagedIdentifierDidResult)(resolution)) { jwtIssuer = { method: resolution.method, alg: (0, functions_1.getSigningAlgo)(resolution.key.type), didUrl: resolution.did, }; } else { return Promise.reject(Error('Only did & x5c supported at present')); } return yield this.get(context).then((rp) => rp.createAuthorizationRequest({ version: (0, functions_1.getRequestVersion)(this.rpOptions), correlationId, nonce, state, claims, requestByReferenceURI, responseURIType, responseURI, jwtIssuer, })); }); } } exports.RPInstance = RPInstance; //# sourceMappingURL=RPInstance.js.map