41 lines
937 B
JavaScript
41 lines
937 B
JavaScript
'use strict';
|
|
|
|
module.exports.create = function (opts) {
|
|
var service = "Telebit";
|
|
var keytar;
|
|
try {
|
|
keytar = require('keytar');
|
|
} catch(e) {
|
|
console.warn("Could not load native key management. Keys will be stored in plain text.");
|
|
keytar = require('./keystore-fallback.js').create(opts);
|
|
keytar.insecure = true;
|
|
}
|
|
|
|
return {
|
|
get: function (name) {
|
|
return keytar.getPassword(service, name).then(maybeParse);
|
|
}
|
|
, set: function (name, value) {
|
|
return keytar.setPassword(service, name, maybeStringify(value));
|
|
}
|
|
, delete: function (name) {
|
|
return keytar.deletePassword(service, name);
|
|
}
|
|
, insecure: keytar.insecure
|
|
};
|
|
};
|
|
|
|
function maybeParse(str) {
|
|
if (str && '{' === str[0]) {
|
|
return JSON.parse(str);
|
|
}
|
|
return str;
|
|
}
|
|
|
|
function maybeStringify(obj) {
|
|
if ('string' !== typeof obj && 'object' === typeof obj) {
|
|
return JSON.stringify(obj);
|
|
}
|
|
return obj;
|
|
}
|