示例#1
0
文件: keyring.js 项目: aleitner/core
KeyRing.prototype.import = function(tar, passphrase, writeflag, callback) {
  var self = this;
  var read = fs.createReadStream(tar);
  var parse = targz().createParseStream();

  if (typeof writeflag === 'function') {
    callback = writeflag;
    writeflag = false;
  }

  function worker(entry, done) {
    var key = path.basename(entry.path);
    var keyPath = path.join(self._keyFolder, key);

    if (!utils.existsSync(keyPath) || writeflag === true) {
      var buf = '';

      entry.on('data', function(data) {
        buf += data;
      });

      entry.resume();

      entry.on('end', function() {
        var decrypted;

        if (key === 'key.ring' || key === '.DS_Store') {
          return entry.abort();
        }

        try {
          decrypted = self._encrypt(
            KeyRing.prototype._decrypt.call({ _pass: passphrase }, buf)
          );
        } catch (err) {
          parse.removeAllListeners('end');
          return callback(new Error('Failed to decrypt keyring'));
        }

        fs.writeFileSync(keyPath, decrypted, done);
      });
    }
  }

  parse.on('entry', worker).on('end', callback);
  read.pipe(parse);
};
示例#2
0
文件: keyring.js 项目: aleitner/core
KeyRing.prototype.export = function(tar, callback) {
  var read = targz().createReadStream(this._keyFolder);
  var write = fs.createWriteStream(tar);

  read.pipe(write).on('finish', callback).on('error', callback);
};