@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
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.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;