};
+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);
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;
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));
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;
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;
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;