_parseEncryptionInfoAsync(buffer) {
        // Pull off the prefix and convert to string
        const xml = buffer.slice(ENCRYPTION_INFO_PREFIX.length).toString("utf8");

        // Parse the XML
        const xmlParser = new XmlParser();
        return xmlParser.parseAsync(xml)
            .then(doc => {
                // Pull out the relevant values for decryption and return
                const keyDataNode = xmlq.findChild(doc, "keyData");
                const keyEncryptorsNode = xmlq.findChild(doc, "keyEncryptors");
                const keyEncryptorNode = xmlq.findChild(keyEncryptorsNode, "keyEncryptor");
                const encryptedKeyNode = xmlq.findChild(keyEncryptorNode, "p:encryptedKey");

                return {
                    package: {
                        cipherAlgorithm: keyDataNode.attributes.cipherAlgorithm,
                        cipherChaining: keyDataNode.attributes.cipherChaining,
                        saltValue: Buffer.from(keyDataNode.attributes.saltValue, "base64"),
                        hashAlgorithm: keyDataNode.attributes.hashAlgorithm,
                        blockSize: keyDataNode.attributes.blockSize
                    },
                    key: {
                        encryptedKeyValue: Buffer.from(encryptedKeyNode.attributes.encryptedKeyValue, "base64"),
                        cipherAlgorithm: encryptedKeyNode.attributes.cipherAlgorithm,
                        cipherChaining: encryptedKeyNode.attributes.cipherChaining,
                        saltValue: Buffer.from(encryptedKeyNode.attributes.saltValue, "base64"),
                        hashAlgorithm: encryptedKeyNode.attributes.hashAlgorithm,
                        spinCount: encryptedKeyNode.attributes.spinCount,
                        keyBits: encryptedKeyNode.attributes.keyBits
                    }
                };
            });
    }
Parse the encryption info from the XML/buffer
@param {Buffer} buffer - The buffer
@returns {Promise.<{}>} The parsed encryption info object
@private