aboutsummaryrefslogtreecommitdiffstats
path: root/app/scripts/keyring-controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/scripts/keyring-controller.js')
-rw-r--r--app/scripts/keyring-controller.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/app/scripts/keyring-controller.js b/app/scripts/keyring-controller.js
new file mode 100644
index 000000000..b61242973
--- /dev/null
+++ b/app/scripts/keyring-controller.js
@@ -0,0 +1,42 @@
+const scrypt = require('scrypt-async')
+const bitcore = require('bitcore-lib')
+const configManager = require('./lib/config-manager')
+
+module.exports = class KeyringController {
+
+ constructor (opts) {
+ this.configManager = opts.configManager
+ this.keyChains = []
+ }
+
+ getKeyForPassword(password, callback) {
+ let salt = this.configManager.getSalt()
+
+ if (!salt) {
+ salt = generateSalt(32)
+ configManager.setSalt(salt)
+ }
+
+ var logN = 14
+ var r = 8
+ var dkLen = 32
+ var interruptStep = 200
+
+ var cb = function(derKey) {
+ try {
+ var ui8arr = (new Uint8Array(derKey))
+ this.pwDerivedKey = ui8arr
+ callback(null, ui8arr)
+ } catch (err) {
+ callback(err)
+ }
+ }
+
+ scrypt(password, salt, logN, r, dkLen, interruptStep, cb, null)
+ }
+
+}
+
+function generateSalt (byteCount) {
+ return bitcore.crypto.Random.getRandomBuffer(byteCount || 32).toString('base64')
+}