From 90c5e842916126773b4840e028f497f9d6ccc972 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Thu, 1 Aug 2013 14:28:26 -0400 Subject: [PATCH] Add EncFile module, for encrypted wallet files --- util/EncFile.js | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 util/EncFile.js diff --git a/util/EncFile.js b/util/EncFile.js new file mode 100644 index 0000000..fd56cab --- /dev/null +++ b/util/EncFile.js @@ -0,0 +1,38 @@ + +var fs = require('fs'); +var crypto = require('crypto'); +var zlib = require('zlib'); + +exports.readFileSync = function(enc_method, enc_passphrase, filename) +{ + var crypted = fs.readFileSync(filename, 'binary'); + + var decipher = crypto.createDecipher(enc_method, enc_passphrase); + var dec = decipher.update(crypted, 'binary', 'binary'); + dec += decipher.final('binary'); + return dec; +}; + +exports.readJFileSync = function(enc_method, enc_passphrase, filename) +{ + var raw = this.readFileSync(enc_method, enc_passphrase, filename); + return JSON.parse(raw); +}; + +exports.writeFileSync = function(enc_method, enc_passphrase, filename, data) +{ + var cipher = crypto.createCipher(enc_method, enc_passphrase); + var crypted = cipher.update(data, 'binary', 'binary'); + crypted += cipher.final('binary'); + + fs.writeFileSync(filename, crypted, 'binary'); + + return true; +}; + +exports.writeJFileSync = function(enc_method, enc_passphrase, filename, obj) +{ + var raw = JSON.stringify(obj); + return this.writeFileSync(enc_method, enc_passphrase, filename, raw); +}; +