generate_keys.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env python3
  2. '''
  3. generate a public/private key pair using Monocypher
  4. '''
  5. import sys
  6. import base64
  7. try:
  8. import monocypher
  9. except ImportError:
  10. Logs.error("Please install monocypher with: python3 -m pip install pymonocypher==3.1.3.2")
  11. sys.exit(1)
  12. if monocypher.__version__ != "3.1.3.2":
  13. Logs.error("must use monocypher 3.1.3.2, please run: python3 -m pip install pymonocypher==3.1.3.2")
  14. sys.exit(1)
  15. if len(sys.argv) != 2:
  16. print("Usage: generate_keys.py BASENAME")
  17. sys.exit(1)
  18. bname = sys.argv[1]
  19. def encode_key(ktype, key):
  20. return ktype + "_KEYV1:" + base64.b64encode(key).decode('utf-8')
  21. private_key = monocypher.generate_key()
  22. public_key = monocypher.compute_signing_public_key(private_key)
  23. public_fname = "%s_public_key.dat" % bname
  24. private_fname = "%s_private_key.dat" % bname
  25. open(private_fname, "w").write(encode_key("PRIVATE", private_key))
  26. print("Generated %s" % private_fname)
  27. open(public_fname, "w").write(encode_key("PUBLIC", public_key))
  28. print("Generated %s" % public_fname)