12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 'use strict'
- var inherits = require('inherits')
- var md5 = require('./md5')
- var RIPEMD160 = require('ripemd160')
- var sha = require('sha.js')
- var Base = require('cipher-base')
- function HashNoConstructor (hash) {
- Base.call(this, 'digest')
- this._hash = hash
- this.buffers = []
- }
- inherits(HashNoConstructor, Base)
- HashNoConstructor.prototype._update = function (data) {
- this.buffers.push(data)
- }
- HashNoConstructor.prototype._final = function () {
- var buf = Buffer.concat(this.buffers)
- var r = this._hash(buf)
- this.buffers = null
- return r
- }
- 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 (alg) {
- alg = alg.toLowerCase()
- if (alg === 'md5') return new HashNoConstructor(md5)
- if (alg === 'rmd160' || alg === 'ripemd160') return new Hash(new RIPEMD160())
- return new Hash(sha(alg))
- }
|