summaryrefslogtreecommitdiff
path: root/integrity.py
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2025-01-20 00:22:55 +0100
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2025-01-20 00:22:55 +0100
commitc9aa86f73d2fc2b5308ce7691050701eb627e4f3 (patch)
tree533d3087832da3bd7b74a169c1160d32e17bba8c /integrity.py
Initial commit
Diffstat (limited to 'integrity.py')
-rw-r--r--integrity.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/integrity.py b/integrity.py
new file mode 100644
index 0000000..14bfe66
--- /dev/null
+++ b/integrity.py
@@ -0,0 +1,34 @@
+import sys
+import hashlib
+import base64
+from pathlib import Path
+import requests
+
+def file_hash(file_path: Path) -> str:
+ sha256_hash = hashlib.sha256()
+ with open(file_path, "rb") as file:
+ while True:
+ data = file.read(65536)
+ if not data:
+ break
+ sha256_hash.update(data)
+ return "sha256-" + base64.b64encode(sha256_hash.digest()).decode()
+
+def url_hash(url: str) -> str:
+ sha256_hash = hashlib.sha256()
+ with requests.get(url, stream=True) as resp:
+ resp.raise_for_status()
+ while True:
+ data = resp.raw.read(65536)
+ if not data:
+ break
+ sha256_hash.update(data)
+ return "sha256-" + base64.b64encode(sha256_hash.digest()).decode()
+
+if __name__ == "__main__" and len(sys.argv) > 1:
+ path = Path(sys.argv[1])
+ if path.exists():
+ print(file_hash(path))
+ else:
+ print(url_hash(sys.argv[1]))
+