diff options
author | Héctor Orón Martínez <zumbi@debian.org> | 2016-05-17 15:51:59 +0300 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2016-05-17 15:52:42 +0300 |
commit | a1b391eb08b2c9db1f84556cfd6f3b3a7f323bb7 (patch) | |
tree | 48ab46bff35b52f30cecc85e8d137146e5baa0c5 | |
parent | 3bbce609714a3ddcb692daaa27f440cee9d68ce7 (diff) |
add support for sha256 hashes in Packages file
Since APT disabled MD5sum support, linaro-hwpack-install fails with
checksum mismatch errors as it is unable to verify package integrity
using md5 hash. The following implements sha256 hash support.
Change-Id: Ic4a277c1a33b5e76343c79b92ef792b0a3ce7e66
Signed-off-by: Héctor Orón Martínez <zumbi@debian.org>
-rw-r--r-- | linaro_image_tools/hwpack/packages.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/linaro_image_tools/hwpack/packages.py b/linaro_image_tools/hwpack/packages.py index a3578ec..13db537 100644 --- a/linaro_image_tools/hwpack/packages.py +++ b/linaro_image_tools/hwpack/packages.py @@ -87,6 +87,7 @@ def get_packages_file(packages, extra_text=None, rel_to=None): if package.breaks: parts.append('Breaks: %s' % package.breaks) parts.append('MD5sum: %s' % package.md5) + parts.append('SHA256: %s' % package.sha256) content += "\n".join(parts) content += "\n\n" return content @@ -295,6 +296,9 @@ class FetchedPackage(object): :ivar md5: the hex representation of the md5sum of the contents of the package. :type md5: str + :ivar sha256: the hex representation of the sha256sum of the contents of + the package. + :type sha256: str :ivar architecture: the architecture that the package is for, may be 'all'. :type architecture: str @@ -331,7 +335,7 @@ class FetchedPackage(object): :type breaks: str or None """ - def __init__(self, name, version, filename, size, md5, + def __init__(self, name, version, filename, size, md5, sha256, architecture, depends=None, pre_depends=None, multi_arch=None, conflicts=None, recommends=None, provides=None, replaces=None, breaks=None): @@ -344,6 +348,7 @@ class FetchedPackage(object): self.filename = filename self.size = size self.md5 = md5 + self.sha256 = sha256 self.architecture = architecture self.depends = depends self.pre_depends = pre_depends @@ -389,7 +394,7 @@ class FetchedPackage(object): provides = ", ".join([a[0] for a in pkg._cand.provides_list]) or None pkg = cls( pkg.package.name, pkg.version, filename, pkg.size, - pkg.md5, pkg.architecture, depends=depends, + pkg.md5, pkg.sha256, pkg.architecture, depends=depends, pre_depends=pre_depends, multi_arch=multi_arch, conflicts=conflicts, recommends=recommends, provides=provides, replaces=replaces, breaks=breaks) @@ -406,6 +411,7 @@ class FetchedPackage(object): filename = os.path.basename(deb_file_path) size = os.path.getsize(deb_file_path) md5sum = hashlib.md5(open(deb_file_path).read()).hexdigest() + sha256sum = hashlib.sha256(open(deb_file_path).read()).hexdigest() architecture = debcontrol['Architecture'] depends = debcontrol.get('Depends') pre_depends = debcontrol.get('Pre-Depends') @@ -416,8 +422,8 @@ class FetchedPackage(object): replaces = debcontrol.get('Replaces') breaks = debcontrol.get('Breaks') pkg = cls( - name, version, filename, size, md5sum, architecture, depends, - pre_depends, multi_arch, conflicts, recommends, provides, + name, version, filename, size, md5sum, sha256sum, architecture, + depends, pre_depends, multi_arch, conflicts, recommends, provides, replaces, breaks) pkg.content = open(deb_file_path) pkg._file_path = deb_file_path @@ -434,6 +440,7 @@ class FetchedPackage(object): 'filename', 'size', 'md5', + 'sha256', 'architecture', 'depends', 'pre_depends', @@ -784,7 +791,7 @@ class PackageFetcher(object): result_package = fetched[package.name] destfile = os.path.join(self.cache.tempdir, base) acqfile = apt_pkg.AcquireFile( - acq, candidate.uri, candidate.md5, candidate.size, + acq, candidate.uri, candidate.sha256, candidate.size, base, destfile=destfile) acqfiles.append((acqfile, result_package, destfile)) # check if we have a private key in the pkg url |