summaryrefslogtreecommitdiff
path: root/std/util
diff options
context:
space:
mode:
authorKitson Kelly <me@kitsonkelly.com>2020-05-03 22:45:40 +1000
committerGitHub <noreply@github.com>2020-05-03 14:45:40 +0200
commit1560af2b6ecda4a020d5a1492b824e4bbf622db3 (patch)
tree5ad7ee9d45b34d5ae0b2a43bdf7ad0b883511514 /std/util
parent0f3e6e2eeaae882be83f5cb80388d0f4b183b474 (diff)
Move std/util/sha1.ts to ES private fields (#5053)
Diffstat (limited to 'std/util')
-rw-r--r--std/util/sha1.ts141
1 files changed, 70 insertions, 71 deletions
diff --git a/std/util/sha1.ts b/std/util/sha1.ts
index bb9103d27..f47192554 100644
--- a/std/util/sha1.ts
+++ b/std/util/sha1.ts
@@ -6,7 +6,6 @@
* @copyright Chen, Yi-Cyuan 2014-2017
* @license MIT
*/
-/*jslint bitwise: true */
const HEX_CHARS = "0123456789abcdef".split("");
const EXTRA = Uint32Array.of(-2147483648, 8388608, 32768, 128);
@@ -15,40 +14,40 @@ const SHIFT = Uint32Array.of(24, 16, 8, 0);
const blocks = new Uint32Array(80);
export class Sha1 {
- private _blocks: Uint32Array;
- private _block: number;
- private _start: number;
- private _bytes: number;
- private _hBytes: number;
- private _finalized: boolean;
- private _hashed: boolean;
-
- private _h0 = 0x67452301;
- private _h1 = 0xefcdab89;
- private _h2 = 0x98badcfe;
- private _h3 = 0x10325476;
- private _h4 = 0xc3d2e1f0;
- private _lastByteIndex = 0;
+ #blocks: Uint32Array;
+ #block: number;
+ #start: number;
+ #bytes: number;
+ #hBytes: number;
+ #finalized: boolean;
+ #hashed: boolean;
+
+ #h0 = 0x67452301;
+ #h1 = 0xefcdab89;
+ #h2 = 0x98badcfe;
+ #h3 = 0x10325476;
+ #h4 = 0xc3d2e1f0;
+ #lastByteIndex = 0;
constructor(sharedMemory = false) {
if (sharedMemory) {
- this._blocks = blocks.fill(0, 0, 17);
+ this.#blocks = blocks.fill(0, 0, 17);
} else {
- this._blocks = new Uint32Array(80);
+ this.#blocks = new Uint32Array(80);
}
- this._h0 = 0x67452301;
- this._h1 = 0xefcdab89;
- this._h2 = 0x98badcfe;
- this._h3 = 0x10325476;
- this._h4 = 0xc3d2e1f0;
+ this.#h0 = 0x67452301;
+ this.#h1 = 0xefcdab89;
+ this.#h2 = 0x98badcfe;
+ this.#h3 = 0x10325476;
+ this.#h4 = 0xc3d2e1f0;
- this._block = this._start = this._bytes = this._hBytes = 0;
- this._finalized = this._hashed = false;
+ this.#block = this.#start = this.#bytes = this.#hBytes = 0;
+ this.#finalized = this.#hashed = false;
}
update(data: string | ArrayBuffer | ArrayBufferView): Sha1 {
- if (this._finalized) {
+ if (this.#finalized) {
return this;
}
let notString = true;
@@ -64,14 +63,14 @@ export class Sha1 {
let code;
let index = 0;
let i;
- const start = this._start;
+ const start = this.#start;
const length = message.length || 0;
- const blocks = this._blocks;
+ const blocks = this.#blocks;
while (index < length) {
- if (this._hashed) {
- this._hashed = false;
- blocks[0] = this._block;
+ if (this.#hashed) {
+ this.#hashed = false;
+ blocks[0] = this.#block;
blocks.fill(0, 1, 17);
}
@@ -104,54 +103,54 @@ export class Sha1 {
}
}
- this._lastByteIndex = i;
- this._bytes += i - start;
+ this.#lastByteIndex = i;
+ this.#bytes += i - start;
if (i >= 64) {
- this._block = blocks[16];
- this._start = i - 64;
+ this.#block = blocks[16];
+ this.#start = i - 64;
this.hash();
- this._hashed = true;
+ this.#hashed = true;
} else {
- this._start = i;
+ this.#start = i;
}
}
- if (this._bytes > 4294967295) {
- this._hBytes += (this._bytes / 4294967296) >>> 0;
- this._bytes = this._bytes >>> 0;
+ if (this.#bytes > 4294967295) {
+ this.#hBytes += (this.#bytes / 4294967296) >>> 0;
+ this.#bytes = this.#bytes >>> 0;
}
return this;
}
finalize(): void {
- if (this._finalized) {
+ if (this.#finalized) {
return;
}
- this._finalized = true;
- const blocks = this._blocks;
- const i = this._lastByteIndex;
- blocks[16] = this._block;
+ this.#finalized = true;
+ const blocks = this.#blocks;
+ const i = this.#lastByteIndex;
+ blocks[16] = this.#block;
blocks[i >> 2] |= EXTRA[i & 3];
- this._block = blocks[16];
+ this.#block = blocks[16];
if (i >= 56) {
- if (!this._hashed) {
+ if (!this.#hashed) {
this.hash();
}
- blocks[0] = this._block;
+ blocks[0] = this.#block;
blocks.fill(0, 1, 17);
}
- blocks[14] = (this._hBytes << 3) | (this._bytes >>> 29);
- blocks[15] = this._bytes << 3;
+ blocks[14] = (this.#hBytes << 3) | (this.#bytes >>> 29);
+ blocks[15] = this.#bytes << 3;
this.hash();
}
hash(): void {
- let a = this._h0;
- let b = this._h1;
- let c = this._h2;
- let d = this._h3;
- let e = this._h4;
+ let a = this.#h0;
+ let b = this.#h1;
+ let c = this.#h2;
+ let d = this.#h3;
+ let e = this.#h4;
let f, j, t;
- const blocks = this._blocks;
+ const blocks = this.#blocks;
for (j = 16; j < 80; ++j) {
t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];
@@ -266,21 +265,21 @@ export class Sha1 {
c = (c << 30) | (c >>> 2);
}
- this._h0 = (this._h0 + a) >>> 0;
- this._h1 = (this._h1 + b) >>> 0;
- this._h2 = (this._h2 + c) >>> 0;
- this._h3 = (this._h3 + d) >>> 0;
- this._h4 = (this._h4 + e) >>> 0;
+ this.#h0 = (this.#h0 + a) >>> 0;
+ this.#h1 = (this.#h1 + b) >>> 0;
+ this.#h2 = (this.#h2 + c) >>> 0;
+ this.#h3 = (this.#h3 + d) >>> 0;
+ this.#h4 = (this.#h4 + e) >>> 0;
}
hex(): string {
this.finalize();
- const h0 = this._h0;
- const h1 = this._h1;
- const h2 = this._h2;
- const h3 = this._h3;
- const h4 = this._h4;
+ const h0 = this.#h0;
+ const h1 = this.#h1;
+ const h2 = this.#h2;
+ const h3 = this.#h3;
+ const h4 = this.#h4;
return (
HEX_CHARS[(h0 >> 28) & 0x0f] +
@@ -333,11 +332,11 @@ export class Sha1 {
digest(): number[] {
this.finalize();
- const h0 = this._h0;
- const h1 = this._h1;
- const h2 = this._h2;
- const h3 = this._h3;
- const h4 = this._h4;
+ const h0 = this.#h0;
+ const h1 = this.#h1;
+ const h2 = this.#h2;
+ const h3 = this.#h3;
+ const h4 = this.#h4;
return [
(h0 >> 24) & 0xff,
@@ -369,7 +368,7 @@ export class Sha1 {
arrayBuffer(): ArrayBuffer {
this.finalize();
- return Uint32Array.of(this._h0, this._h1, this._h2, this._h3, this._h4)
+ return Uint32Array.of(this.#h0, this.#h1, this.#h2, this.#h3, this.#h4)
.buffer;
}
}