Research source · python

build-release.py

site/public/evidence/dehn-filled-quantum-trace/face-defect-attack/build-release.py

17 lines. Source is displayed for inspection; it is not executed by this page.

File fingerprint

SHA-256: ea2b2a27a7a5c345bda7b95948c6693dfb24d67223d8c6e73ebbb34f7d06df4a

from pathlib import Path
import hashlib,json,zipfile
root=Path(__file__).resolve().parent
name='face-defect-attack.zip'
exclude={name,'SHA256SUMS.txt','ARCHIVE-SHA256.txt','archive-validation.json'}
files=sorted(p for p in root.iterdir() if p.is_file() and p.name not in exclude)
def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest()
(root/'SHA256SUMS.txt').write_text(''.join(f'{sha(p)}  {p.name}\n' for p in files))
files.append(root/'SHA256SUMS.txt')
with zipfile.ZipFile(root/name,'w',zipfile.ZIP_DEFLATED) as z:
    for p in files:z.write(p,p.name)
with zipfile.ZipFile(root/name) as z:
    assert z.testzip() is None
    for p in files:assert z.read(p.name)==p.read_bytes()
(root/'ARCHIVE-SHA256.txt').write_text(f'{sha(root/name)}  {name}\n')
(root/'archive-validation.json').write_text(json.dumps({'status':'PASS','members':len(files),'byte_comparison':'all archived files match source','archive_sha256':sha(root/name)},indent=2)+'\n')
print(json.dumps({'status':'PASS','members':len(files)}))