| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | 'use strict';var utils = require('./utils');var common = require('./common');var rotl32 = utils.rotl32;var sum32 = utils.sum32;var sum32_3 = utils.sum32_3;var sum32_4 = utils.sum32_4;var BlockHash = common.BlockHash;function RIPEMD160() {  if (!(this instanceof RIPEMD160))    return new RIPEMD160();  BlockHash.call(this);  this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];  this.endian = 'little';}utils.inherits(RIPEMD160, BlockHash);exports.ripemd160 = RIPEMD160;RIPEMD160.blockSize = 512;RIPEMD160.outSize = 160;RIPEMD160.hmacStrength = 192;RIPEMD160.padLength = 64;RIPEMD160.prototype._update = function update(msg, start) {  var A = this.h[0];  var B = this.h[1];  var C = this.h[2];  var D = this.h[3];  var E = this.h[4];  var Ah = A;  var Bh = B;  var Ch = C;  var Dh = D;  var Eh = E;  for (var j = 0; j < 80; j++) {    var T = sum32(      rotl32(        sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),        s[j]),      E);    A = E;    E = D;    D = rotl32(C, 10);    C = B;    B = T;    T = sum32(      rotl32(        sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),        sh[j]),      Eh);    Ah = Eh;    Eh = Dh;    Dh = rotl32(Ch, 10);    Ch = Bh;    Bh = T;  }  T = sum32_3(this.h[1], C, Dh);  this.h[1] = sum32_3(this.h[2], D, Eh);  this.h[2] = sum32_3(this.h[3], E, Ah);  this.h[3] = sum32_3(this.h[4], A, Bh);  this.h[4] = sum32_3(this.h[0], B, Ch);  this.h[0] = T;};RIPEMD160.prototype._digest = function digest(enc) {  if (enc === 'hex')    return utils.toHex32(this.h, 'little');  else    return utils.split32(this.h, 'little');};function f(j, x, y, z) {  if (j <= 15)    return x ^ y ^ z;  else if (j <= 31)    return (x & y) | ((~x) & z);  else if (j <= 47)    return (x | (~y)) ^ z;  else if (j <= 63)    return (x & z) | (y & (~z));  else    return x ^ (y | (~z));}function K(j) {  if (j <= 15)    return 0x00000000;  else if (j <= 31)    return 0x5a827999;  else if (j <= 47)    return 0x6ed9eba1;  else if (j <= 63)    return 0x8f1bbcdc;  else    return 0xa953fd4e;}function Kh(j) {  if (j <= 15)    return 0x50a28be6;  else if (j <= 31)    return 0x5c4dd124;  else if (j <= 47)    return 0x6d703ef3;  else if (j <= 63)    return 0x7a6d76e9;  else    return 0x00000000;}var r = [  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,  7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,  3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,  1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,  4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13];var rh = [  5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,  6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,  15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,  8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,  12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11];var s = [  11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,  7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,  11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,  11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,  9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6];var sh = [  8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,  9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,  9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,  15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,  8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11];
 |