# (A) REQUIRED MODULES import base64 import ecdsa # (B) GENERATE KEYS # CREDITS : https://gist.github.com/cjies/cc014d55976db80f610cd94ccb2ab21e pri = ecdsa.SigningKey.generate(curve=ecdsa.NIST256p) pub = pri.get_verifying_key() private = base64.urlsafe_b64encode(pri.to_string()).decode("utf-8").strip("=") public = base64.urlsafe_b64encode(b"\x04" + pub.to_string()).decode("utf-8").strip("=") import pathlib keydir = pathlib.Path('keys') keydir.mkdir(exist_ok=True) with open(keydir / 'public_key.txt', 'w') as fp: print(public, file=fp) with open(keydir / 'private_key.txt', 'w') as fp: print(private, file=fp) with open(keydir / 'private_key.pem', 'wb') as fp: #print(pri.to_pem(), file=fp) # ecdsa is broken, to_pem returns bytes instead of a str fp.write(pri.to_pem())