@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
JavaScript
"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();
});
}