Commit 79403afb authored by Max Kellermann's avatar Max Kellermann

python/build/verify: prepare SHA support

parent 4c650e87
...@@ -20,7 +20,7 @@ def download_and_verify(url, md5, parent_path): ...@@ -20,7 +20,7 @@ def download_and_verify(url, md5, parent_path):
urllib.request.urlretrieve(url, tmp_path) urllib.request.urlretrieve(url, tmp_path)
if not verify_file_digest(tmp_path, md5): if not verify_file_digest(tmp_path, md5):
os.unlink(tmp_path) os.unlink(tmp_path)
raise RuntimeError("MD5 mismatch") raise RuntimeError("Digest mismatch")
os.rename(tmp_path, path) os.rename(tmp_path, path)
return path return path
...@@ -23,12 +23,16 @@ def file_digest(algorithm, path): ...@@ -23,12 +23,16 @@ def file_digest(algorithm, path):
feed_file_path(h, path) feed_file_path(h, path)
return h.hexdigest() return h.hexdigest()
def file_md5(path): def guess_digest_algorithm(digest):
"""Calculate the MD5 checksum of a file and return it in hexadecimal notation.""" l = len(digest)
if l == 32:
return file_digest(hashlib.md5, path) return hashlib.md5
else:
return None
def verify_file_digest(path, expected_digest): def verify_file_digest(path, expected_digest):
"""Verify the digest of a file, and return True if the digest matches with the given expected digest.""" """Verify the digest of a file, and return True if the digest matches with the given expected digest."""
return file_md5(path) == expected_digest algorithm = guess_digest_algorithm(expected_digest)
assert(algorithm is not None)
return file_digest(algorithm, path) == expected_digest
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment