'use strict';

var inherits = require('inherits');
var MD5 = require('md5.js');
var RIPEMD160 = require('ripemd160');
var sha = require('sha.js');
var Base = require('cipher-base');

function Hash(hash) {
	Base.call(this, 'digest');

	this._hash = hash;
}

inherits(Hash, Base);

Hash.prototype._update = function (data) {
	this._hash.update(data);
};

Hash.prototype._final = function () {
	return this._hash.digest();
};

module.exports = function createHash(algorithm) {
	var alg = algorithm.toLowerCase();
	if (alg === 'md5') {
		return new MD5();
	}
	if (alg === 'rmd160' || alg === 'ripemd160') {
		return new RIPEMD160();
	}

	return new Hash(sha(alg));
};
