icewallet
Version:
Cold storage enabled command line bitcoin wallet based on bitpay's bitcore
47 lines • 4.31 kB
JavaScript
;
const crypto = require('crypto');
let scrypt = require('scrypt');
class cryptoService {
constructor() {
this.cryptoAlgorithm = 'aes-256-ctr';
this.keyLength = 512;
this.slt = 'A55F3D3A-7204-4582-906A-1EC928F79262';
}
deriveKey(password, callback) {
scrypt.hash(password, { "N": 16, "r": 1, "p": 1 }, this.keyLength, this.slt, (err, hash) => {
if (err) {
return callback(err, null);
}
return callback(null, hash.toString('hex'));
});
}
decrypt(password, encrypted, callback) {
this.deriveKey(password, (err, key) => {
var decipher = crypto.createDecipher(this.cryptoAlgorithm, key);
var decrypted = decipher.update(encrypted, 'hex', 'utf8');
decrypted += decipher.final('utf8');
return callback(null, decrypted);
});
}
encrypt(key, data) {
var cipher = crypto.createCipher(this.cryptoAlgorithm, key);
var encrypted = cipher.update(data, 'utf8', 'hex');
encrypted += cipher.final('hex');
return encrypted;
}
hash(secret, callback) {
var params = scrypt.paramsSync(10, 750000000, 0.5);
scrypt.kdf(secret, params, (err, hash) => {
if (err) {
return callback(err, null);
}
return callback(null, hash.toString('hex'));
});
}
verifyHash(hash, secret, callback) {
scrypt.verifyKdf(new Buffer(hash, 'hex'), new Buffer(secret), callback);
}
}
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = cryptoService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J5cHRvU2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9TZXJ2aWNlcy9DcnlwdG9TZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxNQUFPLE1BQU0sV0FBVyxRQUFRLENBQUMsQ0FBQztBQUNsQyxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7QUFFL0I7SUFBQTtRQUNFLG9CQUFlLEdBQUcsYUFBYSxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxHQUFHLENBQUM7UUFDaEIsUUFBRyxHQUFHLHNDQUFzQyxDQUFDO0lBd0MvQyxDQUFDO0lBdENDLFNBQVMsQ0FBQyxRQUFlLEVBQUUsUUFBc0M7UUFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBQyxHQUFHLEVBQUMsRUFBRSxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQU8sRUFBRSxJQUFRO1lBQ3RGLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUM7Z0JBQ1AsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsQ0FBQztZQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZSxFQUFFLFNBQWdCLEVBQUUsUUFBNEM7UUFDckYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRztZQUNoQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0QsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUMsS0FBSyxFQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELFNBQVMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFVLEVBQUUsSUFBVztRQUM3QixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hELFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFhLEVBQUUsUUFBdUM7UUFDekQsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQU8sRUFBRSxJQUFRO1lBQzNDLEVBQUUsQ0FBQSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUM7Z0JBQ04sTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztZQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBVyxFQUFFLE1BQWEsRUFBRSxRQUFxQztRQUMxRSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRSxDQUFDO0FBQ0gsQ0FBQztBQTNDRDsrQkEyQ0MsQ0FBQSJ9