define(["require", "exports", "../digital-signature/signature/pdf-accumulator"], function (require, exports, pdf_accumulator_1) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var _Sha1 = (function () {
function _Sha1() {
}
_Sha1.prototype._startChunkedConversion = function (outputSink) {
return new pdf_accumulator_1._PdfNativeHashInput(this, outputSink);
};
_Sha1.prototype._rotateLeft = function (x, n) {
return (x << n) | (x >>> (32 - n));
};
_Sha1.prototype._hash = function (data, offset, length) {
var paddedLength = ((length + 9 + 63) >> 6) << 6;
var padded = new Uint8Array(paddedLength);
var i = 0;
for (; i < length; ++i) {
padded[i] = data[offset++];
}
padded[i++] = 0x80;
var bitLength = length * 8;
padded[paddedLength - 4] = (bitLength >>> 24) & 0xff;
padded[paddedLength - 3] = (bitLength >>> 16) & 0xff;
padded[paddedLength - 2] = (bitLength >>> 8) & 0xff;
padded[paddedLength - 1] = bitLength & 0xff;
var h0 = 0x67452301;
var h1 = 0xefcdab89;
var h2 = 0x98badcfe;
var h3 = 0x10325476;
var h4 = 0xc3d2e1f0;
var w = new Uint32Array(80);
for (var j = 0; j < paddedLength; j += 64) {
for (var k = 0; k < 16; ++k) {
var idx = j + k * 4;
w[k] = (padded[idx] << 24) | (padded[idx + 1] << 16) | (padded[idx + 2] << 8) | padded[idx + 3];
}
for (var k = 16; k < 80; ++k) {
w[k] = this._rotateLeft(w[k - 3] ^ w[k - 8] ^ w[k - 14] ^ w[k - 16], 1);
}
var a = h0;
var b = h1;
var c = h2;
var d = h3;
var e = h4;
for (var k = 0; k < 80; ++k) {
var f = void 0;
var kConst = void 0;
if (k < 20) {
f = (b & c) | (~b & d);
kConst = 0x5a827999;
}
else if (k < 40) {
f = b ^ c ^ d;
kConst = 0x6ed9eba1;
}
else if (k < 60) {
f = (b & c) | (b & d) | (c & d);
kConst = 0x8f1bbcdc;
}
else {
f = b ^ c ^ d;
kConst = 0xca62c1d6;
}
var temp = (this._rotateLeft(a, 5) + f + e + kConst + w[k]) >>> 0;
e = d;
d = c;
c = this._rotateLeft(b, 30);
b = a;
a = temp;
}
h0 = (h0 + a) >>> 0;
h1 = (h1 + b) >>> 0;
h2 = (h2 + c) >>> 0;
h3 = (h3 + d) >>> 0;
h4 = (h4 + e) >>> 0;
}
return new Uint8Array([
(h0 >>> 24) & 0xff, (h0 >>> 16) & 0xff, (h0 >>> 8) & 0xff, h0 & 0xff,
(h1 >>> 24) & 0xff, (h1 >>> 16) & 0xff, (h1 >>> 8) & 0xff, h1 & 0xff,
(h2 >>> 24) & 0xff, (h2 >>> 16) & 0xff, (h2 >>> 8) & 0xff, h2 & 0xff,
(h3 >>> 24) & 0xff, (h3 >>> 16) & 0xff, (h3 >>> 8) & 0xff, h3 & 0xff,
(h4 >>> 24) & 0xff, (h4 >>> 16) & 0xff, (h4 >>> 8) & 0xff, h4 & 0xff
]);
};
return _Sha1;
}());
exports._Sha1 = _Sha1;
});
|