Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return passwordFileStoreRegistry.getChosenDatabaseFile(settings).then(function(buf) {
var h = keepassHeader.readHeader(buf);
if (!h) throw new Error('Failed to read file header');
if (h.kdbx) { // KDBX - use kdbxweb library
kdbxweb.CryptoEngine.argon2 = argon2;
var kdbxCreds = jsonCredentialsToKdbx(masterKey);
return kdbxweb.Kdbx.load(buf, kdbxCreds).then(db => {
var psk = new Uint8Array(db.header.protectedStreamKey, 0, db.header.protectedStreamKey.length);
var entries = parseKdbxDb(db.groups);
majorVersion = db.header.versionMajor;
return processReferences(entries, majorVersion);
});
} else { // KDB - we don't support this anymore
throw "Unsupported Database Version";
}
}).then(function(entries) {
return {
return bufferPromise.then(function (buf) {
var h = keepassHeader.readHeader(buf);
if (!h) throw new Error('Failed to read file header');
if (h.kdbx) { // KDBX - use kdbxweb library
kdbxweb.CryptoEngine.argon2 = argon2;
var kdbxCreds = jsonCredentialsToKdbx(masterKey);
return kdbxweb.Kdbx.load(buf, kdbxCreds).then(db => {
var psk = new Uint8Array(db.header.protectedStreamKey, 0, db.header.protectedStreamKey.length);
var entries = parseKdbxDb(db.groups);
majorVersion = db.header.versionMajor;
return processReferences(entries, majorVersion);
});
} else { // KDB - we don't support this anymore
throw "Unsupported Database Version";
}
}).then(function (entries) {
return {
const importVault = async (buffer, password) => {
const credentials = new kdbxweb.Credentials(kdbxweb.ProtectedValue.fromString(password));
const db = await kdbxweb.Kdbx.load(buffer, credentials);
const entries = db.getDefaultGroup().entries;
const seeds = [];
for (let i = 0; i < entries.length; i++) {
if (entries[i].fields.Seed) {
seeds.push({
title: entries[i].fields.Title || `Seed #${i + 1}`,
seed: entries[i].fields.Seed.getText()
.split('')
.map((char) => charToByte(char.toUpperCase()))
.filter((byte) => byte > -1),
});
}
}
return seeds;
exports.keereg = async function(req, res) {
try{
let filePath = path.resolve(path.join(process.execPath, '../keepass/')+req.body.keepassfile+'.kdbx');
if(isMobile(req)) {
//filePath = path.resolve('/tmp/keepass/'+req.body.keepassfile+'.kdbx');
filePath = path.resolve(path.join(__dirname, '../../keepass/'+req.body.keepassfile+'.kdbx'));
}
if(process.env.electron) {
filePath = path.resolve(path.join(config.mydice.path, '/keepass/'+req.body.keepassfile+'.kdbx'));
}
let cred = new kdbxweb.Credentials(kdbxweb.ProtectedValue.fromString(req.body.keepassword));
let db = kdbxweb.Kdbx.create(cred, 'mydicebot');
//let subGroup = db.createGroup(db.getDefaultGroup(), 'mydicebot');
db.save().then(ab => {
fs.writeFileSync(filePath, Buffer.from(ab));
return res.status(200).json('ok');
});
} catch(err) {
console.log(err);
return res.status(500).send({err: err.toString()});
}
};
importWithXml(fileXml, callback) {
try {
const ts = logger.ts();
const password = kdbxweb.ProtectedValue.fromString('');
const credentials = new kdbxweb.Credentials(password);
kdbxweb.Kdbx.loadXml(fileXml, credentials)
.then(db => {
this.db = db;
this.readModel();
this.set({ active: true, created: true });
logger.info('Imported file ' + this.name + ': ' + logger.ts(ts));
callback();
})
.catch(err => {
logger.error('Error importing file', err.code, err.message, err);
callback(err);
});
} catch (e) {
logger.error('Error importing file', e, e.code, e.message, e);
callback(e);
}
}
credentialsPromise.then(() => {
kdbxweb.Kdbx.load(fileData, credentials)
.then(remoteDb => {
if (this.modified) {
try {
if (remoteKey && remoteDb.meta.keyChanged > this.db.meta.keyChanged) {
this.db.credentials = remoteDb.credentials;
this.keyFileName = remoteKey.keyFileName || '';
if (remoteKey.password) {
this.passwordLength = remoteKey.password.textLength;
}
}
this.db.merge(remoteDb);
} catch (e) {
logger.error('File merge error', e);
return callback(e);
}
} else {
const exportVault = async (seeds, password) => {
const credentials = new kdbxweb.Credentials(kdbxweb.ProtectedValue.fromString(password));
const db = kdbxweb.Kdbx.create(credentials, 'Trinity');
db.upgrade();
for (let i = 0; i < seeds.length; i++) {
const entry = db.createEntry(db.getDefaultGroup());
entry.fields.Title = seeds[i].title || `IOTA Seed #${i + 1}`;
entry.fields.Seed = kdbxweb.ProtectedValue.fromString(seeds[i].seed.map((byte) => byteToChar(byte)).join(''));
}
const chunk = await db.save();
return chunk;
};
exports.keeload = async function(req, res) {
try{
let filePath = path.resolve(path.join(process.execPath, '../keepass/')+req.body.keepassfile+'.kdbx');
if(isMobile(req)) {
//filePath = path.resolve('/tmp/keepass/'+req.body.keepassfile+'.kdbx');
filePath = path.resolve(path.join(__dirname, '../../keepass/'+req.body.keepassfile+'.kdbx'));
}
if(process.env.electron) {
filePath = path.resolve(path.join(config.mydice.path, '/keepass/'+req.body.keepassfile+'.kdbx'));
}
let cred = new kdbxweb.Credentials(kdbxweb.ProtectedValue.fromString(req.body.keepassword));
let data = await fs.readFileSync(filePath);
let db = await kdbxweb.Kdbx.load(new Uint8Array(data).buffer, cred);
let kees = {};
for (let group of db.groups) {
if(group.name == 'mydicebot') {
for (let subGroup of group.groups) {
let entrys = [];
for (let entry of subGroup.entries) {
let en = {};
en['username'] = field(entry, 'UserName');
en['password'] = field(entry, 'Password');
en['apikey'] = field(entry, 'ApiKey');
entrys.push(en);
}
kees[subGroup.name] = entrys;
}
}
}
create(name) {
const password = kdbxweb.ProtectedValue.fromString('');
const credentials = new kdbxweb.Credentials(password);
this.db = kdbxweb.Kdbx.create(credentials, name);
this.name = name;
this.readModel();
this.set({ active: true, created: true, name });
}
const getSeedFromVault = async (buffer, password) => {
const credentials = new kdbxweb.Credentials(kdbxweb.ProtectedValue.fromString(password));
const db = await kdbxweb.Kdbx.load(buffer, credentials);
const entry = db.getDefaultGroup().entries[0];
const seed = entry.fields.Seed.getText();
const title = entry.fields.Title;
return JSON.stringify({ seed, title });
};