Add support for MDC2 hash

This commit is contained in:
Amrit Panesar committed 2017-03-27 14:47:55 -07:00
1 parent 02dc70d435
commit e5cef9f768
1 file changed
+97 -12
+97 -12
View File
@@ -68,21 +68,106 @@ var cryptoShim = {
return md.digest().toHex();
}
},
MD5: function () {
var type = 'md5';
cryptoShim.shim[type] = typeof cryptoShim.shim[type] === 'undefined' ? forge.md[type].create() : cryptoShim.shim[type];
cryptoShim.shim[type].update.apply(this, arguments);
return cryptoShim.shim.out(cryptoShim.shim[type]);
/**
* MD(4|5) support
* @param type
* @param textIn
* @return {*}
* @constructor
*/
MD: function (type, textIn) {
switch (type) {
case 4:
type = "md4";
return gencryption.md4.getHashOfTextSync.apply(this, [arguments[1]]);
break;
case 5:
type = "md5";
return gencryption.md5.getHashOfTextSync.apply(this, [arguments[1]]);
default:
throw new Error("Unable to parse MD " + type);
}
},
SHA1: function () {
var type = 'sha1';
cryptoShim.shim[type] = typeof cryptoShim.shim[type] === 'undefined' ? forge.md[type].create() : cryptoShim.shim[type];
cryptoShim.shim[type].update.apply(this, arguments);
return cryptoShim.shim.out(cryptoShim.shim[type]);
/**
* SHA(1|2|3|KE) support
* @param type
* @param bits
* @param textIn
* @param outputBitLength
* @return {*}
* @constructor
*/
SHA: function (type, bits, textIn, outputBitLength) {
switch (type) {
case 1:
return gencryption.sha1.getHashOfTextSync.apply(this, [arguments[2]]);
break;
case 2:
gencryption.sha2.getHashOfTextSync.apply(this, [arguments[1], arguments[2]]);
break;
case 3:
gencryption.sha3.getHashOfTextSync.apply(this, [arguments[1], arguments[2]]);
break;
case "ke":
return gencryption.shake.getHashOfTextSync.apply(this, [arguments[1], arguments[3], arguments[2]]);
break;
default:
throw new Error("Unable to parse SHA " + type);
}
},
RIPEMD160: function () {
return CryptoJS.RIPEMD160.apply(this, arguments).toString(CryptoJS.enc.Hex);
/**
* Keccak support
* @param bitSize [224, 256, 384, 512]
* @param stringIn
* @return {*}
*/
keccak: function (bitSize, stringIn) {
return gencryption.keccak.getHashOfTextSync.apply(this, arguments);
},
/**
* Whirlpool support
* @param stringIn
* @return {*}
*/
whirlpool: function (stringIn) {
return gencryption.whirlpool.getHashOfTextSync.apply(this, arguments);
},
/**
* RIPEMD[160] support
* @param length
* @param stringIn
* @constructor
*/
RIPEMD: function (length, stringIn) {
if (length === 160) {
return gencryption.ripemd160.getHashOfTextSync.apply(this, [arguments[1]]);
} else {
return gencryption.ripemd.getHashOfTextSync.apply(this, [arguments[1]]);
}
},
/**
* DSS1 support
* @param stringIn
* @return {*}
* @constructor
*/
DSS1: function (stringIn) {
return gencryption.dss1.getHashOfTextSync.apply(this, arguments)
},
/**
* MDC2 support
* @param stringIn
* @return {*}
* @constructor
*/
MDC2: function(stringIn) {
return gencryption.mdc2.getHashOfTextSync.apply(this, arguments);
},
/**
* BCrypt support
* @param stringIn
* @return {string|?string}
*/
bcrypt: function (stringIn) {
return bcrypt.hashSync(stringIn, 10);
}