mirror of
https://github.com/emn178/js-sha256.git
synced 2026-08-13 04:51:56 +08:00
Added
- support for web worker. - typescript types. #10 Changed - prevent webpack to require dependencies.
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
/node_modules/
|
||||||
|
/covreporter/
|
||||||
|
/tests/
|
||||||
|
.covignore
|
||||||
|
.travis.yml
|
||||||
|
.npmignore
|
||||||
|
bower.json
|
||||||
@@ -1,5 +1,13 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## v0.8.0 / 2017-11-19
|
||||||
|
### Added
|
||||||
|
- support for web worker.
|
||||||
|
- typescript types. #10
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- prevent webpack to require dependencies.
|
||||||
|
|
||||||
## v0.7.1 / 2017-10-31
|
## v0.7.1 / 2017-10-31
|
||||||
### Improved
|
### Improved
|
||||||
- performance of hBytes increment.
|
- performance of hBytes increment.
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "js-sha256",
|
"name": "js-sha256",
|
||||||
"version": "0.7.1",
|
"version": "0.8.0",
|
||||||
"main": ["src/sha256.js"],
|
"main": ["src/sha256.js"],
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"samples",
|
"samples",
|
||||||
|
|||||||
Vendored
+59
@@ -0,0 +1,59 @@
|
|||||||
|
type Message = string | number[] | ArrayBuffer | Uint8Array;
|
||||||
|
|
||||||
|
interface Hasher {
|
||||||
|
/**
|
||||||
|
* Update hash
|
||||||
|
*
|
||||||
|
* @param message The message you want to hash.
|
||||||
|
*/
|
||||||
|
update(message: Message): Hasher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return hash in hex string.
|
||||||
|
*/
|
||||||
|
hex(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return hash in hex string.
|
||||||
|
*/
|
||||||
|
toString(): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return hash in ArrayBuffer.
|
||||||
|
*/
|
||||||
|
arrayBuffer(): ArrayBuffer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return hash in integer array.
|
||||||
|
*/
|
||||||
|
digest(): number[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return hash in integer array.
|
||||||
|
*/
|
||||||
|
array(): number[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Hash {
|
||||||
|
/**
|
||||||
|
* Hash and return hex string.
|
||||||
|
*
|
||||||
|
* @param message The message you want to hash.
|
||||||
|
*/
|
||||||
|
(message: Message): string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a hash object.
|
||||||
|
*/
|
||||||
|
create(): Hasher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a hash object and hash message.
|
||||||
|
*
|
||||||
|
* @param message The message you want to hash.
|
||||||
|
*/
|
||||||
|
update(message: Message): Hasher;
|
||||||
|
}
|
||||||
|
|
||||||
|
export var sha256: Hash;
|
||||||
|
export var sha224: Hash;
|
||||||
Generated
+23
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "js-sha256",
|
"name": "js-sha256",
|
||||||
"version": "0.7.0",
|
"version": "0.8.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -16,6 +16,12 @@
|
|||||||
"integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
|
"integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"bindings": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"coffee-script": {
|
"coffee-script": {
|
||||||
"version": "1.12.7",
|
"version": "1.12.7",
|
||||||
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
|
"resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
|
||||||
@@ -199,6 +205,12 @@
|
|||||||
"integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=",
|
"integrity": "sha1-2JwhJMb9wTU9Zai3e/GqxLGTcIw=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"nan": {
|
||||||
|
"version": "2.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz",
|
||||||
|
"integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"optimist": {
|
"optimist": {
|
||||||
"version": "0.3.1",
|
"version": "0.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.1.tgz",
|
||||||
@@ -264,6 +276,16 @@
|
|||||||
"integrity": "sha1-NEDWTgRXWViVJEGOtkHGi7kNET4=",
|
"integrity": "sha1-NEDWTgRXWViVJEGOtkHGi7kNET4=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"webworker-threads": {
|
||||||
|
"version": "0.7.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/webworker-threads/-/webworker-threads-0.7.13.tgz",
|
||||||
|
"integrity": "sha1-yEsYtrokElu503NC5E3rgVFi+4M=",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"bindings": "1.3.0",
|
||||||
|
"nan": "2.8.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"wordwrap": {
|
"wordwrap": {
|
||||||
"version": "0.0.3",
|
"version": "0.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
|
||||||
|
|||||||
+3
-2
@@ -1,13 +1,14 @@
|
|||||||
{
|
{
|
||||||
"name": "js-sha256",
|
"name": "js-sha256",
|
||||||
"version": "0.7.1",
|
"version": "0.8.0",
|
||||||
"description": "A simple SHA-256 / SHA-224 hash function for JavaScript supports UTF-8 encoding.",
|
"description": "A simple SHA-256 / SHA-224 hash function for JavaScript supports UTF-8 encoding.",
|
||||||
"main": "src/sha256.js",
|
"main": "src/sha256.js",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"expect.js": "~0.3.1",
|
"expect.js": "~0.3.1",
|
||||||
"jscoverage": "~0.5.9",
|
"jscoverage": "~0.5.9",
|
||||||
"mocha": "~2.3.4",
|
"mocha": "~2.3.4",
|
||||||
"uglifyjs": "~2.4.10"
|
"uglifyjs": "~2.4.10",
|
||||||
|
"webworker-threads": "^0.7.13"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "mocha tests/node-test.js -r jscoverage",
|
"test": "mocha tests/node-test.js -r jscoverage",
|
||||||
|
|||||||
+60
-46
@@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* [js-sha256]{@link https://github.com/emn178/js-sha256}
|
* [js-sha256]{@link https://github.com/emn178/js-sha256}
|
||||||
*
|
*
|
||||||
* @version 0.7.1
|
* @version 0.8.0
|
||||||
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
||||||
* @copyright Chen, Yi-Cyuan 2014-2017
|
* @copyright Chen, Yi-Cyuan 2014-2017
|
||||||
* @license MIT
|
* @license MIT
|
||||||
@@ -11,14 +11,21 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var ERROR = 'input is invalid type';
|
var ERROR = 'input is invalid type';
|
||||||
var root = typeof window === 'object' ? window : {};
|
var WINDOW = typeof window === 'object';
|
||||||
|
var root = WINDOW ? window : {};
|
||||||
|
if (root.JS_SHA256_NO_WINDOW) {
|
||||||
|
WINDOW = false;
|
||||||
|
}
|
||||||
|
var WEB_WORKER = !WINDOW && typeof self === 'object';
|
||||||
var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
||||||
if (NODE_JS) {
|
if (NODE_JS) {
|
||||||
root = global;
|
root = global;
|
||||||
|
} else if (WEB_WORKER) {
|
||||||
|
root = self;
|
||||||
}
|
}
|
||||||
var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;
|
var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;
|
||||||
var AMD = typeof define === 'function' && define.amd;
|
var AMD = typeof define === 'function' && define.amd;
|
||||||
var ARRAY_BUFFER = typeof ArrayBuffer !== 'undefined';
|
var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
|
||||||
var HEX_CHARS = '0123456789abcdef'.split('');
|
var HEX_CHARS = '0123456789abcdef'.split('');
|
||||||
var EXTRA = [-2147483648, 8388608, 32768, 128];
|
var EXTRA = [-2147483648, 8388608, 32768, 128];
|
||||||
var SHIFT = [24, 16, 8, 0];
|
var SHIFT = [24, 16, 8, 0];
|
||||||
@@ -42,6 +49,12 @@
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
|
||||||
|
ArrayBuffer.isView = function (obj) {
|
||||||
|
return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
var createOutputMethod = function (outputType, is224) {
|
var createOutputMethod = function (outputType, is224) {
|
||||||
return function (message) {
|
return function (message) {
|
||||||
return new Sha256(is224, true).update(message)[outputType]();
|
return new Sha256(is224, true).update(message)[outputType]();
|
||||||
@@ -67,8 +80,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var nodeWrap = function (method, is224) {
|
var nodeWrap = function (method, is224) {
|
||||||
var crypto = require('crypto');
|
var crypto = eval("require('crypto')");
|
||||||
var Buffer = require('buffer').Buffer;
|
var Buffer = eval("require('buffer').Buffer");
|
||||||
var algorithm = is224 ? 'sha224' : 'sha256';
|
var algorithm = is224 ? 'sha224' : 'sha256';
|
||||||
var nodeMethod = function (message) {
|
var nodeMethod = function (message) {
|
||||||
if (typeof message === 'string') {
|
if (typeof message === 'string') {
|
||||||
@@ -114,9 +127,9 @@
|
|||||||
function Sha256(is224, sharedMemory) {
|
function Sha256(is224, sharedMemory) {
|
||||||
if (sharedMemory) {
|
if (sharedMemory) {
|
||||||
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
||||||
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
||||||
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
||||||
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
||||||
this.blocks = blocks;
|
this.blocks = blocks;
|
||||||
} else {
|
} else {
|
||||||
this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
|
||||||
@@ -152,32 +165,33 @@
|
|||||||
if (this.finalized) {
|
if (this.finalized) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var notString = typeof message !== 'string';
|
var notString, type = typeof message;
|
||||||
if (notString) {
|
if (type !== 'string') {
|
||||||
if (message === null || message === undefined) {
|
if (type === 'object') {
|
||||||
throw ERROR;
|
if (message === null) {
|
||||||
} else if (message.constructor === root.ArrayBuffer) {
|
throw ERROR;
|
||||||
message = new Uint8Array(message);
|
} else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
|
||||||
}
|
message = new Uint8Array(message);
|
||||||
}
|
} else if (!Array.isArray(message)) {
|
||||||
var length = message.length;
|
if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
|
||||||
if (notString) {
|
throw ERROR;
|
||||||
if (typeof length !== 'number' ||
|
}
|
||||||
!Array.isArray(message) &&
|
}
|
||||||
!(ARRAY_BUFFER && ArrayBuffer.isView(message))) {
|
} else {
|
||||||
throw ERROR;
|
throw ERROR;
|
||||||
}
|
}
|
||||||
|
notString = true;
|
||||||
}
|
}
|
||||||
var code, index = 0, i, blocks = this.blocks;
|
var code, index = 0, i, length = message.length, blocks = this.blocks;
|
||||||
|
|
||||||
while (index < length) {
|
while (index < length) {
|
||||||
if (this.hashed) {
|
if (this.hashed) {
|
||||||
this.hashed = false;
|
this.hashed = false;
|
||||||
blocks[0] = this.block;
|
blocks[0] = this.block;
|
||||||
blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
||||||
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
||||||
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
||||||
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notString) {
|
if (notString) {
|
||||||
@@ -239,9 +253,9 @@
|
|||||||
}
|
}
|
||||||
blocks[0] = this.block;
|
blocks[0] = this.block;
|
||||||
blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
blocks[16] = blocks[1] = blocks[2] = blocks[3] =
|
||||||
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
blocks[4] = blocks[5] = blocks[6] = blocks[7] =
|
||||||
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
blocks[8] = blocks[9] = blocks[10] = blocks[11] =
|
||||||
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
|
||||||
}
|
}
|
||||||
blocks[14] = this.hBytes << 3 | this.bytes >> 29;
|
blocks[14] = this.hBytes << 3 | this.bytes >> 29;
|
||||||
blocks[15] = this.bytes << 3;
|
blocks[15] = this.bytes << 3;
|
||||||
@@ -413,24 +427,10 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
function HmacSha256(key, is224, sharedMemory) {
|
function HmacSha256(key, is224, sharedMemory) {
|
||||||
var notString = typeof key !== 'string';
|
var i, type = typeof key;
|
||||||
if (notString) {
|
if (type === 'string') {
|
||||||
if (key === null || key === undefined) {
|
|
||||||
throw ERROR;
|
|
||||||
} else if (key.constructor === root.ArrayBuffer) {
|
|
||||||
key = new Uint8Array(key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var length = key.length;
|
|
||||||
if (notString) {
|
|
||||||
if (typeof length !== 'number' ||
|
|
||||||
!Array.isArray(key) &&
|
|
||||||
!(ARRAY_BUFFER && ArrayBuffer.isView(key))) {
|
|
||||||
throw ERROR;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
var bytes = [], length = key.length, index = 0, code;
|
var bytes = [], length = key.length, index = 0, code;
|
||||||
for (var i = 0; i < length; ++i) {
|
for (i = 0; i < length; ++i) {
|
||||||
code = key.charCodeAt(i);
|
code = key.charCodeAt(i);
|
||||||
if (code < 0x80) {
|
if (code < 0x80) {
|
||||||
bytes[index++] = code;
|
bytes[index++] = code;
|
||||||
@@ -450,6 +450,20 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
key = bytes;
|
key = bytes;
|
||||||
|
} else {
|
||||||
|
if (type === 'object') {
|
||||||
|
if (key === null) {
|
||||||
|
throw ERROR;
|
||||||
|
} else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {
|
||||||
|
key = new Uint8Array(key);
|
||||||
|
} else if (!Array.isArray(key)) {
|
||||||
|
if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {
|
||||||
|
throw ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key.length > 64) {
|
if (key.length > 64) {
|
||||||
@@ -457,7 +471,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
var oKeyPad = [], iKeyPad = [];
|
var oKeyPad = [], iKeyPad = [];
|
||||||
for (var i = 0; i < 64; ++i) {
|
for (i = 0; i < 64; ++i) {
|
||||||
var b = key[i] || 0;
|
var b = key[i] || 0;
|
||||||
oKeyPad[i] = 0x5c ^ b;
|
oKeyPad[i] = 0x5c ^ b;
|
||||||
iKeyPad[i] = 0x36 ^ b;
|
iKeyPad[i] = 0x36 ^ b;
|
||||||
|
|||||||
+15
-12
@@ -41,12 +41,6 @@
|
|||||||
'865cc329d317f6d9fdbd183a3c5cc5fd4c370d11f98abbbb404bceb1e6392c7e': ['中文', '中文'],
|
'865cc329d317f6d9fdbd183a3c5cc5fd4c370d11f98abbbb404bceb1e6392c7e': ['中文', '中文'],
|
||||||
'efeef87be5731506b69bb64a9898a456dd12c94834c36a4d8ba99e3db79ad7ed': ['aécio', 'aécio'],
|
'efeef87be5731506b69bb64a9898a456dd12c94834c36a4d8ba99e3db79ad7ed': ['aécio', 'aécio'],
|
||||||
'8a6e527049b9cfc7e1c84bcf356a1289c95da68a586c03de3327f3de0d3737fe': ['𠜎', '𠜎']
|
'8a6e527049b9cfc7e1c84bcf356a1289c95da68a586c03de3327f3de0d3737fe': ['𠜎', '𠜎']
|
||||||
},
|
|
||||||
'ArrayBuffer': {
|
|
||||||
'e48411262715c8370cd5e7bf8e82bef53bd53712d007f3429351843b77c7bb9b': [
|
|
||||||
new ArrayBuffer(0),
|
|
||||||
'Hi There'
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sha224_hmac: {
|
sha224_hmac: {
|
||||||
@@ -80,16 +74,25 @@
|
|||||||
'e2280928fe813aeb7fa59aa14dd5e589041bfdf91945d19d25b9f3db': ['中文', '中文'],
|
'e2280928fe813aeb7fa59aa14dd5e589041bfdf91945d19d25b9f3db': ['中文', '中文'],
|
||||||
'86c53dc054b16f6e006a254891bc9ff0da5df8e1a6faee3b0aaa732d': ['aécio', 'aécio'],
|
'86c53dc054b16f6e006a254891bc9ff0da5df8e1a6faee3b0aaa732d': ['aécio', 'aécio'],
|
||||||
'e9e5991bfb84506b105f800afac1599ff807bb8e20db8ffda48997b9': ['𠜎', '𠜎']
|
'e9e5991bfb84506b105f800afac1599ff807bb8e20db8ffda48997b9': ['𠜎', '𠜎']
|
||||||
},
|
|
||||||
'ArrayBuffer': {
|
|
||||||
'da8f94de91d62154b55ea4e8d6eb133f6d553bcd1f1ba205b9488945': [
|
|
||||||
new ArrayBuffer(0),
|
|
||||||
'Hi There'
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!(typeof JS_SHA256_NO_ARRAY_BUFFER === 'boolean' && JS_SHA256_NO_ARRAY_BUFFER)) {
|
||||||
|
testCases.sha256_hmac.ArrayBuffer = {
|
||||||
|
'e48411262715c8370cd5e7bf8e82bef53bd53712d007f3429351843b77c7bb9b': [
|
||||||
|
new ArrayBuffer(0),
|
||||||
|
'Hi There'
|
||||||
|
]
|
||||||
|
};
|
||||||
|
testCases.sha224_hmac.ArrayBuffer = {
|
||||||
|
'da8f94de91d62154b55ea4e8d6eb133f6d553bcd1f1ba205b9488945': [
|
||||||
|
new ArrayBuffer(0),
|
||||||
|
'Hi There'
|
||||||
|
]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
var errorTestCases = [null, undefined, { length: 0 }, 0, 1, false, true, NaN, Infinity, function () {}];
|
var errorTestCases = [null, undefined, { length: 0 }, 0, 1, false, true, NaN, Infinity, function () {}];
|
||||||
|
|
||||||
function runTestCases(name, algorithm) {
|
function runTestCases(name, algorithm) {
|
||||||
|
|||||||
+88
-29
@@ -1,47 +1,71 @@
|
|||||||
// Node.js env
|
|
||||||
expect = require('expect.js');
|
expect = require('expect.js');
|
||||||
sha256 = require('../src/sha256.js').sha256;
|
Worker = require('webworker-threads').Worker;
|
||||||
sha224 = require('../src/sha256.js').sha224;
|
|
||||||
require('./test.js');
|
|
||||||
require('./hmac-test.js');
|
|
||||||
|
|
||||||
delete require.cache[require.resolve('../src/sha256.js')]
|
function unset() {
|
||||||
delete require.cache[require.resolve('./test.js')]
|
delete require.cache[require.resolve('../src/sha256.js')];
|
||||||
delete require.cache[require.resolve('./hmac-test.js')]
|
delete require.cache[require.resolve('./test.js')];
|
||||||
sha256 = null;
|
delete require.cache[require.resolve('./hmac-test.js')];
|
||||||
sha224 = null;
|
sha256 = null;
|
||||||
|
sha224 = null;
|
||||||
|
BUFFER = undefined;
|
||||||
|
JS_SHA256_NO_WINDOW = undefined;
|
||||||
|
JS_SHA256_NO_NODE_JS = undefined;
|
||||||
|
JS_SHA256_NO_COMMON_JS = undefined;
|
||||||
|
JS_SHA256_NO_ARRAY_BUFFER = undefined;
|
||||||
|
JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW = undefined;
|
||||||
|
window = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
function requireToGlobal() {
|
||||||
|
sha256 = require('../src/sha256.js').sha256;
|
||||||
|
sha224 = require('../src/sha256.js').sha224;
|
||||||
|
}
|
||||||
|
|
||||||
|
function runCommonJsTest() {
|
||||||
|
requireToGlobal();
|
||||||
|
require('./test.js');
|
||||||
|
require('./hmac-test.js');
|
||||||
|
unset();
|
||||||
|
}
|
||||||
|
|
||||||
|
function runWindowTest() {
|
||||||
|
window = global;
|
||||||
|
require('../src/sha256.js');
|
||||||
|
require('./test.js');
|
||||||
|
require('./hmac-test.js');
|
||||||
|
unset();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Node.js env
|
||||||
|
BUFFER = true;
|
||||||
|
runCommonJsTest();
|
||||||
|
|
||||||
// Webpack browser env
|
// Webpack browser env
|
||||||
JS_SHA256_NO_NODE_JS = true;
|
JS_SHA256_NO_NODE_JS = true;
|
||||||
window = global;
|
window = global;
|
||||||
sha256 = require('../src/sha256.js').sha256;
|
runCommonJsTest();
|
||||||
sha224 = require('../src/sha256.js').sha224;
|
|
||||||
require('./test.js');
|
|
||||||
require('./hmac-test.js');
|
|
||||||
|
|
||||||
delete require.cache[require.resolve('../src/sha256.js')]
|
|
||||||
delete require.cache[require.resolve('./test.js')]
|
|
||||||
delete require.cache[require.resolve('./hmac-test.js')]
|
|
||||||
sha256 = null;
|
|
||||||
sha224 = null;
|
|
||||||
|
|
||||||
// browser env
|
// browser env
|
||||||
JS_SHA256_NO_NODE_JS = true;
|
JS_SHA256_NO_NODE_JS = true;
|
||||||
JS_SHA256_NO_COMMON_JS = true;
|
JS_SHA256_NO_COMMON_JS = true;
|
||||||
window = global;
|
runWindowTest();
|
||||||
require('../src/sha256.js');
|
|
||||||
require('./test.js');
|
|
||||||
require('./hmac-test.js');
|
|
||||||
|
|
||||||
delete require.cache[require.resolve('../src/sha256.js')]
|
// browser env and no array buffer
|
||||||
delete require.cache[require.resolve('./test.js')]
|
JS_SHA256_NO_NODE_JS = true;
|
||||||
delete require.cache[require.resolve('./hmac-test.js')]
|
JS_SHA256_NO_COMMON_JS = true;
|
||||||
sha256 = null;
|
JS_SHA256_NO_ARRAY_BUFFER = true;
|
||||||
sha224 = null;
|
runWindowTest();
|
||||||
|
|
||||||
|
// browser env and no isView
|
||||||
|
JS_SHA256_NO_NODE_JS = true;
|
||||||
|
JS_SHA256_NO_COMMON_JS = true;
|
||||||
|
JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW = true;
|
||||||
|
runWindowTest();
|
||||||
|
|
||||||
// browser AMD
|
// browser AMD
|
||||||
JS_SHA256_NO_NODE_JS = true;
|
JS_SHA256_NO_NODE_JS = true;
|
||||||
JS_SHA256_NO_COMMON_JS = true;
|
JS_SHA256_NO_COMMON_JS = true;
|
||||||
|
JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW = false;
|
||||||
window = global;
|
window = global;
|
||||||
define = function (func) {
|
define = function (func) {
|
||||||
sha256 = func();
|
sha256 = func();
|
||||||
@@ -52,3 +76,38 @@ define = function (func) {
|
|||||||
define.amd = true;
|
define.amd = true;
|
||||||
|
|
||||||
require('../src/sha256.js');
|
require('../src/sha256.js');
|
||||||
|
unset();
|
||||||
|
|
||||||
|
// webworker
|
||||||
|
WORKER = 'tests/worker.js';
|
||||||
|
SOURCE = 'src/sha256.js';
|
||||||
|
|
||||||
|
require('./worker-test.js');
|
||||||
|
|
||||||
|
delete require.cache[require.resolve('./worker-test.js')];
|
||||||
|
|
||||||
|
// cover webworker
|
||||||
|
JS_SHA256_NO_WINDOW = true;
|
||||||
|
JS_SHA256_NO_NODE_JS = true;
|
||||||
|
WORKER = './worker.js';
|
||||||
|
SOURCE = '../src/sha256.js';
|
||||||
|
window = global;
|
||||||
|
self = global;
|
||||||
|
|
||||||
|
Worker = function (file) {
|
||||||
|
require(file);
|
||||||
|
currentWorker = this;
|
||||||
|
|
||||||
|
this.postMessage = function (data) {
|
||||||
|
onmessage({data: data});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
postMessage = function (data) {
|
||||||
|
currentWorker.onmessage({data: data});
|
||||||
|
}
|
||||||
|
|
||||||
|
importScripts = function () {};
|
||||||
|
|
||||||
|
requireToGlobal();
|
||||||
|
require('./worker-test.js');
|
||||||
|
|||||||
+29
-27
@@ -40,18 +40,6 @@
|
|||||||
'182889f925ae4e5cc37118ded6ed87f7bdc7cab5ec5e78faef2e50048999473f': [211, 212],
|
'182889f925ae4e5cc37118ded6ed87f7bdc7cab5ec5e78faef2e50048999473f': [211, 212],
|
||||||
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103],
|
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103],
|
||||||
'74b51c6911f9a8b5e7c499effe7604e43b672166818873c27752c248de434841': [48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55]
|
'74b51c6911f9a8b5e7c499effe7604e43b672166818873c27752c248de434841': [48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55]
|
||||||
},
|
|
||||||
|
|
||||||
'Uint8Array': {
|
|
||||||
'182889f925ae4e5cc37118ded6ed87f7bdc7cab5ec5e78faef2e50048999473f': new Uint8Array([211, 212]),
|
|
||||||
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
|
||||||
},
|
|
||||||
'Int8Array': {
|
|
||||||
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
|
||||||
},
|
|
||||||
'ArrayBuffer': {
|
|
||||||
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855': new ArrayBuffer(0),
|
|
||||||
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d': new ArrayBuffer(1),
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
sha224: {
|
sha224: {
|
||||||
@@ -83,34 +71,48 @@
|
|||||||
'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f': [],
|
'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f': [],
|
||||||
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103],
|
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103],
|
||||||
'16ee1b101fe0e0d8dd156d598931ec19d75b0f8dc0a0455733c168c8': [48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55]
|
'16ee1b101fe0e0d8dd156d598931ec19d75b0f8dc0a0455733c168c8': [48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55, 56, 48, 49, 50, 51, 52, 53, 54, 55]
|
||||||
},
|
|
||||||
'Uint8Array': {
|
|
||||||
'e17541396a3ecd1cd5a2b968b84e597e8eae3b0ea3127963bf48dd3b': new Uint8Array([211, 212]),
|
|
||||||
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
|
||||||
},
|
|
||||||
'Int8Array': {
|
|
||||||
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
|
||||||
},
|
|
||||||
'ArrayBuffer': {
|
|
||||||
'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f': new ArrayBuffer(0),
|
|
||||||
'fff9292b4201617bdc4d3053fce02734166a683d7d858a7f5f59b073': new ArrayBuffer(1),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
var errorTestCases = [null, undefined, { length: 0 }, 0, 1, false, true, NaN, Infinity, function () {}];
|
if (!(typeof JS_SHA256_NO_ARRAY_BUFFER === 'boolean' && JS_SHA256_NO_ARRAY_BUFFER)) {
|
||||||
|
testCases.sha256.Uint8Array = {
|
||||||
|
'182889f925ae4e5cc37118ded6ed87f7bdc7cab5ec5e78faef2e50048999473f': new Uint8Array([211, 212]),
|
||||||
|
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
||||||
|
};
|
||||||
|
testCases.sha256.Int8Array = {
|
||||||
|
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
||||||
|
};
|
||||||
|
testCases.sha256.ArrayBuffer = {
|
||||||
|
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855': new ArrayBuffer(0),
|
||||||
|
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d': new ArrayBuffer(1)
|
||||||
|
};
|
||||||
|
testCases.sha224.Uint8Array = {
|
||||||
|
'e17541396a3ecd1cd5a2b968b84e597e8eae3b0ea3127963bf48dd3b': new Uint8Array([211, 212]),
|
||||||
|
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
||||||
|
};
|
||||||
|
testCases.sha224.Int8Array = {
|
||||||
|
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
||||||
|
};
|
||||||
|
testCases.sha224.ArrayBuffer = {
|
||||||
|
'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f': new ArrayBuffer(0),
|
||||||
|
'fff9292b4201617bdc4d3053fce02734166a683d7d858a7f5f59b073': new ArrayBuffer(1),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof process == 'object') {
|
if (typeof BUFFER === 'boolean' && BUFFER) {
|
||||||
testCases.sha256['Buffer'] = {
|
testCases.sha256.Buffer = {
|
||||||
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855': new Buffer(0),
|
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855': new Buffer(0),
|
||||||
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': new Buffer(new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]))
|
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': new Buffer(new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]))
|
||||||
};
|
};
|
||||||
testCases.sha224['Buffer'] = {
|
testCases.sha224.Buffer = {
|
||||||
'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f': new Buffer(0),
|
'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f': new Buffer(0),
|
||||||
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': new Buffer(new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]))
|
'730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525': new Buffer(new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var errorTestCases = [null, undefined, { length: 0 }, 0, 1, false, true, NaN, Infinity, function () {}];
|
||||||
|
|
||||||
function runTestCases(name, algorithm) {
|
function runTestCases(name, algorithm) {
|
||||||
var methods = [
|
var methods = [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
(function (Worker, WORKER, SOURCE) {
|
||||||
|
var cases = {
|
||||||
|
'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855': '',
|
||||||
|
'd7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592': 'The quick brown fox jumps over the lazy dog',
|
||||||
|
'ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c': 'The quick brown fox jumps over the lazy dog.'
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('#sha256', function () {
|
||||||
|
Object.keys(cases).forEach(function (hash) {
|
||||||
|
it('should be equal', function (done) {
|
||||||
|
var worker = new Worker(WORKER);
|
||||||
|
worker.onmessage = function(event) {
|
||||||
|
expect(event.data).to.be(hash);
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
worker.postMessage(SOURCE);
|
||||||
|
worker.postMessage(cases[hash]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})(Worker, WORKER, SOURCE);
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>SHA256</title>
|
||||||
|
<link rel="stylesheet" href="../node_modules/mocha/mocha.css">
|
||||||
|
<script src="../node_modules/mocha/mocha.js"></script>
|
||||||
|
<script src="../node_modules/expect.js/index.js"></script>
|
||||||
|
<script src="../src/sha256.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mocha"></div>
|
||||||
|
<script>
|
||||||
|
WORKER = 'worker.js';
|
||||||
|
SOURCE = '../src/sha256.js';
|
||||||
|
mocha.setup('bdd');
|
||||||
|
</script>
|
||||||
|
<script src="worker-test.js"></script>
|
||||||
|
<script>
|
||||||
|
mocha.checkLeaks();
|
||||||
|
mocha.run();
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
var imported = false;
|
||||||
|
onmessage = function(e) {
|
||||||
|
if (imported) {
|
||||||
|
postMessage(sha256(e.data));
|
||||||
|
if (typeof exports !== 'undefined') {
|
||||||
|
imported = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imported = true;
|
||||||
|
importScripts(e.data);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user