Wallet/js/util/crypto.js
Matias Alejo Garcia 8183a1d3c7 fixes #importWallet
2014-10-27 17:23:01 -03:00

51 lines
1.1 KiB
JavaScript

/**
* Small module for some helpers that wrap sjcl with some good practices.
*/
var sjcl = require('../../lib/sjcl');
var log = require('../log.js');
var _ = require('lodash');
var defaultSalt = 'mjuBtGybi/4=';
var defaultIterations = 100;
// var SEPARATOR = '&';
// var defaultOptions = {
// adata: '',
// cipher: 'aes',
// ks: 128,
// iter: 2000,
// mode: 'ccm',
// ts: 64
// };
module.exports = {
kdf: function(value1, value2, salt, iterations) {
iterations = iterations || defaultIterations;
salt = salt || defaultSalt;
return sjcl.codec.base64.fromBits(sjcl.misc.pbkdf2(value1 + (value2 || ''), salt, iterations));
},
/**
* Encrypts symmetrically using a passphrase
*/
encrypt: function(key, message) {
if (!_.isString(message)) {
message = JSON.stringify(message);
}
return sjcl.encrypt(key, message);
},
/**
* Decrypts symmetrically using a passphrase
*/
decrypt: function(key, cyphertext) {
var output = {};
try {
return sjcl.decrypt(key, cyphertext);
} catch (e) {
log.error('Decryption failed due to error: ' + e.message);
return null;
}
}
};