2014-12-02 11:16:31 -08:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
angular.module('copayApp.services')
|
2014-12-02 17:38:33 -08:00
|
|
|
.factory('pinService', function($rootScope, localstorageService) {
|
|
|
|
|
|
|
|
var KEY = 'pinDATA';
|
|
|
|
var SALT = '4gllotIKguqi0EkIslC0';
|
|
|
|
var ITER = 2000;
|
|
|
|
|
|
|
|
var ls = localstorageService;
|
2014-12-02 11:16:31 -08:00
|
|
|
var root = {};
|
|
|
|
|
2014-12-02 17:38:33 -08:00
|
|
|
root.check = function(cb) {
|
|
|
|
ls.getItem(KEY, function(err, value) {
|
|
|
|
return cb(err, value ? true : false);
|
|
|
|
});
|
2014-12-02 11:16:31 -08:00
|
|
|
};
|
2014-12-02 17:38:33 -08:00
|
|
|
|
|
|
|
root.get = function(pin, cb) {
|
|
|
|
ls.getItem(KEY, function(err, value) {
|
|
|
|
if (!value) return cb(null);
|
|
|
|
var enc = value;
|
|
|
|
var data = copay.crypto.decrypt('' + parseInt(pin), enc);
|
|
|
|
var err = new Error('Could not decrypt');
|
|
|
|
if (data) {
|
|
|
|
var obj;
|
|
|
|
try {
|
|
|
|
obj = JSON.parse(data);
|
|
|
|
err = null;
|
|
|
|
} catch (e) {};
|
2014-12-02 11:16:31 -08:00
|
|
|
}
|
2014-12-02 17:38:33 -08:00
|
|
|
return cb(err, obj);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
root.save = function(pin, email, password, cb) {
|
|
|
|
var credentials = {
|
|
|
|
email: email,
|
|
|
|
password: password,
|
2014-12-02 11:16:31 -08:00
|
|
|
};
|
2014-12-02 17:38:33 -08:00
|
|
|
var enc = copay.crypto.encrypt('' + parseInt(pin), credentials, SALT, ITER);
|
|
|
|
ls.setItem(KEY, enc, function(err) {
|
|
|
|
return cb(err);
|
|
|
|
});
|
2014-12-02 11:16:31 -08:00
|
|
|
};
|
2014-12-02 17:38:33 -08:00
|
|
|
|
|
|
|
root.clear = function(cb) {
|
|
|
|
ls.removeItem(KEY, cb);
|
2014-12-02 11:16:31 -08:00
|
|
|
};
|
2014-12-02 17:38:33 -08:00
|
|
|
|
2014-12-02 11:16:31 -08:00
|
|
|
return root;
|
|
|
|
});
|