python/build/verify: prepare SHA support
This commit is contained in:
parent
4c650e87fa
commit
79403afbe6
@ -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):
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user