From e2362b8620c1321fc93204a1830b60f48d3f43a2 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sun, 7 Mar 2021 17:50:25 +0100 Subject: [PATCH] Improve epub support Warn when there are encrypted fonts in an epub file --- libmat2/epub.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libmat2/epub.py b/libmat2/epub.py index 83f5728..af059d2 100644 --- a/libmat2/epub.py +++ b/libmat2/epub.py @@ -1,6 +1,7 @@ import logging import re import uuid +import zipfile import xml.etree.ElementTree as ET # type: ignore from typing import Dict, Any @@ -27,7 +28,16 @@ class EPUBParser(archive.ZipParser): })) self.uniqid = uuid.uuid4() - def _specific_get_meta(self, full_path, file_path): + + def is_archive_valid(self): + super().is_archive_valid() + with zipfile.ZipFile(self.filename) as zin: + for item in self._get_all_members(zin): + member_name = self._get_member_name(item) + if member_name.endswith('META-INF/encryption.xml'): + raise ValueError('the file contains encrypted fonts') + + def _specific_get_meta(self, full_path, file_path) -> Dict[str, Any]: if not file_path.endswith('.opf'): return {}