|
|
@ -150,15 +150,33 @@ exports.createCredentials = function(options, context) { |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
function LazyTransform(options) { |
|
|
|
this._options = options; |
|
|
|
} |
|
|
|
util.inherits(LazyTransform, stream.Transform); |
|
|
|
|
|
|
|
['read', 'write', 'end'].forEach(function(action, i, actions) { |
|
|
|
LazyTransform.prototype[action] = function() { |
|
|
|
stream.Transform.call(this, this._options); |
|
|
|
|
|
|
|
actions.forEach(function(action) { |
|
|
|
this[action] = stream.Transform.prototype[action]; |
|
|
|
}, this); |
|
|
|
|
|
|
|
return this[action].apply(this, arguments); |
|
|
|
}; |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
exports.createHash = exports.Hash = Hash; |
|
|
|
function Hash(algorithm, options) { |
|
|
|
if (!(this instanceof Hash)) |
|
|
|
return new Hash(algorithm); |
|
|
|
this._binding = new binding.Hash(algorithm); |
|
|
|
stream.Transform.call(this, options); |
|
|
|
LazyTransform.call(this, options); |
|
|
|
} |
|
|
|
|
|
|
|
util.inherits(Hash, stream.Transform); |
|
|
|
util.inherits(Hash, LazyTransform); |
|
|
|
|
|
|
|
Hash.prototype._transform = function(chunk, encoding, callback) { |
|
|
|
this._binding.update(chunk, encoding); |
|
|
@ -194,10 +212,10 @@ function Hmac(hmac, key, options) { |
|
|
|
return new Hmac(hmac, key); |
|
|
|
this._binding = new binding.Hmac(); |
|
|
|
this._binding.init(hmac, toBuf(key)); |
|
|
|
stream.Transform.call(this, options); |
|
|
|
LazyTransform.call(this, options); |
|
|
|
} |
|
|
|
|
|
|
|
util.inherits(Hmac, stream.Transform); |
|
|
|
util.inherits(Hmac, LazyTransform); |
|
|
|
|
|
|
|
Hmac.prototype.update = Hash.prototype.update; |
|
|
|
Hmac.prototype.digest = Hash.prototype.digest; |
|
|
@ -221,10 +239,10 @@ function Cipher(cipher, password, options) { |
|
|
|
this._binding.init(cipher, toBuf(password)); |
|
|
|
this._decoder = null; |
|
|
|
|
|
|
|
stream.Transform.call(this, options); |
|
|
|
LazyTransform.call(this, options); |
|
|
|
} |
|
|
|
|
|
|
|
util.inherits(Cipher, stream.Transform); |
|
|
|
util.inherits(Cipher, LazyTransform); |
|
|
|
|
|
|
|
Cipher.prototype._transform = function(chunk, encoding, callback) { |
|
|
|
this.push(this._binding.update(chunk, encoding)); |
|
|
@ -280,10 +298,10 @@ function Cipheriv(cipher, key, iv, options) { |
|
|
|
this._binding.initiv(cipher, toBuf(key), toBuf(iv)); |
|
|
|
this._decoder = null; |
|
|
|
|
|
|
|
stream.Transform.call(this, options); |
|
|
|
LazyTransform.call(this, options); |
|
|
|
} |
|
|
|
|
|
|
|
util.inherits(Cipheriv, stream.Transform); |
|
|
|
util.inherits(Cipheriv, LazyTransform); |
|
|
|
|
|
|
|
Cipheriv.prototype._transform = Cipher.prototype._transform; |
|
|
|
Cipheriv.prototype._flush = Cipher.prototype._flush; |
|
|
@ -302,10 +320,10 @@ function Decipher(cipher, password, options) { |
|
|
|
this._binding.init(cipher, toBuf(password)); |
|
|
|
this._decoder = null; |
|
|
|
|
|
|
|
stream.Transform.call(this, options); |
|
|
|
LazyTransform.call(this, options); |
|
|
|
} |
|
|
|
|
|
|
|
util.inherits(Decipher, stream.Transform); |
|
|
|
util.inherits(Decipher, LazyTransform); |
|
|
|
|
|
|
|
Decipher.prototype._transform = Cipher.prototype._transform; |
|
|
|
Decipher.prototype._flush = Cipher.prototype._flush; |
|
|
@ -325,10 +343,10 @@ function Decipheriv(cipher, key, iv, options) { |
|
|
|
this._binding.initiv(cipher, toBuf(key), toBuf(iv)); |
|
|
|
this._decoder = null; |
|
|
|
|
|
|
|
stream.Transform.call(this, options); |
|
|
|
LazyTransform.call(this, options); |
|
|
|
} |
|
|
|
|
|
|
|
util.inherits(Decipheriv, stream.Transform); |
|
|
|
util.inherits(Decipheriv, LazyTransform); |
|
|
|
|
|
|
|
Decipheriv.prototype._transform = Cipher.prototype._transform; |
|
|
|
Decipheriv.prototype._flush = Cipher.prototype._flush; |
|
|
|