mirror of
https://github.com/nodejs/node.git
synced 2024-11-25 08:19:38 +01:00
becb4e980e
This commit distributes many of the various tests that were previously strewn about `test-crypto.js` into their own files, such as for Ciphers and Deciphers, Hashing, and HMACs. Copy pasta, and no style changes besides removing a few now-unnecessary closures. Helps eliminate file bloat and allows for easier test prognosis. PR-URL: https://github.com/iojs/io.js/pull/827 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
88 lines
2.8 KiB
JavaScript
88 lines
2.8 KiB
JavaScript
var common = require('../common');
|
|
var assert = require('assert');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
|
|
try {
|
|
var crypto = require('crypto');
|
|
} catch (e) {
|
|
console.log('Not compiled with OPENSSL support.');
|
|
process.exit();
|
|
}
|
|
|
|
// Test hashing
|
|
var a0 = crypto.createHash('sha1').update('Test123').digest('hex');
|
|
var a1 = crypto.createHash('md5').update('Test123').digest('binary');
|
|
var a2 = crypto.createHash('sha256').update('Test123').digest('base64');
|
|
var a3 = crypto.createHash('sha512').update('Test123').digest(); // binary
|
|
var a4 = crypto.createHash('sha1').update('Test123').digest('buffer');
|
|
|
|
// stream interface
|
|
var a5 = crypto.createHash('sha512');
|
|
a5.end('Test123');
|
|
a5 = a5.read();
|
|
|
|
var a6 = crypto.createHash('sha512');
|
|
a6.write('Te');
|
|
a6.write('st');
|
|
a6.write('123');
|
|
a6.end();
|
|
a6 = a6.read();
|
|
|
|
var a7 = crypto.createHash('sha512');
|
|
a7.end();
|
|
a7 = a7.read();
|
|
|
|
var a8 = crypto.createHash('sha512');
|
|
a8.write('');
|
|
a8.end();
|
|
a8 = a8.read();
|
|
|
|
assert.equal(a0, '8308651804facb7b9af8ffc53a33a22d6a1c8ac2', 'Test SHA1');
|
|
assert.equal(a1, 'h\u00ea\u00cb\u0097\u00d8o\fF!\u00fa+\u000e\u0017\u00ca' +
|
|
'\u00bd\u008c', 'Test MD5 as binary');
|
|
assert.equal(a2, '2bX1jws4GYKTlxhloUB09Z66PoJZW+y+hq5R8dnx9l4=',
|
|
'Test SHA256 as base64');
|
|
assert.deepEqual(
|
|
a3,
|
|
new Buffer(
|
|
'\u00c1(4\u00f1\u0003\u001fd\u0097!O\'\u00d4C/&Qz\u00d4' +
|
|
'\u0094\u0015l\u00b8\u008dQ+\u00db\u001d\u00c4\u00b5}\u00b2' +
|
|
'\u00d6\u0092\u00a3\u00df\u00a2i\u00a1\u009b\n\n*\u000f' +
|
|
'\u00d7\u00d6\u00a2\u00a8\u0085\u00e3<\u0083\u009c\u0093' +
|
|
'\u00c2\u0006\u00da0\u00a1\u00879(G\u00ed\'',
|
|
'binary'),
|
|
'Test SHA512 as assumed buffer');
|
|
assert.deepEqual(a4,
|
|
new Buffer('8308651804facb7b9af8ffc53a33a22d6a1c8ac2', 'hex'),
|
|
'Test SHA1');
|
|
|
|
// stream interface should produce the same result.
|
|
assert.deepEqual(a5, a3, 'stream interface is consistent');
|
|
assert.deepEqual(a6, a3, 'stream interface is consistent');
|
|
assert.notEqual(a7, undefined, 'no data should return data');
|
|
assert.notEqual(a8, undefined, 'empty string should generate data');
|
|
|
|
// Test multiple updates to same hash
|
|
var h1 = crypto.createHash('sha1').update('Test123').digest('hex');
|
|
var h2 = crypto.createHash('sha1').update('Test').update('123').digest('hex');
|
|
assert.equal(h1, h2, 'multipled updates');
|
|
|
|
// Test hashing for binary files
|
|
var fn = path.join(common.fixturesDir, 'sample.png');
|
|
var sha1Hash = crypto.createHash('sha1');
|
|
var fileStream = fs.createReadStream(fn);
|
|
fileStream.on('data', function(data) {
|
|
sha1Hash.update(data);
|
|
});
|
|
fileStream.on('close', function() {
|
|
assert.equal(sha1Hash.digest('hex'),
|
|
'22723e553129a336ad96e10f6aecdf0f45e4149e',
|
|
'Test SHA1 of sample.png');
|
|
});
|
|
|
|
// Issue #2227: unknown digest method should throw an error.
|
|
assert.throws(function() {
|
|
crypto.createHash('xyzzy');
|
|
});
|