67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
|
|
var sha = require('./sha.js');
|
|
|
|
module.exports = {
|
|
md5: require('./md5.js'),
|
|
sha1: sha.sha1,
|
|
sha256: sha.sha256,
|
|
sha224: sha.sha224,
|
|
sha384: sha.sha384,
|
|
sha512: sha.sha512,
|
|
ripemd: require('./ripe-md.js'),
|
|
|
|
/**
|
|
* Create a hash on the specified data using the specified algorithm
|
|
* @param {Integer} algo Hash algorithm type (see RFC4880 9.4)
|
|
* @param {String} data Data to be hashed
|
|
* @return {String} hash value
|
|
*/
|
|
digest: function(algo, data) {
|
|
switch(algo) {
|
|
case 1: // - MD5 [HAC]
|
|
return this.md5(data);
|
|
case 2: // - SHA-1 [FIPS180]
|
|
return this.sha1(data);
|
|
case 3: // - RIPE-MD/160 [HAC]
|
|
return this.ripemd(data);
|
|
case 8: // - SHA256 [FIPS180]
|
|
return this.sha256(data);
|
|
case 9: // - SHA384 [FIPS180]
|
|
return this.sha384(data);
|
|
case 10:// - SHA512 [FIPS180]
|
|
return this.sha512(data);
|
|
case 11:// - SHA224 [FIPS180]
|
|
return this.sha224(data);
|
|
default:
|
|
throw new Error('Invalid hash function.');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Returns the hash size in bytes of the specified hash algorithm type
|
|
* @param {Integer} algo Hash algorithm type (See RFC4880 9.4)
|
|
* @return {Integer} Size in bytes of the resulting hash
|
|
*/
|
|
getHashByteLength: function(algo) {
|
|
switch(algo) {
|
|
case 1: // - MD5 [HAC]
|
|
return 16;
|
|
case 2: // - SHA-1 [FIPS180]
|
|
case 3: // - RIPE-MD/160 [HAC]
|
|
return 20;
|
|
case 8: // - SHA256 [FIPS180]
|
|
return 32;
|
|
case 9: // - SHA384 [FIPS180]
|
|
return 48
|
|
case 10:// - SHA512 [FIPS180]
|
|
return 64;
|
|
case 11:// - SHA224 [FIPS180]
|
|
return 28;
|
|
default:
|
|
throw new Error('Invalid hash algorithm.');
|
|
}
|
|
}
|
|
|
|
}
|
|
|