react / wstein / node_modules / browserify / node_modules / crypto-browserify / node_modules / create-hash / browser.js
80542 views'use strict';1var inherits = require('inherits')2var md5 = require('./md5')3var rmd160 = require('ripemd160')4var sha = require('sha.js')56var Transform = require('stream').Transform78function HashNoConstructor(hash) {9Transform.call(this)1011this._hash = hash12this.buffers = []13}1415inherits(HashNoConstructor, Transform)1617HashNoConstructor.prototype._transform = function (data, _, next) {18this.buffers.push(data)1920next()21}2223HashNoConstructor.prototype._flush = function (next) {24this.push(this.digest())25next()26}2728HashNoConstructor.prototype.update = function (data, enc) {29if (typeof data === 'string') {30data = new Buffer(data, enc)31}3233this.buffers.push(data)34return this35}3637HashNoConstructor.prototype.digest = function (enc) {38var buf = Buffer.concat(this.buffers)39var r = this._hash(buf)40this.buffers = null4142return enc ? r.toString(enc) : r43}4445function Hash(hash) {46Transform.call(this)4748this._hash = hash49}5051inherits(Hash, Transform)5253Hash.prototype._transform = function (data, enc, next) {54if (enc) data = new Buffer(data, enc)5556this._hash.update(data)5758next()59}6061Hash.prototype._flush = function (next) {62this.push(this._hash.digest())63this._hash = null6465next()66}6768Hash.prototype.update = function (data, enc) {69if (typeof data === 'string') {70data = new Buffer(data, enc)71}7273this._hash.update(data)74return this75}7677Hash.prototype.digest = function (enc) {78var outData = this._hash.digest()7980return enc ? outData.toString(enc) : outData81}8283module.exports = function createHash (alg) {84if ('md5' === alg) return new HashNoConstructor(md5)85if ('rmd160' === alg) return new HashNoConstructor(rmd160)8687return new Hash(sha(alg))88}899091