@sphereon/ssi-sdk.siopv2-oid4vp-rp-auth
Version:
139 lines • 6.32 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());
});
};
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