react / wstein / node_modules / browserify / node_modules / crypto-browserify / node_modules / create-ecdh / node_modules / elliptic / node_modules / hash.js / lib / hash / utils.js
80642 viewsvar utils = exports;1var inherits = require('inherits');23function toArray(msg, enc) {4if (Array.isArray(msg))5return msg.slice();6if (!msg)7return [];8var res = [];9if (typeof msg === 'string') {10if (!enc) {11for (var i = 0; i < msg.length; i++) {12var c = msg.charCodeAt(i);13var hi = c >> 8;14var lo = c & 0xff;15if (hi)16res.push(hi, lo);17else18res.push(lo);19}20} else if (enc === 'hex') {21msg = msg.replace(/[^a-z0-9]+/ig, '');22if (msg.length % 2 !== 0)23msg = '0' + msg;24for (var i = 0; i < msg.length; i += 2)25res.push(parseInt(msg[i] + msg[i + 1], 16));26}27} else {28for (var i = 0; i < msg.length; i++)29res[i] = msg[i] | 0;30}31return res;32}33utils.toArray = toArray;3435function toHex(msg) {36var res = '';37for (var i = 0; i < msg.length; i++)38res += zero2(msg[i].toString(16));39return res;40}41utils.toHex = toHex;4243function htonl(w) {44var res = (w >>> 24) |45((w >>> 8) & 0xff00) |46((w << 8) & 0xff0000) |47((w & 0xff) << 24);48return res >>> 0;49}50utils.htonl = htonl;5152function toHex32(msg, endian) {53var res = '';54for (var i = 0; i < msg.length; i++) {55var w = msg[i];56if (endian === 'little')57w = htonl(w);58res += zero8(w.toString(16));59}60return res;61}62utils.toHex32 = toHex32;6364function zero2(word) {65if (word.length === 1)66return '0' + word;67else68return word;69}70utils.zero2 = zero2;7172function zero8(word) {73if (word.length === 7)74return '0' + word;75else if (word.length === 6)76return '00' + word;77else if (word.length === 5)78return '000' + word;79else if (word.length === 4)80return '0000' + word;81else if (word.length === 3)82return '00000' + word;83else if (word.length === 2)84return '000000' + word;85else if (word.length === 1)86return '0000000' + word;87else88return word;89}90utils.zero8 = zero8;9192function join32(msg, start, end, endian) {93var len = end - start;94assert(len % 4 === 0);95var res = new Array(len / 4);96for (var i = 0, k = start; i < res.length; i++, k += 4) {97var w;98if (endian === 'big')99w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];100else101w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];102res[i] = w >>> 0;103}104return res;105}106utils.join32 = join32;107108function split32(msg, endian) {109var res = new Array(msg.length * 4);110for (var i = 0, k = 0; i < msg.length; i++, k += 4) {111var m = msg[i];112if (endian === 'big') {113res[k] = m >>> 24;114res[k + 1] = (m >>> 16) & 0xff;115res[k + 2] = (m >>> 8) & 0xff;116res[k + 3] = m & 0xff;117} else {118res[k + 3] = m >>> 24;119res[k + 2] = (m >>> 16) & 0xff;120res[k + 1] = (m >>> 8) & 0xff;121res[k] = m & 0xff;122}123}124return res;125}126utils.split32 = split32;127128function rotr32(w, b) {129return (w >>> b) | (w << (32 - b));130}131utils.rotr32 = rotr32;132133function rotl32(w, b) {134return (w << b) | (w >>> (32 - b));135}136utils.rotl32 = rotl32;137138function sum32(a, b) {139return (a + b) >>> 0;140}141utils.sum32 = sum32;142143function sum32_3(a, b, c) {144return (a + b + c) >>> 0;145}146utils.sum32_3 = sum32_3;147148function sum32_4(a, b, c, d) {149return (a + b + c + d) >>> 0;150}151utils.sum32_4 = sum32_4;152153function sum32_5(a, b, c, d, e) {154return (a + b + c + d + e) >>> 0;155}156utils.sum32_5 = sum32_5;157158function assert(cond, msg) {159if (!cond)160throw new Error(msg || 'Assertion failed');161}162utils.assert = assert;163164utils.inherits = inherits;165166function sum64(buf, pos, ah, al) {167var bh = buf[pos];168var bl = buf[pos + 1];169170var lo = (al + bl) >>> 0;171var hi = (lo < al ? 1 : 0) + ah + bh;172buf[pos] = hi >>> 0;173buf[pos + 1] = lo;174}175exports.sum64 = sum64;176177function sum64_hi(ah, al, bh, bl) {178var lo = (al + bl) >>> 0;179var hi = (lo < al ? 1 : 0) + ah + bh;180return hi >>> 0;181};182exports.sum64_hi = sum64_hi;183184function sum64_lo(ah, al, bh, bl) {185var lo = al + bl;186return lo >>> 0;187};188exports.sum64_lo = sum64_lo;189190function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {191var carry = 0;192var lo = al;193lo = (lo + bl) >>> 0;194carry += lo < al ? 1 : 0;195lo = (lo + cl) >>> 0;196carry += lo < cl ? 1 : 0;197lo = (lo + dl) >>> 0;198carry += lo < dl ? 1 : 0;199200var hi = ah + bh + ch + dh + carry;201return hi >>> 0;202};203exports.sum64_4_hi = sum64_4_hi;204205function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {206var lo = al + bl + cl + dl;207return lo >>> 0;208};209exports.sum64_4_lo = sum64_4_lo;210211function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {212var carry = 0;213var lo = al;214lo = (lo + bl) >>> 0;215carry += lo < al ? 1 : 0;216lo = (lo + cl) >>> 0;217carry += lo < cl ? 1 : 0;218lo = (lo + dl) >>> 0;219carry += lo < dl ? 1 : 0;220lo = (lo + el) >>> 0;221carry += lo < el ? 1 : 0;222223var hi = ah + bh + ch + dh + eh + carry;224return hi >>> 0;225};226exports.sum64_5_hi = sum64_5_hi;227228function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {229var lo = al + bl + cl + dl + el;230231return lo >>> 0;232};233exports.sum64_5_lo = sum64_5_lo;234235function rotr64_hi(ah, al, num) {236var r = (al << (32 - num)) | (ah >>> num);237return r >>> 0;238};239exports.rotr64_hi = rotr64_hi;240241function rotr64_lo(ah, al, num) {242var r = (ah << (32 - num)) | (al >>> num);243return r >>> 0;244};245exports.rotr64_lo = rotr64_lo;246247function shr64_hi(ah, al, num) {248return ah >>> num;249};250exports.shr64_hi = shr64_hi;251252function shr64_lo(ah, al, num) {253var r = (ah << (32 - num)) | (al >>> num);254return r >>> 0;255};256exports.shr64_lo = shr64_lo;257258259