UNPKG

@gleif-it/vlei-verifier-workflows

Version:

Workflows for vLEI users and vLEI credentials for the vLEI-verifier service

180 lines (179 loc) 8.71 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.AddRootOfTrustStepRunner = exports.CredentialVerificationStepRunner = exports.NotifyCredentialIssueeStepRunner = exports.RevokeCredentialStepRunner = exports.IssueCredentialStepRunner = exports.CreateRegistryStepRunner = exports.CreateAidStepRunner = exports.CreateClientStepRunner = exports.StepRunner = void 0; const vlei_verifier_client_1 = require("vlei-verifier-client"); const vlei_issuance_js_1 = require("../vlei-issuance.js"); const credential_verification_js_1 = require("../credential-verification.js"); const test_data_js_1 = require("./test-data.js"); const handle_json_config_js_1 = require("./handle-json-config.js"); const workflow_state_js_1 = require("../workflow-state.js"); const resolve_env_js_1 = require("./resolve-env.js"); const test_util_js_1 = require("./test-util.js"); class StepRunner { constructor() { this.type = ''; } } exports.StepRunner = StepRunner; class CreateClientStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'create_client'; } run(_stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (_stepName, step, configJson = null) { const agentName = step.agent_name; const secret = (0, handle_json_config_js_1.getAgentSecret)(configJson, agentName); const result = yield vlei_issuance_js_1.VleiIssuance.createClient(secret, agentName); return result; }); } } exports.CreateClientStepRunner = CreateClientStepRunner; class CreateAidStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'create_aid'; } run(_stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (_stepName, step, configJson = null) { const identifierData = (0, handle_json_config_js_1.getIdentifierData)(configJson, step.aid); const result = yield vlei_issuance_js_1.VleiIssuance.createAid(identifierData); return result; }); } } exports.CreateAidStepRunner = CreateAidStepRunner; class CreateRegistryStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'create_registry'; } run(_stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (_stepName, step, configJson = null) { const identifierData = (0, handle_json_config_js_1.getIdentifierData)(configJson, step.aid); const result = yield vlei_issuance_js_1.VleiIssuance.createRegistry(identifierData); return result; }); } } exports.CreateRegistryStepRunner = CreateRegistryStepRunner; class IssueCredentialStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'issue_credential'; } run(stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (stepName, step, _configJson = null) { const result = yield vlei_issuance_js_1.VleiIssuance.getOrIssueCredential(stepName, step.credential, step.attributes, step.issuer_aid, step.issuee_aid, step.credential_source, Boolean(step.generate_test_data), step.test_name); return result; }); } } exports.IssueCredentialStepRunner = IssueCredentialStepRunner; class RevokeCredentialStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'revoke_credential'; } run(_stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (_stepName, step, _configJson = null) { const result = yield vlei_issuance_js_1.VleiIssuance.revokeCredential(step.credential, step.issuer_aid, step.issuee_aid, Boolean(step.generate_test_data), step.test_name); return result; }); } } exports.RevokeCredentialStepRunner = RevokeCredentialStepRunner; class NotifyCredentialIssueeStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'notify_credential_issuee'; } run(_stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (_stepName, step, _configJson = null) { const result = yield vlei_issuance_js_1.VleiIssuance.notifyCredentialIssuee(step.credential, step.issuer_aid, step.issuee_aid); return result; }); } } exports.NotifyCredentialIssueeStepRunner = NotifyCredentialIssueeStepRunner; class CredentialVerificationStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'credential_verification'; } run(_stepName_1, step_1) { return __awaiter(this, arguments, void 0, function* (_stepName, step, _configJson = null) { const workflow_state = workflow_state_js_1.WorkflowState.getInstance(); const credVerification = new credential_verification_js_1.CredentialVerification(); const presenterAid = step.presenter_aid; const aid = workflow_state.aids.get(presenterAid); const aidInfo = workflow_state.aidsInfo.get(presenterAid); let client; if (aidInfo !== undefined && aidInfo.type !== undefined && aidInfo.type == 'multisig') { const multisigIdentifierData = aidInfo; const multisigMemberAidInfo = workflow_state.aidsInfo.get(multisigIdentifierData.identifiers[0]); client = workflow_state.clients.get(multisigMemberAidInfo.agent.name); } else { const singlesigIdentifierData = aidInfo; client = workflow_state.clients.get(singlesigIdentifierData.agent.name); } const credId = step.credential; const cred = workflow_state.credentials.get(credId); const credCesr = client !== undefined ? yield client.credentials().get(cred.sad.d, true) : undefined; const vleiUser = { roleClient: client, ecrAid: aid, creds: { [credId]: { cred: cred, credCesr: credCesr } }, idAlias: presenterAid, }; for (const action of Object.values(step.actions)) { if (action.type == 'presentation') { const credStatus = test_data_js_1.credPresentationStatusMapping.get(action.expected_status); yield credVerification.credentialPresentation(vleiUser, credId, credStatus); } else if (action.type == 'authorization') { const credStatus = test_data_js_1.credAuthorizationStatusMapping.get(action.expected_status); yield credVerification.credentialAuthorization(vleiUser, credStatus); } else { throw new Error(`credential_verification: Invalid action: ${action.type} `); } } return true; }); } } exports.CredentialVerificationStepRunner = CredentialVerificationStepRunner; class AddRootOfTrustStepRunner extends StepRunner { constructor() { super(...arguments); this.type = 'add_root_of_trust'; } run(_stepName, step, configJson) { return __awaiter(this, void 0, void 0, function* () { const env = (0, resolve_env_js_1.resolveEnvironment)(); const rot_aid = step.rot_aid; const rot_member_aid = step.rot_member_aid; const rootOfTrustData = yield (0, test_util_js_1.getRootOfTrust)(configJson, rot_aid, rot_member_aid); const verifierClient = new vlei_verifier_client_1.VerifierClient(env.verifierBaseUrl); const response = yield verifierClient.addRootOfTrust(rootOfTrustData.aid, rootOfTrustData.vlei, rootOfTrustData.oobi); return response; }); } } exports.AddRootOfTrustStepRunner = AddRootOfTrustStepRunner;