mirror of
https://github.com/Qortal/qortal-ui.git
synced 2025-02-11 17:55:51 +00:00
180 lines
5.9 KiB
JavaScript
180 lines
5.9 KiB
JavaScript
// "Generated from Java with JSweet 1.0.0 - http://www.jsweet.org";
|
|
// BAD IMPLEMENTATION. BROKEN, BUT MUST KEEP CAUSE OF NETWORK
|
|
// == Convert to ES6 module for export == //
|
|
const RIPEMD160 = (function () {
|
|
function RIPEMD160() {
|
|
this.MDbuf = [];
|
|
this.MDbuf[0] = 1732584193;
|
|
this.MDbuf[1] = -271733879;
|
|
this.MDbuf[2] = -1732584194;
|
|
this.MDbuf[3] = 271733878;
|
|
this.MDbuf[4] = -1009589776;
|
|
this.working = new Int32Array(16);
|
|
|
|
this.working_ptr = 0;
|
|
this.msglen = 0;
|
|
}
|
|
RIPEMD160.prototype.reset = function () {
|
|
this.MDbuf = [];
|
|
this.MDbuf[0] = 1732584193;
|
|
this.MDbuf[1] = -271733879;
|
|
this.MDbuf[2] = -1732584194;
|
|
this.MDbuf[3] = 271733878;
|
|
this.MDbuf[4] = -1009589776;
|
|
this.working = new Int32Array(16);
|
|
this.working_ptr = 0;
|
|
this.msglen = 0;
|
|
};
|
|
RIPEMD160.prototype.compress = function (X) {
|
|
var index = 0;
|
|
var a;
|
|
var b;
|
|
var c;
|
|
var d;
|
|
var e;
|
|
var A;
|
|
var B;
|
|
var C;
|
|
var D;
|
|
var E;
|
|
var temp;
|
|
var s;
|
|
A = a = this.MDbuf[0];
|
|
B = b = this.MDbuf[1];
|
|
C = c = this.MDbuf[2];
|
|
D = d = this.MDbuf[3];
|
|
E = e = this.MDbuf[4];
|
|
for (; index < 16; index++) {
|
|
temp = a + (b ^ c ^ d) + X[RIPEMD160.IndexArray[0][index]];
|
|
a = e;
|
|
e = d;
|
|
d = (c << 10) | (c >>> 22);
|
|
c = b;
|
|
s = RIPEMD160.ArgArray[0][index];
|
|
b = ((temp << s) | (temp >>> (32 - s))) + a;
|
|
temp = A + (B ^ (C | ~D)) + X[RIPEMD160.IndexArray[1][index]] + 1352829926;
|
|
A = E;
|
|
E = D;
|
|
D = (C << 10) | (C >>> 22);
|
|
C = B;
|
|
s = RIPEMD160.ArgArray[1][index];
|
|
B = ((temp << s) | (temp >>> (32 - s))) + A;
|
|
}
|
|
for (; index < 32; index++) {
|
|
temp = a + ((b & c) | (~b & d)) + X[RIPEMD160.IndexArray[0][index]] + 1518500249;
|
|
a = e;
|
|
e = d;
|
|
d = (c << 10) | (c >>> 22);
|
|
c = b;
|
|
s = RIPEMD160.ArgArray[0][index];
|
|
b = ((temp << s) | (temp >>> (32 - s))) + a;
|
|
temp = A + ((B & D) | (C & ~D)) + X[RIPEMD160.IndexArray[1][index]] + 1548603684;
|
|
A = E;
|
|
E = D;
|
|
D = (C << 10) | (C >>> 22);
|
|
C = B;
|
|
s = RIPEMD160.ArgArray[1][index];
|
|
B = ((temp << s) | (temp >>> (32 - s))) + A;
|
|
}
|
|
for (; index < 48; index++) {
|
|
temp = a + ((b | ~c) ^ d) + X[RIPEMD160.IndexArray[0][index]] + 1859775393;
|
|
a = e;
|
|
e = d;
|
|
d = (c << 10) | (c >>> 22);
|
|
c = b;
|
|
s = RIPEMD160.ArgArray[0][index];
|
|
b = ((temp << s) | (temp >>> (32 - s))) + a;
|
|
temp = A + ((B | ~C) ^ D) + X[RIPEMD160.IndexArray[1][index]] + 1836072691;
|
|
A = E;
|
|
E = D;
|
|
D = (C << 10) | (C >>> 22);
|
|
C = B;
|
|
s = RIPEMD160.ArgArray[1][index];
|
|
B = ((temp << s) | (temp >>> (32 - s))) + A;
|
|
}
|
|
for (; index < 64; index++) {
|
|
temp = a + ((b & d) | (c & ~d)) + X[RIPEMD160.IndexArray[0][index]] + -1894007588;
|
|
a = e;
|
|
e = d;
|
|
d = (c << 10) | (c >>> 22);
|
|
c = b;
|
|
s = RIPEMD160.ArgArray[0][index];
|
|
b = ((temp << s) | (temp >>> (32 - s))) + a;
|
|
temp = A + ((B & C) | (~B & D)) + X[RIPEMD160.IndexArray[1][index]] + 2053994217;
|
|
A = E;
|
|
E = D;
|
|
D = (C << 10) | (C >>> 22);
|
|
C = B;
|
|
s = RIPEMD160.ArgArray[1][index];
|
|
B = ((temp << s) | (temp >>> (32 - s))) + A;
|
|
}
|
|
for (; index < 80; index++) {
|
|
temp = a + (b ^ (c | ~d)) + X[RIPEMD160.IndexArray[0][index]] + -1454113458;
|
|
a = e;
|
|
e = d;
|
|
d = (c << 10) | (c >>> 22);
|
|
c = b;
|
|
s = RIPEMD160.ArgArray[0][index];
|
|
b = ((temp << s) | (temp >>> (32 - s))) + a;
|
|
temp = A + (B ^ C ^ D) + X[RIPEMD160.IndexArray[1][index]];
|
|
A = E;
|
|
E = D;
|
|
D = (C << 10) | (C >>> 22);
|
|
C = B;
|
|
s = RIPEMD160.ArgArray[1][index];
|
|
B = ((temp << s) | (temp >>> (32 - s))) + A;
|
|
}
|
|
D += c + this.MDbuf[1];
|
|
this.MDbuf[1] = this.MDbuf[2] + d + E;
|
|
this.MDbuf[2] = this.MDbuf[3] + e + A;
|
|
this.MDbuf[3] = this.MDbuf[4] + a + B;
|
|
this.MDbuf[4] = this.MDbuf[0] + b + C;
|
|
this.MDbuf[0] = D;
|
|
};
|
|
RIPEMD160.prototype.MDfinish = function (array, lswlen, mswlen) {
|
|
var X = array;
|
|
X[(lswlen >> 2) & 15] ^= 1 << (((lswlen & 3) << 3) + 7);
|
|
if (((lswlen & 63) > 55)) {
|
|
this.compress(X);
|
|
for (var i = 0; i < 14; i++) {
|
|
X[i] = 0;
|
|
}
|
|
}
|
|
X[14] = lswlen << 3;
|
|
X[15] = (lswlen >> 29) | (mswlen << 3);
|
|
this.compress(X);
|
|
};
|
|
RIPEMD160.prototype.update = function (input) {
|
|
for (var i = 0; i < input.length; i++) {
|
|
this.working[this.working_ptr >> 2] ^= input[i] << ((this.working_ptr & 3) << 3);
|
|
this.working_ptr++;
|
|
if ((this.working_ptr == 64)) {
|
|
this.compress(this.working);
|
|
for (var j = 0; j < 16; j++) {
|
|
this.working[j] = 0;
|
|
}
|
|
this.working_ptr = 0;
|
|
}
|
|
}
|
|
this.msglen += input.length;
|
|
};
|
|
RIPEMD160.prototype.digestBin = function () {
|
|
this.MDfinish(this.working, this.msglen, 0);
|
|
//var res = new Int8Array();
|
|
var res = [];
|
|
for (var i = 0; i < 20; i++) {
|
|
res[i] = ((this.MDbuf[i >> 2] >>> ((i & 3) << 3)) & 255);
|
|
}
|
|
return new Uint8Array(res);
|
|
};
|
|
RIPEMD160.prototype.digest = function (input) {
|
|
this.update(new Int8Array(input));
|
|
return this.digestBin();
|
|
};
|
|
RIPEMD160.ArgArray = [[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], [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]];
|
|
RIPEMD160.IndexArray = [[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], [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]];
|
|
return RIPEMD160;
|
|
})();
|
|
|
|
export default RIPEMD160
|