aboutsummaryrefslogtreecommitdiff
path: root/node_modules/create-hash/helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/create-hash/helpers.js')
-rw-r--r--node_modules/create-hash/helpers.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/node_modules/create-hash/helpers.js b/node_modules/create-hash/helpers.js
new file mode 100644
index 000000000..33b463dc6
--- /dev/null
+++ b/node_modules/create-hash/helpers.js
@@ -0,0 +1,34 @@
+'use strict';
+var intSize = 4;
+var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0);
+var chrsz = 8;
+
+function toArray(buf, bigEndian) {
+ if ((buf.length % intSize) !== 0) {
+ var len = buf.length + (intSize - (buf.length % intSize));
+ buf = Buffer.concat([buf, zeroBuffer], len);
+ }
+
+ var arr = [];
+ var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE;
+ for (var i = 0; i < buf.length; i += intSize) {
+ arr.push(fn.call(buf, i));
+ }
+ return arr;
+}
+
+function toBuffer(arr, size, bigEndian) {
+ var buf = new Buffer(size);
+ var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE;
+ for (var i = 0; i < arr.length; i++) {
+ fn.call(buf, arr[i], i * 4, true);
+ }
+ return buf;
+}
+
+function hash(buf, fn, hashSize, bigEndian) {
+ if (!Buffer.isBuffer(buf)) buf = new Buffer(buf);
+ var arr = fn(toArray(buf, bigEndian), buf.length * chrsz);
+ return toBuffer(arr, hashSize, bigEndian);
+}
+exports.hash = hash; \ No newline at end of file