decryptAsync(data, password) {
        // Parse the CFB input and pull out the encryption info and encrypted package entries.
        const parsed = cfb.parse(data);
        let encryptionInfoBuffer = _.find(parsed.FileIndex, { name: "EncryptionInfo" }).content;
        let encryptedPackageBuffer = _.find(parsed.FileIndex, { name: "EncryptedPackage" }).content;

        // In the browser the CFB content is an array. Convert to a Buffer.
        if (!Buffer.isBuffer(encryptionInfoBuffer)) encryptionInfoBuffer = Buffer.from(encryptionInfoBuffer);
        if (!Buffer.isBuffer(encryptedPackageBuffer)) encryptedPackageBuffer = Buffer.from(encryptedPackageBuffer);

        return externals.Promise.resolve()
            .then(() => this._parseEncryptionInfoAsync(encryptionInfoBuffer)) // Parse the encryption info XML into an object
            .then(encryptionInfo => {
                // Convert the password into an encryption key
                const key = this._convertPasswordToKey(
                    password,
                    encryptionInfo.key.hashAlgorithm,
                    encryptionInfo.key.saltValue,
                    encryptionInfo.key.spinCount,
                    encryptionInfo.key.keyBits,
                    BLOCK_KEYS.key
                );

                // Use the key to decrypt the package key
                const packageKey = this._crypt(
                    false,
                    encryptionInfo.key.cipherAlgorithm,
                    encryptionInfo.key.cipherChaining,
                    key,
                    encryptionInfo.key.saltValue,
                    encryptionInfo.key.encryptedKeyValue
                );

                // Use the package key to decrypt the package
                return this._cryptPackage(
                    false,
                    encryptionInfo.package.cipherAlgorithm,
                    encryptionInfo.package.cipherChaining,
                    encryptionInfo.package.hashAlgorithm,
                    encryptionInfo.package.blockSize,
                    encryptionInfo.package.saltValue,
                    packageKey,
                    encryptedPackageBuffer);
            });
    }
Decrypt the data with the given password
@param {Buffer} data - The data to decrypt
@param {string} password - The password
@returns {Promise.<Buffer>} The decrypted data