Compare commits
No commits in common. 'master' and 'v0.2.0' have entirely different histories.
@ -1,2 +1 @@
|
|||||||
/node_modules/
|
|
||||||
/tests/
|
/tests/
|
||||||
|
@ -1,3 +1 @@
|
|||||||
/node_modules/
|
node_modules/
|
||||||
/coverage/
|
|
||||||
/.nyc_output/
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
/node_modules/
|
|
||||||
/coverage/
|
|
||||||
/.nyc_output/
|
|
||||||
/tests/
|
|
||||||
.covignore
|
|
||||||
.travis.yml
|
|
||||||
.npmignore
|
|
||||||
bower.json
|
|
@ -1,10 +1,13 @@
|
|||||||
language: node_js
|
language: node_js
|
||||||
node_js:
|
node_js:
|
||||||
- "6.11.4"
|
- "0.11"
|
||||||
- "8.6.0"
|
- "0.10"
|
||||||
|
- "0.8"
|
||||||
before_install:
|
before_install:
|
||||||
- npm install coveralls
|
- npm install mocha -g
|
||||||
after_success: npm run coveralls
|
- npm install coveralls -g
|
||||||
|
- npm install mocha-lcov-reporter -g
|
||||||
|
script: npm run-script coveralls
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
@ -1,76 +1,25 @@
|
|||||||
# Change Log
|
# v0.2.0 / 2015-02-16
|
||||||
|
|
||||||
## v0.7.0 / 2024-01-24
|
* Support byte array input.
|
||||||
### Added
|
* Remove ascii parameter.
|
||||||
- TypeScript interfaces. #6, #9
|
* Improve performance.
|
||||||
- HMAC feature.
|
* Add test cases.
|
||||||
- support for web worker. #14
|
|
||||||
|
|
||||||
### Fixed
|
# v0.1.3 / 2015-01-07
|
||||||
- deprecated `new Buffer`, replace with `Buffer.from`. #10
|
|
||||||
- dependencies and security issues.
|
|
||||||
- refactor: simplify formatMessage internal logic.
|
|
||||||
- Generates incorrect hash in some cases.
|
|
||||||
|
|
||||||
### Changed
|
* Add bower package.
|
||||||
- remove `eval` and use `require` directly. #8
|
* Fixed JSHint warnings.
|
||||||
- throw error by Error oject.
|
* Add travis.
|
||||||
- throw error if update after finalize
|
* Add coveralls.
|
||||||
- use unsigned right shift.
|
|
||||||
|
|
||||||
## v0.6.0 / 2017-12-21
|
# v0.1.2 / 2014-07-27
|
||||||
### Fixed
|
|
||||||
- incorrect result when first bit is 1 of bytes.
|
|
||||||
|
|
||||||
### Changed
|
Fixed accents bug
|
||||||
- prevent webpack to require dependencies.
|
|
||||||
|
|
||||||
## v0.5.0 / 2017-10-31
|
# v0.1.1 / 2014-01-05
|
||||||
### Fixed
|
|
||||||
- incorrect result when file size >= 512M.
|
|
||||||
|
|
||||||
## v0.4.1 / 2016-12-30
|
Update license
|
||||||
### Fixed
|
|
||||||
- ArrayBuffer dosen't work in Webpack.
|
|
||||||
|
|
||||||
## v0.4.0 / 2016-12-05
|
# v0.1.0 / 2014-01-04
|
||||||
### Added
|
|
||||||
- update method.
|
|
||||||
- support Array output.
|
|
||||||
- support ArrayBuffer output.
|
|
||||||
- support AMD.
|
|
||||||
|
|
||||||
## v0.3.0 / 2015-03-04
|
Initial release
|
||||||
### Added
|
|
||||||
- support ArrayBuffer input.
|
|
||||||
### Changed
|
|
||||||
- improve performance.
|
|
||||||
|
|
||||||
## v0.2.0 / 2015-02-16
|
|
||||||
### Added
|
|
||||||
- support byte array input.
|
|
||||||
- test cases.
|
|
||||||
### Removed
|
|
||||||
- ascii parameter.
|
|
||||||
### Changed
|
|
||||||
- improve performance.
|
|
||||||
|
|
||||||
## v0.1.3 / 2015-01-07
|
|
||||||
### Added
|
|
||||||
- bower package.
|
|
||||||
- travis.
|
|
||||||
- coveralls.
|
|
||||||
### Fixed
|
|
||||||
- JSHint warnings.
|
|
||||||
|
|
||||||
## v0.1.2 / 2014-07-27
|
|
||||||
### Fixed
|
|
||||||
- accents bug.
|
|
||||||
|
|
||||||
## v0.1.1 / 2014-01-05
|
|
||||||
### Changed
|
|
||||||
- update license.
|
|
||||||
|
|
||||||
## v0.1.0 / 2014-01-04
|
|
||||||
### Added
|
|
||||||
- initial release.
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,148 +0,0 @@
|
|||||||
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 Hmac {
|
|
||||||
/**
|
|
||||||
* Computes a Hash-based message authentication code (HMAC) using a secret key
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
(secretKey: Message, message: Message): string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a hash object using a secret key.
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
*/
|
|
||||||
create(secretKey: Message): Hasher;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a hash object and hash message using a secret key
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
update(secretKey: Message, message: Message): Hasher;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in hex string.
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
hex(secretKey: Message, message: Message): string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in ArrayBuffer.
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
arrayBuffer(secretKey: Message, message: Message): ArrayBuffer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in integer array.
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
digest(secretKey: Message, message: Message): number[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in integer array.
|
|
||||||
*
|
|
||||||
* @param secretKey The Secret Key
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
array(secretKey: Message, message: Message): 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;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in hex string.
|
|
||||||
*
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
hex(message: Message): string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in ArrayBuffer.
|
|
||||||
*
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
arrayBuffer(message: Message): ArrayBuffer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in integer array.
|
|
||||||
*
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
digest(message: Message): number[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return hash in integer array.
|
|
||||||
*
|
|
||||||
* @param message The message you want to hash.
|
|
||||||
*/
|
|
||||||
array(message: Message): number[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* HMAC interface
|
|
||||||
*/
|
|
||||||
hmac: Hmac;
|
|
||||||
}
|
|
||||||
|
|
||||||
export var sha1: Hash;
|
|
File diff suppressed because it is too large
Load Diff
@ -1,202 +0,0 @@
|
|||||||
(function (sha1) {
|
|
||||||
Array.prototype.toHexString = ArrayBuffer.prototype.toHexString = function () {
|
|
||||||
var array = new Uint8Array(this);
|
|
||||||
var hex = '';
|
|
||||||
for (var i = 0; i < array.length; ++i) {
|
|
||||||
var c = array[i].toString('16');
|
|
||||||
hex += c.length === 1 ? '0' + c : c;
|
|
||||||
}
|
|
||||||
return hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
var testCases = {
|
|
||||||
sha1_hmac: {
|
|
||||||
'Test Vectors': {
|
|
||||||
'b617318655057264e28bc0b6fb378c8ef146be00': [
|
|
||||||
[0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b],
|
|
||||||
'Hi There'
|
|
||||||
],
|
|
||||||
'effcdf6ae5eb2fa2d27416d5f184df9c259a7c79': [
|
|
||||||
'Jefe',
|
|
||||||
'what do ya want for nothing?'
|
|
||||||
],
|
|
||||||
'125d7342b9ac11cd91a39af48aa17b4f63f175d3': [
|
|
||||||
[0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa],
|
|
||||||
[0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd]
|
|
||||||
],
|
|
||||||
'4c9007f4026250c6bc8414f9bf50c86c2d7235da': [
|
|
||||||
[0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19],
|
|
||||||
[0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd]
|
|
||||||
],
|
|
||||||
'4c1a03424b55e07fe7f27be1d58bb9324a9a5a04': [
|
|
||||||
[0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c],
|
|
||||||
'Test With Truncation'
|
|
||||||
],
|
|
||||||
'aa4ae5e15272d00e95705637ce8a3b55ed402112': [
|
|
||||||
[0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa],
|
|
||||||
'Test Using Larger Than Block-Size Key - Hash Key First'
|
|
||||||
],
|
|
||||||
'e8e99d0f45237d786d6bbaa7965c7808bbff1a91': [
|
|
||||||
[0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa],
|
|
||||||
'Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
'UTF8': {
|
|
||||||
'f495de6d0f1b5681070a024bbaed5b5f42847306': ['中文', '中文'],
|
|
||||||
'58891d68487ffebddba5925abedec77a5a578db2': ['aécio', 'aécio'],
|
|
||||||
'a1816bff2dae324c283aeab564d5edb5170fbada': ['𠜎', '𠜎']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (!(typeof JS_SHA1_NO_ARRAY_BUFFER === 'boolean' && JS_SHA1_NO_ARRAY_BUFFER)) {
|
|
||||||
testCases.sha1_hmac.Uint8Array = {
|
|
||||||
'69536cc84eee5fe51c5b051aff8485f5c9ef0b58': [
|
|
||||||
new Uint8Array(0),
|
|
||||||
'Hi There'
|
|
||||||
]
|
|
||||||
};
|
|
||||||
testCases.sha1_hmac.ArrayBuffer = {
|
|
||||||
'69536cc84eee5fe51c5b051aff8485f5c9ef0b58': [
|
|
||||||
new ArrayBuffer(0),
|
|
||||||
'Hi There'
|
|
||||||
]
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var errorTestCases = [null, undefined, { length: 0 }, 0, 1, false, true, NaN, Infinity, function () {}];
|
|
||||||
|
|
||||||
function runTestCases(name, algorithm) {
|
|
||||||
var methods = [
|
|
||||||
{
|
|
||||||
name: name,
|
|
||||||
call: algorithm,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: name + '.hex',
|
|
||||||
call: algorithm.hex
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: name + '.array',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.array(key, message).toHexString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: name + '.digest',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.digest(key, message).toHexString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: name + '.arrayBuffer',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.arrayBuffer(key, message).toHexString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
var classMethods = [
|
|
||||||
{
|
|
||||||
name: 'create',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.create(key).update(message).toString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'update',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.update(key, message).toString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'hex',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.update(key, message).hex();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'array',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.update(key, message).array().toHexString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'digest',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.update(key, message).digest().toHexString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'arrayBuffer',
|
|
||||||
call: function (key, message) {
|
|
||||||
return algorithm.update(key, message).arrayBuffer().toHexString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'finalize',
|
|
||||||
call: function (key, message) {
|
|
||||||
var hash = algorithm.update(key, message);
|
|
||||||
hash.hex();
|
|
||||||
return hash.hex();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
var subTestCases = testCases[name];
|
|
||||||
|
|
||||||
describe(name, function () {
|
|
||||||
methods.forEach(function (method) {
|
|
||||||
describe('#' + method.name, function () {
|
|
||||||
for (var testCaseName in subTestCases) {
|
|
||||||
(function (testCaseName) {
|
|
||||||
var testCase = subTestCases[testCaseName];
|
|
||||||
context('when ' + testCaseName, function () {
|
|
||||||
for (var hash in testCase) {
|
|
||||||
(function (message, hash) {
|
|
||||||
it('should be equal', function () {
|
|
||||||
expect(method.call(message[0], message[1])).to.be(hash);
|
|
||||||
});
|
|
||||||
})(testCase[hash], hash);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})(testCaseName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
classMethods.forEach(function (method) {
|
|
||||||
describe('#' + method.name, function () {
|
|
||||||
for (var testCaseName in subTestCases) {
|
|
||||||
(function (testCaseName) {
|
|
||||||
var testCase = subTestCases[testCaseName];
|
|
||||||
context('when ' + testCaseName, function () {
|
|
||||||
for (var hash in testCase) {
|
|
||||||
(function (message, hash) {
|
|
||||||
it('should be equal', function () {
|
|
||||||
expect(method.call(message[0], message[1])).to.be(hash);
|
|
||||||
});
|
|
||||||
})(testCase[hash], hash);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
})(testCaseName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('#' + name, function () {
|
|
||||||
errorTestCases.forEach(function (testCase) {
|
|
||||||
context('when ' + testCase, function () {
|
|
||||||
it('should throw error', function () {
|
|
||||||
expect(function () {
|
|
||||||
algorithm(testCase, '');
|
|
||||||
}).to.throwError(/input is invalid type/);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
runTestCases('sha1_hmac', sha1.hmac);
|
|
||||||
})(sha1);
|
|
@ -1,158 +1,11 @@
|
|||||||
|
sha1 = require('../src/sha1.js');
|
||||||
expect = require('expect.js');
|
expect = require('expect.js');
|
||||||
Worker = require("tiny-worker");
|
require('./test.js');
|
||||||
|
|
||||||
function unset() {
|
|
||||||
delete require.cache[require.resolve('../src/sha1.js')];
|
|
||||||
delete require.cache[require.resolve('./test.js')];
|
|
||||||
delete require.cache[require.resolve('./hmac-test.js')];
|
|
||||||
sha1 = null;
|
|
||||||
BUFFER = undefined;
|
|
||||||
JS_SHA1_NO_WINDOW = undefined;
|
|
||||||
JS_SHA1_NO_NODE_JS = undefined;
|
|
||||||
JS_SHA1_NO_COMMON_JS = undefined;
|
|
||||||
JS_SHA1_NO_ARRAY_BUFFER = undefined;
|
|
||||||
JS_SHA1_NO_ARRAY_BUFFER_IS_VIEW = undefined;
|
|
||||||
window = undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
function runCommonJsTest() {
|
|
||||||
sha1 = require('../src/sha1.js');
|
|
||||||
require('./test.js');
|
|
||||||
require('./hmac-test.js');
|
|
||||||
unset();
|
|
||||||
}
|
|
||||||
|
|
||||||
function runWindowTest() {
|
|
||||||
window = global;
|
|
||||||
require('../src/sha1.js');
|
|
||||||
require('./test.js');
|
|
||||||
require('./hmac-test.js');
|
|
||||||
unset();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Node.js env
|
|
||||||
BUFFER = true;
|
|
||||||
runCommonJsTest();
|
|
||||||
|
|
||||||
// Node.js env, no Buffer.from
|
|
||||||
JS_SHA1_NO_BUFFER_FROM = true
|
|
||||||
runCommonJsTest();
|
|
||||||
|
|
||||||
// Webpack browser env
|
|
||||||
JS_SHA1_NO_NODE_JS = true;
|
|
||||||
runCommonJsTest();
|
|
||||||
|
|
||||||
// browser env
|
|
||||||
JS_SHA1_NO_NODE_JS = true;
|
|
||||||
JS_SHA1_NO_COMMON_JS = true;
|
|
||||||
runWindowTest();
|
|
||||||
|
|
||||||
// browser env and no array buffer
|
|
||||||
JS_SHA1_NO_NODE_JS = true;
|
|
||||||
JS_SHA1_NO_COMMON_JS = true;
|
|
||||||
JS_SHA1_NO_ARRAY_BUFFER = true;
|
|
||||||
runWindowTest();
|
|
||||||
|
|
||||||
// browser env and no isView
|
delete require.cache[require.resolve('../src/sha1.js')]
|
||||||
JS_SHA1_NO_NODE_JS = true;
|
delete require.cache[require.resolve('./test.js')]
|
||||||
JS_SHA1_NO_COMMON_JS = true;
|
sha1 = null;
|
||||||
JS_SHA1_NO_ARRAY_BUFFER_IS_VIEW = true;
|
|
||||||
runWindowTest();
|
|
||||||
|
|
||||||
// browser AMD
|
|
||||||
JS_SHA1_NO_NODE_JS = true;
|
|
||||||
JS_SHA1_NO_COMMON_JS = true;
|
|
||||||
window = global;
|
|
||||||
define = function (func) {
|
|
||||||
sha1 = func();
|
|
||||||
require('./test.js');
|
|
||||||
require('./hmac-test.js');
|
|
||||||
};
|
|
||||||
define.amd = true;
|
|
||||||
|
|
||||||
|
JS_SHA1_TEST = true;
|
||||||
require('../src/sha1.js');
|
require('../src/sha1.js');
|
||||||
unset();
|
require('./test.js');
|
||||||
|
|
||||||
// webworker
|
|
||||||
WORKER = 'tests/worker.js';
|
|
||||||
SOURCE = 'src/sha1.js';
|
|
||||||
|
|
||||||
require('./worker-test.js');
|
|
||||||
|
|
||||||
delete require.cache[require.resolve('./worker-test.js')];
|
|
||||||
|
|
||||||
// cover webworker
|
|
||||||
JS_SHA1_NO_WINDOW = true;
|
|
||||||
JS_SHA1_NO_NODE_JS = true;
|
|
||||||
WORKER = './worker.js';
|
|
||||||
SOURCE = '../src/sha1.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 () {};
|
|
||||||
|
|
||||||
sha1 = require('../src/sha1.js');
|
|
||||||
require('./worker-test.js');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// sha1 = require('../src/sha1.js');
|
|
||||||
// require('./test.js');
|
|
||||||
|
|
||||||
// delete require.cache[require.resolve('../src/sha1.js')];
|
|
||||||
// delete require.cache[require.resolve('./test.js')];
|
|
||||||
// delete require.cache[require.resolve('./hmac-test.js')];
|
|
||||||
// sha1 = null;
|
|
||||||
|
|
||||||
// // Webpack browser env
|
|
||||||
// JS_SHA1_NO_NODE_JS = true;
|
|
||||||
// window = global;
|
|
||||||
// sha1 = require('../src/sha1.js');
|
|
||||||
// require('./test.js');
|
|
||||||
|
|
||||||
// delete require.cache[require.resolve('../src/sha1.js')];
|
|
||||||
// delete require.cache[require.resolve('./test.js')];
|
|
||||||
// delete require.cache[require.resolve('./hmac-test.js')];
|
|
||||||
// sha1 = null;
|
|
||||||
|
|
||||||
// // browser env
|
|
||||||
// JS_SHA1_NO_NODE_JS = true;
|
|
||||||
// JS_SHA1_NO_COMMON_JS = true;
|
|
||||||
// window = global;
|
|
||||||
// require('../src/sha1.js');
|
|
||||||
// require('./test.js');
|
|
||||||
|
|
||||||
// delete require.cache[require.resolve('../src/sha1.js')];
|
|
||||||
// delete require.cache[require.resolve('./test.js')];
|
|
||||||
// delete require.cache[require.resolve('./hmac-test.js')];
|
|
||||||
// sha1 = null;
|
|
||||||
|
|
||||||
// // browser AMD
|
|
||||||
// JS_SHA1_NO_NODE_JS = true;
|
|
||||||
// JS_SHA1_NO_COMMON_JS = true;
|
|
||||||
// window = global;
|
|
||||||
// define = function (func) {
|
|
||||||
// sha1 = func();
|
|
||||||
// require('./test.js');
|
|
||||||
// require('./hmac-test.js');
|
|
||||||
// };
|
|
||||||
// define.amd = true;
|
|
||||||
|
|
||||||
// require('../src/sha1.js');
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>SHA1</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="../node_modules/requirejs/require.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="mocha"></div>
|
|
||||||
<script>
|
|
||||||
mocha.setup('bdd');
|
|
||||||
require(['../src/sha1.js'], function (sha1) {
|
|
||||||
window.sha1 = sha1;
|
|
||||||
require(['test.js', 'hmac-test.js'], function () {
|
|
||||||
mocha.checkLeaks();
|
|
||||||
mocha.run();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,24 +0,0 @@
|
|||||||
(function (Worker, WORKER, SOURCE) {
|
|
||||||
var cases = {
|
|
||||||
'da39a3ee5e6b4b0d3255bfef95601890afd80709': '',
|
|
||||||
'2fd4e1c67a2d28fced849ee1bb76e7391b93eb12': 'The quick brown fox jumps over the lazy dog',
|
|
||||||
'408d94384216f890ff7a0c3528e8bed1e0b01621': 'The quick brown fox jumps over the lazy dog.'
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('#sha1', 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);
|
|
||||||
if (worker.terminate) {
|
|
||||||
worker.terminate();
|
|
||||||
}
|
|
||||||
done();
|
|
||||||
};
|
|
||||||
worker.postMessage(SOURCE);
|
|
||||||
worker.postMessage(cases[hash]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
})(Worker, WORKER, SOURCE);
|
|
@ -1,25 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>SHA1</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/sha1.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="mocha"></div>
|
|
||||||
<script>
|
|
||||||
WORKER = 'worker.js';
|
|
||||||
SOURCE = '../src/sha1.js';
|
|
||||||
mocha.setup('bdd');
|
|
||||||
</script>
|
|
||||||
<script src="worker-test.js"></script>
|
|
||||||
<script>
|
|
||||||
mocha.run();
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,12 +0,0 @@
|
|||||||
var imported = false;
|
|
||||||
onmessage = function(e) {
|
|
||||||
if (imported) {
|
|
||||||
postMessage(sha1(e.data));
|
|
||||||
if (typeof exports !== 'undefined') {
|
|
||||||
imported = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
imported = true;
|
|
||||||
importScripts(e.data);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue