summaryrefslogtreecommitdiff
path: root/tools/integrity.py
blob: e1b257247781140b34fe3d4e8061a1b78b0e3b25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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]))