UNPKG

@sphereon/gx-compliance-client

Version:

<!--suppress HtmlDeprecatedAttribute --> <h1 align="center"> <br> <a href="https://www.sphereon.com"><img src="https://sphereon.com/content/themes/sphereon/assets/img/logo.svg" alt="Sphereon" width="400"></a> <br>Gaia-X Compliance client (Typescript

119 lines (118 loc) 6.25 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.dropDatabase = exports.createDatabase = exports.setupGXAgent = void 0; const GXComplianceClient_1 = require("./GXComplianceClient"); const BlsKeyManagementSystem_1 = require("@sphereon/ssi-sdk-bls-kms-local/dist/BlsKeyManagementSystem"); const ssi_sdk_vc_handler_ld_local_1 = require("@sphereon/ssi-sdk-vc-handler-ld-local"); const credential_w3c_1 = require("@veramo/credential-w3c"); const key_manager_1 = require("@veramo/key-manager"); const kms_local_1 = require("@veramo/kms-local"); const core_1 = require("@veramo/core"); const did_manager_1 = require("@veramo/did-manager"); const did_provider_web_1 = require("@veramo/did-provider-web"); const data_store_1 = require("@veramo/data-store"); const typeorm_1 = require("typeorm"); const did_resolver_1 = require("did-resolver"); const web_did_resolver_1 = require("web-did-resolver"); // @ts-ignore const fs_1 = __importDefault(require("fs")); const did_resolver_2 = require("@veramo/did-resolver"); const GXJsonWebSignature2020_1 = require("../suites/GXJsonWebSignature2020"); function setupGXAgent(opts) { var _a, _b, _c, _d, _e; return __awaiter(this, void 0, void 0, function* () { if (!opts.dbConnection && !opts.dbFile) { throw Error('Either a db connection or dbFile needs to be supplied. None given'); } const dbConnection = opts.dbConnection ? opts.dbConnection : newDBConnection(opts.dbFile); const privateKeyStore = new data_store_1.PrivateKeyStore(dbConnection, new kms_local_1.SecretBox(opts.dbEncryptionKey)); const kmsName = ((_a = opts.config) === null || _a === void 0 ? void 0 : _a.kmsName) ? opts.config.kmsName : 'local'; const kms = new BlsKeyManagementSystem_1.BlsKeyManagementSystem(privateKeyStore); const webResolver = (0, web_did_resolver_1.getResolver)(); const keyStore = new data_store_1.KeyStore(dbConnection); const resolver = new did_resolver_1.Resolver(Object.assign({}, webResolver)); const agent = yield (0, core_1.createAgent)({ plugins: [ new key_manager_1.KeyManager({ store: keyStore, kms: { [kmsName]: kms, }, }), new did_manager_1.DIDManager({ providers: { 'did:web': new did_provider_web_1.WebDIDProvider({ defaultKms: kmsName }), }, store: new data_store_1.DIDStore(dbConnection), defaultProvider: 'did:web', }), new credential_w3c_1.CredentialPlugin(), new ssi_sdk_vc_handler_ld_local_1.CredentialHandlerLDLocal({ keyStore: privateKeyStore, contextMaps: (opts === null || opts === void 0 ? void 0 : opts.customContext) ? [ssi_sdk_vc_handler_ld_local_1.LdDefaultContexts, opts.customContext] : [ssi_sdk_vc_handler_ld_local_1.LdDefaultContexts], suites: [new GXJsonWebSignature2020_1.GXJsonWebSignature2020()], bindingOverrides: new Map([ ['createVerifiableCredentialLD', ssi_sdk_vc_handler_ld_local_1.MethodNames.createVerifiableCredentialLDLocal], ['createVerifiablePresentationLD', ssi_sdk_vc_handler_ld_local_1.MethodNames.createVerifiablePresentationLDLocal], // We test the verify methods by using the LDLocal versions directly in the tests ]), }), new data_store_1.DataStore(dbConnection), new data_store_1.DataStoreORM(dbConnection), new GXComplianceClient_1.GXComplianceClient({ kmsName: kmsName, complianceServiceVersion: (_c = (_b = opts.config) === null || _b === void 0 ? void 0 : _b.complianceServiceVersion) !== null && _c !== void 0 ? _c : 'v2206', complianceServiceUrl: (_e = (_d = opts.config) === null || _d === void 0 ? void 0 : _d.complianceServiceUrl) !== null && _e !== void 0 ? _e : 'http://localhost:3000', }), new did_resolver_2.DIDResolverPlugin({ resolver, }), ], }); return { agent, kms, dbConnection, resolver, }; }); } exports.setupGXAgent = setupGXAgent; function createDatabase(dbConnection) { return __awaiter(this, void 0, void 0, function* () { yield (yield dbConnection).dropDatabase(); yield (yield dbConnection).synchronize(); }); } exports.createDatabase = createDatabase; function dropDatabase(dbConnection, databaseFile) { return __awaiter(this, void 0, void 0, function* () { yield (yield dbConnection).close(); fs_1.default.unlinkSync(databaseFile); }); } exports.dropDatabase = dropDatabase; function newDBConnection(databaseFile) { return __awaiter(this, void 0, void 0, function* () { return yield new typeorm_1.DataSource({ type: 'sqlite', database: databaseFile, entities: data_store_1.Entities, migrations: data_store_1.migrations, migrationsRun: true, logger: 'advanced-console', }).initialize(); }); }