import hashlib, json from pathlib import Path root=Path(__file__).resolve().parents[1]/'edition-1' package=json.loads((root.parent/'PROVENANCE.json').read_text()) for name, expected in package['files'].items(): if hashlib.sha256((root.parent/name).read_bytes()).hexdigest()!=expected: raise SystemExit('Source hash mismatch: '+name) manifest=json.loads((root/'checksums.json').read_text()) for name, expected in manifest['files'].items(): actual=hashlib.sha256((root/name).read_bytes()).hexdigest() if actual!=expected: raise SystemExit('Hash mismatch: '+name) provenance=root.parent/'provenance-v1' record=json.loads((provenance/'index.json').read_text()) for name, expected in record['files'].items(): if hashlib.sha256((provenance/name).read_bytes()).hexdigest()!=expected: raise SystemExit('Provenance hash mismatch: '+name) print('Verified',len(package['files']),'source files,',len(manifest['files']),'edition files and historical provenance')