diff --git a/lib/aes.js b/lib/aes.js index 356b986f..5c8e62fd 100644 --- a/lib/aes.js +++ b/lib/aes.js @@ -91,7 +91,7 @@ AesWorker.prototype.cleanUp = function () { AesWorker.prototype._createAes = function () { if (this._dir) { var salt = sjcl.random.randomWords(this._saltLen); - var derivedKey = sjcl.misc.pbkdf2(this._password, salt, 1000, (this._macLen + this._keyLen + passwordVerifierLen) * 8, sjcl.misc.hmac); + var derivedKey = sjcl.misc.pbkdf2(this._password, salt, 1000, (this._macLen + this._keyLen + passwordVerifierLen) * 8); this._aesKey = sjcl.bitArray.bitSlice(derivedKey, 0, this._keyLen * 8); var macKey = sjcl.bitArray.bitSlice(derivedKey, this._keyLen * 8, (this._keyLen + this._macLen) * 8); var derivedPassVerifier = sjcl.bitArray.bitSlice(derivedKey, (this._keyLen + this._macLen) * 8); @@ -127,7 +127,7 @@ exports.verifyPassword = function (data, options) { var saltLen = keyLen / 2; var salt = sjcl.codec.bytes.toBits(data.subarray(0, saltLen)); - var derivedKey = sjcl.misc.pbkdf2(password, salt, 1000, (macLen + keyLen + passwordVerifierLen) * 8, sjcl.misc.hmac); + var derivedKey = sjcl.misc.pbkdf2(password, salt, 1000, (macLen + keyLen + passwordVerifierLen) * 8); var derivedPassVerifier = sjcl.bitArray.bitSlice(derivedKey, (keyLen + macLen) * 8); var passVerifyValue = sjcl.codec.bytes.toBits(data.subarray(saltLen, saltLen + passwordVerifierLen)); if (!sjcl.bitArray.equal(passVerifyValue, derivedPassVerifier)) { diff --git a/lib/compressedObject.js b/lib/compressedObject.js index acd23e7f..d2cd0b0a 100644 --- a/lib/compressedObject.js +++ b/lib/compressedObject.js @@ -81,7 +81,6 @@ CompressedObject.prototype = { CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions, encryptOptions) { if (encryptOptions.password !== null) { return uncompressedWorker - .pipe(new Crc32Probe()) .pipe(new DataLengthProbe("uncompressedSize")) .pipe(compression.compressWorker(compressionOptions)) .pipe(aes.EncryptWorker(encryptOptions)) diff --git a/lib/load.js b/lib/load.js index 2974086a..28da5566 100644 --- a/lib/load.js +++ b/lib/load.js @@ -14,6 +14,10 @@ var nodejsUtils = require("./nodejsUtils"); */ function checkEntryCRC32(zipEntry) { return new external.Promise(function (resolve, reject) { + if (zipEntry.options.aes.version === 2) { + reject(new Error("Encrypted zip : no CRC32 stored")); + return; + } var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe()); worker.on("error", function (e) { reject(e);