dsd-module-keystore
v3.2.0
Published
========== Module Source code requirements: ==========
Downloads
8
Readme
========== Module Source code requirements:
//add asm-config.json to the root of module { "asmSigPubKey": "0x818..9303f", "asmSigPrvKey": "0x1205c..aa", "id": 1, //id of module in ASM system "encPubKey": "0x046525fb..cef" "unlockerUrl": "..." //optional }
//add ./init/initsecret.json { "k2encrypted": "05..52", "initsecret": { "encPrvKey": "0x7f..b0", "symPwd": "12..r", "moduleSpecificKeys": { .. } } }
//include in source code:
var asmConfig = require("./asm-config.json");
const args = require('yargs').argv; const unlockerUrl = args.unlockrpcaddr ? args.unlockrpcaddr : asmConfig.unlockerUrl;
const ModuleKeystore = require("../dsd-module-keystore/keystore"); const moduleKeystore = new ModuleKeystore("./", asmConfig, unlockerUrl ? unlockerUrl : 'http://localhost:5440');
var SECRET_OPTs = {}; var secretCfg;
moduleKeystore.getSecretCfg(SECRET_OPTs).then(scfg => { secretCfg = scfg; });
//on some module's API call: async function handle_acceptsecret(opts) { let data = require("./init/initsecret.json");
try {
SECRET_OPTs= { ...SECRET_OPTs, ...data };
let isAccepted = await moduleKeystore.getSecretCfg(SECRET_OPTs);
...
} catch (dataErr) {
...
}
}
========== Module Installation instruction:
DSD Admin (DA) Module's Owner (MO)
- Admin actions:
DA: 1- Generate Asm keys (dsd-common-lib/ npm run keys) for the module and place it to the module's cfg DA: 2- Build docker image of the module DA: 3- Launch unlocker (or ensure it is running) DA: 4- Call unlocker.admin_addModule(...)
- Module's Owner actions:
MO: 1- Install docker container with the Module MO: 2- create: - symPwd (just random password), - generate encryption keys pair unlocker.generateEncKeyPair() (or locally via dsd-common-lib) - specific for module: e.g. for vault: create GS-account and get its credentials
MO: 3- Call unlocker.generateModuleK2(...) and get K2encrypted MO: 4- Create file /init/initsecret.json with such structure: { "k2encrypted": "9f...710", "encPrvKey": "0x7f...cb0", "symPwd": "12...pqr", "moduleSpecificKeys": { "type": "service_account", "project_id": "dsd-phase1", "private_key_id": "39...e2", ... } }
MO: 5- Call Module (GET/POST module_url/acceptsecret) to apply secret initializaton MO: 6- Delete file /init/initsecret.json
- That's it!