tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

generate_javascript.py (1301B)


      1 from os import path, listdir
      2 from hashlib import sha512, sha256, md5
      3 from base64 import b64encode
      4 import re
      5 
      6 JS_DIR = path.normpath(path.join(__file__, "..", ".."))
      7 
      8 '''
      9 Yield each file in the javascript directory
     10 '''
     11 def js_files():
     12  for f in listdir(JS_DIR):
     13    if path.isfile(f) and f.endswith(".js"):
     14      yield f
     15 
     16 '''
     17 URL-safe base64 encode a binary digest and strip any padding.
     18 '''
     19 def format_digest(digest):
     20  return b64encode(digest)
     21 
     22 '''
     23 Generate an encoded sha512 URI.
     24 '''
     25 def sha512_uri(content):
     26  return "sha512-%s" % format_digest(sha512(content).digest())
     27 
     28 '''
     29 Generate an encoded sha256 URI.
     30 '''
     31 def sha256_uri(content):
     32  return "sha256-%s" % format_digest(sha256(content).digest())
     33 
     34 '''
     35 Generate an encoded md5 digest URI.
     36 '''
     37 def md5_uri(content):
     38  return "md5-%s" % format_digest(md5(content).digest())
     39 
     40 def main():
     41  for file in js_files():
     42    print("Generating content for %s" % file)
     43    base = path.splitext(path.basename(file))[0]
     44    var_name = re.sub(r"[^a-z0-9]", "_", base)
     45    content = "%s=true;" % var_name
     46    with open(file, "w") as f: f.write(content)
     47    print("\tSHA512 integrity: %s" % sha512_uri(content))
     48    print("\tSHA256 integrity: %s" % sha256_uri(content))
     49    print("\tMD5 integrity:    %s" % md5_uri(content))
     50 
     51 if __name__ == "__main__":
     52  main()